xpath 请求选择具有 commun 属性的元素



我面临着一个无法解决的困难请求。

例如,这是我们的xml数据库:

<root>
<A>
<B attr="b">
... 
</B>
<C attr="c">
...
</C>
</A>
<A>
<B attr="b">
... 
</B>
<C attr="c">
...
</C>
</A>
<A>
<B attr="notb">
... 
</B>
<C attr="notc">
...
</C>
</A>
</root>

问题是:根的 A 元素子元素是什么,它们在它们的子元素 B 和 C 中具有公共属性 attr。

在我们的例子中,第一个元素A和第二个元素A应该在awnser中,因为它们的属性attr在B和C中相等

。提前感谢您的帮助。

试试这个:

//A[B/@attr=following-sibling::A/B/@attr and C/@attr=following-sibling::A/C/@attr]

诀窍是使用following-sibling轴,因此您可以查找下一个元素,而不是以前的元素。

有关 XPath 轴的更多信息,请参见此处。

正如安德森在评论中指出的那样,它应该是:

//A[
(
B/@attr=following-sibling::A/B/@attr and 
C/@attr=following-sibling::A/C/@attr
)
or 
(
B/@attr=preceding-sibling::A/B/@attr and 
C/@attr=preceding-sibling::A/C/@attr
)]

最新更新