【发布时间】:2020-03-24 06:10:31
【问题描述】:
让我们考虑以下 xml:
<a>
<b id="1"/>
<b id="2"/>
</a>
我了解我可以使用单个值
for $a in //b[@id=1] return $a
而不是 xpath 3.0 表达式
let $a := //b[@id=1] return $a
但是如何使用 for 将序列放入变量中?
显然
for $a in //b return $a[2]
不会返回任何东西,所以它不是一个很好的替代品
let $a := //b return $a[2]
我尝试构造一个序列,其中 //b 是第一个元素, () 是第二个元素,并使用它,但我不知道该怎么做。
【问题讨论】:
-
嗯,在 XSLT 中,您始终可以在 XSLT 级别使用
xsl:variable,而不是尝试在 XPath 级别使用let。在您的简单示例中,我看不出您为什么需要或认为您根本需要for表达式,(//b)[2]不是您想要的吗? -
当然,但这是一个纯 xpath 环境。我最终实现了一个具有相同功能的函数。幸运的是我已经实现了一个评估函数。
-
如果是关于纯 XPath 的问题,为什么要标记为 xslt-2.0?
-
这显然是个错误。
标签: xpath-2.0