我如何在不使用foreach的情况下使用xslt(X位置的节点值)
<items>
<item1>x</item1>
<item2>x</item2>
<item3>x</item3>
</items>
这是从编程意义上解释的:
<xsl:value-of select="Items/Item[2]"/>
==================================================
只是为了扩展一下问题,在以下xml中:
<items>
<about>xyz</about>
<item1>
<title>t1</title>
<body>b1</body>
</item1>
<item2>
<title>t2</title>
<body>b2</body>
</item2>
<item3>
<title>3</title>
<body>3</body>
</item3>
</items>
如何选择秒钟的项目标题。
最佳答案
回答扩展问题。如果选择所需元素的节点集,则可以使用位置值:
<xsl:value-of select="(items//title)[2]"/>
或者:
<xsl:value-of select="(items/*/title)[2]"/>
请注意在按位置选择之前返回所需节点集所需的括号的用法。
您可以使用所谓的“编程意义上的”。但是由于子元素的名称未知,您需要
*
:<xsl:value-of select="items/*[2]"/>
请注意,XSLT 中的节点集不是从零开始的。在上面的方法中,您选择的是第二个项,而不是的第三项。
当您想将当前位置与一个数字进行比较时,确实需要
position()
:<xsl:value-of select="items/*[position()>2]"/>
选择位置大于2的所有项目。
position()
不可或缺的其他情况是,当位置值是类型的变量时string <xsl:variable name="pos" select="'2'"/>
<xsl:value-of select="items/*[position()=$pos]"/>
关于xslt - 使用xslt获取X位置的节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455583/