我想在文档中的任何位置选择与特定模式匹配的最后一个节点。
我正在尝试像
这样的东西<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:copy-of select="//node_name[last()]"/>
</xsl:template>
</xsl:stylesheet>
但是,在以下文档中使用Saxon 9.4运行时: -
<a>
<node_name attr="1"/>
<b>
<c>
</c>
<node_name attr="2"/>
</b>
</a>
我在复制语句所在的位置获得此输出: -
<node_name attr="1"/><node_name attr="2"/>
而我实际上想要输出: -
<node_name attr="2"/>
我错过了什么?
此外,我的文档的性质是这样的,我事先并不知道这个节点的确切路径是什么(因为它由一堆递归元素组成)。
答案 0 :(得分:2)
您不是在寻找最后一个node_name
,而是在寻找所有node_names中的最后一个。因此,以下XPath表达式应该起作用:
(//node_name)[last()]