xslt - 使用xslt获取X位置的节点值

标签 xslt xpath xslt-1.0 msxsl

我如何在不使用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/

相关文章:

xml - XPath 表达式获取所有前面的兄弟 UNTIL 条件满足

c# - XPath matches() 在 C# 中使用正则表达式

xml - XSL 转换因多个模板而失败

C# Parallel.ForEach XslCompiledTransform 与 Saxon 9.7.0.6 HE

xslt - 使用 XPath 的 XSLT 查询

java - Java XSLT 转换中 newTransformer 和 newTemplates 的区别

Php cURL 网页抓取

xslt - 如何使用xpath获取最近的祖先或祖先的 child

xml - 在 XSLT 中创建 map

xslt-1.0 - 需要在 XSLT 1.0 中创建带参数的函数