gpt4 book ai didi

XSLT,找出最后一个子节点是否是特定元素

转载 作者:行者123 更新时间:2023-12-03 15:23:56 24 4
gpt4 key购买 nike

请看以下两个示例:

<foo>some text <bar/> and maybe some more</foo>


<foo>some text <bar/> and a last <bar/></foo>
bar元素内的混合文本节点和 foo元素。现在我在 foo中,想知道最后一个 child 是否是 bar。第一个示例应该证明是错误的,因为 bar后面有文本,但是第二个示例应该是true。

如何使用XSLT完成此操作?

最佳答案

只需选择<foo>元素的最后一个节点,然后使用self轴即可解析节点类型。

/foo/node()[position()=last()]/self::bar

如果最后一个节点不是元素,则此XPath表达式返回一个空集(等于boolean false)。如果要专门获取值 truefalse,请将此表达式包装在XPath函数 boolean()中。使用 self::*而不是 self::bar将任何元素匹配为最后一个节点。

输入XML文档:
<root>
<foo>some text <bar/> and maybe some more</foo>
<foo>some text <bar/> and a last <bar/></foo>
</root>

XSLT文档示例:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>

<xsl:template match="foo">
<xsl:choose>
<xsl:when test="node()[position()=last()]/self::bar">
<xsl:text>bar element at the end&#10;</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>text at the end&#10;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

样式表的输出:
text at the end
bar element at the end

关于XSLT,找出最后一个子节点是否是特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com