Select xpath选择引用的xml节点

Select xpath选择引用的xml节点,select,xpath,Select,Xpath,我需要选择一个节点,其“name”属性等于当前节点的“references”属性 <node name="foo" /> <node name="bar" references="foo" /> 显然,上述方法不起作用。我想真正的问题在括号里;如何表示哪个属性来自哪个节点?不幸的是,纯XPath无法实现您的尝试。每当您启动一个新谓词(被括号包围的部分),上下文都会更改为启动谓词的节点。这意味着您不能直接比较单个谓词中两个独立元素的属性,而不将一个元素存储在变量中 你用什

我需要选择一个节点,其“name”属性等于当前节点的“references”属性

<node name="foo" />
<node name="bar" references="foo" />

显然,上述方法不起作用。我想真正的问题在括号里;如何表示哪个属性来自哪个节点?

不幸的是,纯XPath无法实现您的尝试。每当您启动一个新谓词(被括号包围的部分),上下文都会更改为启动谓词的节点。这意味着您不能直接比较单个谓词中两个独立元素的属性,而不将一个元素存储在变量中

你用什么语言?必须将第一个节点的“name”属性值存储在变量中

例如,在XSLT中:

<xsl:variable name="name" select="/node[1]/@name" />
<xsl:value-of select="/node[@references = $name]" />

我不完全确定这是否是你想要的。这将为您提供从任何节点引用到它的任何节点:

//node[@name=//node/@references]
天然溶液:

node[@name = current()/@references]

这在XSLT中起作用,因为您提到了“当前节点”,我将其翻译为“XSLT上下文节点”。不需要额外的变量。

是的,如果这是您想要的,我没有想到。这是非常低效的,因为嵌套的
“//”
运算符应该避免。这不管用吗
/node[@references=current()/@name]
(我知道这个问题有点老了,但我以前经常使用变量技巧,所以我认为这可能会有帮助。)
//node[@name=//node/@references]
node[@name = current()/@references]