排序exsl:node-set。按位置返回节点
我有一组节点
<menuList>
<mode name="aasdf"/>
<mode name="vfssdd"/>
<mode name="aswer"/>
<mode name="ddffe"/>
<mode name="ffrthjhj"/>
<mode name="dfdf"/>
<mode name="vbdg"/>
<mode name="wewer"/>
<mode name="mkiiu"/>
<mode name="yhtyh"/>
and so on...
</menuList>
我现在就这样排序了
<xsl:variable name="rtf">
<xsl:for-each select="//menuList/mode">
<xsl:sort data-type="text" order="ascending" select="@name"/>
<xsl:value-of select="@name"/>
</xsl:for-each>
</xsl:variable>
现在我需要在排序数组中获取一个任意元素到它的位置数。我正在使用代码:
<xsl:value-of select="exsl:node-set($rtf)[position() = 3]"/>
我收到了回复错误。我该怎么办?
没有找到相关结果
已邀请:
2 个回复
苦诫
当存在多个相邻文本节点时,它们将合并为一个。结果是RTF只有一个(长)单文本节点,并且没有第三个节点。
.
这要求包含在
中的第三个节点,但是
是由
扩展函数产生的临时树的文档节点 - 这只是一个节点。因此,上面的XPath表达式根本不会选择任何内容。 一个正确的解决方案如下:
距相镭
。这不会复制节点,而是复制其字符串值(节点的
属性值)。这意味着您生成一个包含连接字符串的变量,但不包含任何结构。 尝试:
现在,您的变量包含一个结果树片段,该片段由您首选顺序中的
节点组成,这意味着:
会工作。还要注意
和
是一回事。