gpt4 book ai didi

xslt - xsl :variable contains nodeset. 如何输出变量的第n个节点?

转载 作者:行者123 更新时间:2023-12-03 17:20:50 25 4
gpt4 key购买 nike

我正在转换一个 XML 文档。有一个属性@prettydate这是一个类似于“Friday, May 7, 2010”的字符串。我想拆分该字符串并添加指向月份和年份的链接。我正在使用 exslt:strings模块,我可以添加任何其他必要的 EXSLT 模块。

到目前为止,这是我的代码:

<xsl:template match="//calendar">
<xsl:variable name="prettyparts">
<xsl:value-of select="str:split(@prettydate,', ')"/>
</xsl:variable>

<table class='day'>
<thead>
<caption><xsl:value-of select="$prettyparts[1]"/>,
<a>
<xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&amp;per=m</xsl:attribute>
<xsl:value-of select='$prettyparts[2]'/>
</a>
<xsl:value-of select='$prettyparts[3]'/>,
<a>
<xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&amp;per=y</xsl:attribute>
<xsl:value-of select='$prettyparts[4]'/>
</a>
</caption>
<!--etcetera-->

我已经通过 <xml:for-each/> 运行 $prettyparts 进行了验证。我得到了预期的节点集:
<token>Friday</token>
<token>May</token>
<token>7</token>
<token>2010</token>

但无论我试图以哪种方式引用特定的 <token>直接(不是在 foreach 中)我没有得到与无效类型有关的任何错误或各种错误。这是我尝试过的一些语法:
<xsl:value-of select="$prettyparts[2]"/>
<xsl:value-of select="$prettyparts/token[2]"/>
<xsl:value-of select="exsl:node-set($prettyparts/token[2])"/>
<xsl:value-of select="exsl:node-set($prettyparts/token)[2]"/>

知道表达式应该是什么吗?

ETA:感谢@DevNull 的建议,正确的表达方式是:
<xsl:value-of select="exsl:node-set($prettyparts)[position()=2]"/>

而且,我必须以这种方式设置变量:
<xsl:variable name="prettyparts" select="str:split(@prettydate,', ')" />

最佳答案

尝试使用 [position()=2]而不是 [2]在你的谓词中。

例子:

<xsl:value-of select="$prettyparts[position()=2]"/>

关于xslt - xsl :variable contains nodeset. 如何输出变量的第n个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2790941/

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