基于XSL if条件显示HTML表格行时遇编译错误求助
问题分析与修复方案
你的XSLT代码出现编译错误的核心原因是在xsl:if的test属性里错误嵌套了xsl:value-of标签,XSLT的属性值中直接使用XPath表达式即可,不需要额外的xsl:value-of来取值。
错误代码的问题点
你原本的写法:
<xsl:if test= <xsl:value-of select="show_discount" /> = 'Y' >
这种写法完全不符合XSLT的语法规范,属性值必须是一个完整的字符串形式的XPath表达式,不能直接嵌入其他XSLT标签,这直接导致了编译器找不到正确的闭合括号,抛出Tag missing closing bracket '>'的错误。
修正后的代码
把test属性改成直接用XPath表达式判断show_discount的值是否等于'Y'即可:
<xsl:if test="show_discount = 'Y'"> <tr style="font-size:9px"> <td width="40mm" style="text-align: left; vertical-align: top;"> Extra Line Discount: <xsl:value-of select="Discount" /> % = <xsl:value-of select="DiscountValue" /> </td> </tr> </xsl:if>
补充说明
- XSLT在处理属性中的XPath表达式时,会自动获取当前上下文节点中
show_discount元素的文本值,不需要用xsl:value-of来提取。 - 确保你的XML数据源中确实存在
show_discount、Discount、DiscountValue这些节点,否则可能会出现显示为空的情况。
内容的提问来源于stack exchange,提问作者Karthikeyan
相关产品推荐
相关产品推荐

