XPath:获取具有匹配属性值的元素

XPath:获取具有匹配属性值的元素,xpath,Xpath,我试图从@id属性与上下文节点的@idref匹配的元素中获取内容。例如,给定以下xml(只是一个虚构的示例) 都没有运气。您能在xml上尝试这个表达式吗 //chapter[@id=//toc/entry/@idref]/string-join((title,@id),' ') 输出: Chapter 1 ch1 Chapter 2 ch2 您是否正在寻找任何章节,其@id等于任何条目的@idref,或者章节和条目之间必须存在某种关系?不需要任何关系。只需查找具有与条目的@idref相等的@

我试图从@id属性与上下文节点的@idref匹配的元素中获取内容。例如,给定以下xml(只是一个虚构的示例)


都没有运气。

您能在xml上尝试这个表达式吗

//chapter[@id=//toc/entry/@idref]/string-join((title,@id),' ')
输出:

Chapter 1 ch1
Chapter 2 ch2

您是否正在寻找任何
章节
,其
@id
等于任何
条目
@idref
,或者
章节
条目
之间必须存在某种关系?不需要任何关系。只需查找具有与条目的
@idref
相等的
@id
的任何章节。我知道只有一章带有匹配的
@id
。实际上,在xml中有两个匹配的章节-1和2。不确定如何有两个匹配的章节?每个章节都有一个唯一的id,因此应该与第一章和第二章匹配(基于章节
@id
值。没错-这就是我所说的两个章节,每个章节都有一个与一个条目匹配的条目。这就是你要寻找的吗?这没有用。这只会抓取第一个条目,它有一个与章节
@id
匹配的
@idref'。例如,
`和
都会输出章节标题1@user3198443-有趣;根据问题中的xml,我得到了刚才粘贴在答案中的输出。请参阅。此xpath返回两个元素,但它所做的只是检查具有匹配项的
@id/@idref
的任何章节。它不使用特定的
@idref
来匹配特定章节
 @id
。假设上下文节点是第二个
,我们正试图从该条目中获取匹配的章节标题。xpath语句肯定必须包含当前的
@idref
?类似于
字符串(//chapter[@id=./@idref]/title)
,它不起作用,但表示我们正在查找一个章节,该章节的
@id
与当前
@idref
匹配(在本例中为ch2)@user3198443-很抱歉,但我仍然不明白。如果你能找到另一个xml片段,其中这个xpath表达式提供了错误的输出,它可能会澄清一些事情。如果你改变entry元素的顺序,那么你仍然会得到相同的结果,第一章和第二章。这是因为它得到了任何结果具有与
@idref
匹配的
@id
的章节。它实际上不是从条目中检查匹配的章节。
//chapter[@id=//toc/entry/@idref]/string-join((title,@id),' ')
Chapter 1 ch1
Chapter 2 ch2