xpath:检查元素是否在其他元素中

时间:2013-05-02 20:13:45

标签: xpath

我有一个很大的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级别几乎是无限的(都在bodybackm元素内)所以section位于section section section 1 {}} figurenumlist元素可以在itenmlistptitle以及更多元素中。

我想要做的是检查figure元素中的backm是否在{{1}}元素中的某个位置。这可能吗?

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>个元素。