如何在Xpath 1.0中获取当前节点位置?
我正在尝试,/position()
但是没有用。我也试过了/@position()
。
它取决于“位置”的含义-position()
函数不一定与其所属的XML树中的节点位置有任何关系,它只是表示当前上下文节点在“当前节点列表”中的位置(以及含义取决于评估XPath的宿主语言,例如,在XSLT中,它表示节点列表-select
以最近的apply-templates
或表示for-each
。
如果您有一个名为的元素,foo
并且想知道它是否是foo
其父元素中的第一个,第二个等(即数字N,则需要返回为N ../foo[N]
),那么您可以通过计算其前面的同级兄弟来做到这一点同名
count(preceding-sibling::foo) + 1
但是,为此,您需要在构建XPath表达式时预先知道名称-纯XPath 1.0不允许您计算“与当前节点同名的同级兄弟”的数量。
某些宿主语言可能提供允许使用此变量或函数的变量-再次使用XSLT作为示例,您可以在其中使用该current()
函数从表达式中的任何位置(包括内部谓词)引用当前上下文节点。在XPath 2.0中,您可以使用
for $cur in . return (count(preceding-sibling::*[name() = name($cur)]) + 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句