XSLT if条件报错:缺少必填属性'test',求解决方案
搞定XSL
<xsl:if>的test属性错误 嘿,这个Required attribute 'test' is missing的报错有点迷惑人——你明明写了test属性,问题出在你把Java语法用到XPath表达式里了,XSLT解析器识别不了这些写法,才会误判test属性有问题。咱们一步步改:
原代码的核心问题
你的test条件里混用了Java语法,但XPath有自己的规则:
- 比较相等用
=而非Java里的== - 没有
null的写法,空字符串用'',判断节点不存在用not(discount) - 不用
equals()方法,直接用=做字符串比较 - 逻辑非用
not(...)包裹条件,不是!
修正后的可用代码
<xsl:if test="(price = 'Y') and not(discount = '' or discount = '0')"> <div style="font-size: 9px; vertical-align: top; width: 25%;"> Discount: <xsl:value-of select="Discount" /> % = <xsl:value-of select="lineDiscount" /> EUR </div> </xsl:if>
额外注意点
XPath是大小写敏感的!你代码里判断的是小写的price,但取值用的是大写的Discount,一定要和XML源文档里的节点名称完全一致,不然条件会一直不生效哦。
内容的提问来源于stack exchange,提问作者Karthikeyan
相关产品推荐
相关产品推荐

