【发布时间】:2011-01-25 08:28:11
【问题描述】:
我的示例输入 XML 是:
<root>
<a>
<b>item</b>
<b>item1</b>
<b>item2</b>
<b>item3</b>
<b>item4</b>
</a>
</root>
我想选择一个节点b,它的位置是一个变量的值。
如何使用变量的值来测试节点的位置?
【问题讨论】:
我的示例输入 XML 是:
<root>
<a>
<b>item</b>
<b>item1</b>
<b>item2</b>
<b>item3</b>
<b>item4</b>
</a>
</root>
我想选择一个节点b,它的位置是一个变量的值。
如何使用变量的值来测试节点的位置?
【问题讨论】:
你可以用这个:
/root/a/b[position()=$variable]
position() 基于 1
【讨论】:
以下应该有效:
/root/a/b[2]
如果没有,请尝试:
/root/a/b[position()=2]
【讨论】:
position() 指 dom 中的位置 [2] 指结果列表中的第二个结果。
for-each 循环select 语句中使用时,它们是相同的。当position() 在循环本身中使用时,它指的是结果集。 [n] 格式仅用作速记,因为它是 [ ] 块内的唯一条件,否则必须使用 position(),如 //a[(@id="xx") and (position()=3)],即“任何具有 id 的第五个链接xx"。
\\*[2] 和\\*[position()=2] 给我“item1”来反对问题XML。谢谢!