如何在Xpath 1.0中获取当前节点位置?
我正在尝试/position()
,但它无法正常工作。我也试过/@position()
。
答案 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开始