[英]xpath request to select element that have commun attribute
我面临着一个我无法解决的困难要求。
因此,例如,这是我们的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>
问题是 :在其子B和C中共有属性attr的根的A元素子是什么?
在我们的示例中,第一个元素A和第二个元素A应该在awnser中,因为它们的属性attr在B和C中相等。最后一个元素A将不在anwser中。
预先感谢您的帮助。
尝试这个:
//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
)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.