假设我有一个这样的XML文档:
<books> <book>1110</book> <book>1111</book> <book>1112</book> <book>1113</book> </books>
我试图设置一个条件,测试当前节点的值在for-each,但我做错了:
<xsl:for-each select="/books/book"> <xsl:if test=".[='1112']"> Success </xsl:if> </xsl:for-each>
我做错了什么?
使用。可以,事实上,引用当前(或“上下文”)节点,但不是你在这里使用它的方式。在XPath中,[foo]不是有效的语法 – 您需要使用self :: node()[foo]。另外,=操作符需要匹配的东西,在这种情况下是text()选择器来访问元素的文本内容:
原文链接:https://www.f2er.com/xml/293516.html<xsl:for-each select="/books/book"> <xsl:if test="self::node()[text()='1112']"> Success </xsl:if> </xsl:for-each>
然而,如其他答案所述,除非你的for-each也执行其他操作,你不需要迭代,可以使用只是如果完成相同的任务:
<xsl:if test="/books/book[. = 1112]"> Success </xsl:if>