加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 如何在XSL for-each测试中引用当前节点值?

发布时间:2020-12-16 01:51:44 所属栏目:百科 来源:网络整理
导读:假设我有一个这样的XML文档: books book1110/book book1111/book book1112/book book1113/book/books 我试图设置一个条件,测试当前节点的值在for-each,但我做错了: xsl:for-each select="/books/book" xsl:if test=".[='1112']" Success /xsl:if/xsl:for
假设我有一个这样的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()选择器来访问元素的文本内容:
<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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读