gpt4 book ai didi

xslt - Sorted exsl :node-set. 按位置返回节点

转载 作者:行者123 更新时间:2023-12-03 16:01:11 24 4
gpt4 key购买 nike

我有一组节点

<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]"/>

并且我收到响应错误。我应该怎么做?

最佳答案

提供的代码中至少有两个错误:

  1. <xsl:value-of select="@name"/>

当存在多个相邻文本节点时,它们会合并为一个。结果是 RTF 只有一个(长)单个文本节点,并且没有第三个节点。

2 . <xsl:value-of select="exsl:node-set($rtf)[position() = 3]"/>

这要求 exsl:node-set($rtf) 中包含的第三个节点,但是exsl:node-set($rtf)exsl:node-set() 生成的临时树的文档节点扩展功能——这只是一个节点。因此上面的 XPath 表达式根本不会选择任何内容。

一个正确的解决方案如下:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>

<xsl:template match="/">
<xsl:variable name="rtf">
<xsl:for-each select="//menuList/mode">
<xsl:sort data-type="text" order="ascending" select="@name"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="msxsl:node-set($rtf)/*[position()=3]/@name"/>
</xsl:template>
</xsl:stylesheet>

关于xslt - Sorted exsl :node-set. 按位置返回节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470907/

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