什么XQuery表达式将返回每个找到的节点的XPath?
问题描述:
我正在寻找一个XQuery的例子,它返回找到的每个节点的xpath。因此,例如,而不是获取每个找到的节点的文本()我想获得路径() - 但该函数似乎并不存在:-)什么XQuery表达式将返回每个找到的节点的XPath?
我现在看到XPath 3.0规范定义了一个会做我想做的,但路径()函数显然,这是一个新的3.0
http://www.w3.org/TR/2011/WD-xpath-functions-30-20111213/#func-path
答
正如马丁Honnen评论,XPath表达式选择特定的节点不是唯一的。例如,以下文献
<x>
<y id="1"/>
<y id="2"/>
</x>
在第二y
元件可以被选择(非排他地)由:
//y[2],
/x/y[2],
//*[@id = '2'],
/x/*[position() = last()]
如果你在得到一些 XPath表达式选择节点只是有兴趣,FunctX XQuery Function Library包含两个功能:
-
functx:path-to-node 返回一个XPath表达式,该表达式选择具有相同名称的所有节点,并选择与其计算的节点相同的祖先名称。
在我们的示例中,它将返回
x/y
两个y
元素(介意丢失的前导斜杠)。 -
functx:path-to-node-with-pos还包括每个祖先的文档中的位置,从而只选择你英寸
通过在该示例中的节点上,所述第一
y
元件将产生x/y[1]
和第二个x/y[2]
。
那么没有什么像一个节点的“xpath”,所以你首先需要解释一下你想为节点生成什么样的路径。 – 2012-02-04 16:38:40