openTBS docx模板使用ifempty属性实现空变量取值替换的问题
openTBS docx模板双变量空值取值方案
问题原因分析
你两次写法未生效的核心是TBS默认不会主动解析ifempty参数值的变量:
- 第一次写法
[var.first;ifempty=var.second]:ifempty默认将参数值处理为字面量字符串,所以直接输出var.second而不会解析对应变量值 - 第二次写法
[var.first;ifempty=[var.second]]:TBS会优先解析最内层的字段标签,替换后外层标签结构被破坏,无法完成最终的条件判断逻辑
正确写法
直接在ifempty的参数值前加val:前缀,告知TBS该参数值是需要解析的变量,而非字面量:
[var.first;ifempty=val:var.second]
该写法在你给出的测试场景下,当var.first为空时,会自动输出var.second的有效值library,完全符合需求。
备选兼容写法(针对旧版本TBS)
如果上述写法不生效,可以改用TBS原生条件判断语法实现相同效果:
[if [var.first]!= ''; then [var.first]; else [var.second]]
内容的提问来源于stack exchange,提问作者Sandrine Berthier
相关产品推荐
相关产品推荐

