我有一个很大的XML结构,最简单的形式看起来像这样:
<document>
<body>
<section>
<p>Some text</p>
</section>
</body>
<backm>
<section>
<p>Some text</p>
<figure><title>This</title></figure>
</section>
</backm>
</document>
section
级别几乎是无限的(都在body
和backm
元素内)所以section
位于section
section
section
1 {}} figure
等numlist
元素可以在itenmlist
,p
,title
以及更多元素中。
我想要做的是检查figure
元素中的backm
是否在{{1}}元素中的某个位置。这可能吗?
答案 0 :(得分:1)
文档可能包含多个<backm>
元素,其中可能包含多个<figure><title>Title</title></figure>
元素。如何构建查询取决于您尝试区分的情况。
//backm/descendant::figure/title
将返回<title>
元素的子元素<figure>
元素以及<backm>
元素的后代。
所以:
count(//backm/descendant::figure/title) > 0
如果有一个或多个此类True
元素,则会返回title
。
您也可以使用Double Negation
表达这一点not(//backm[not(descendant::figure/title)])
我认为这应该有更好的表现。
//title[parent::figure][ancestor::backm]
列出父<title>
和<figure>
祖先的所有<backm>
个元素。