当前节点位置Xpath 1.0

时间:2014-08-29 13:45:00

标签: xml xpath xpath-1.0

如何在Xpath 1.0中获取当前节点位置?

我正在尝试/position(),但它无法正常工作。我也试过/@position()

2 个答案:

答案 0 :(得分:3)

这取决于你所说的“位置” - position()函数不一定与节点在它所属的XML树中的位置有任何关系,它只是表示当前上下文节点的位置“当前节点列表”(其含义取决于评估XPath的主机语言,在XSLT中,它表示节点列表select - 由最近的apply-templates或{编辑{1}})。

如果您有一个名为for-each的元素,并且您想知道它是否是其父级中的第一个,第二个等foo(即您需要回到它的数字N)如foo)那么你可以通过计算其前面同名的兄弟姐妹

来做到这一点
../foo[N]

但是,为此,您需要在构建XPath表达式时预先知道名称 - 纯XPath 1.0不允许您计算“与当前节点同名的前导兄弟”的数量。

某些宿主语言可能提供允许这样做的变量或函数 - 再次使用XSLT作为示例,您可以使用count(preceding-sibling::foo) + 1 函数从表达式中的任何位置引用当前上下文节点,包括内部谓词。在XPath 2.0中,你可以用

完成
current()

答案 1 :(得分:0)

//

$ index从1开始