1

我有一个相当大的 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),所以我可以有一个sectionin sectionin sectioninsection等,并且figure元素可以在 a numlist、 an itenmlist、 ap和更多元素内。

我想要做的是检查in 元素是否titlefigure元素内的某个位置backm。这可能吗?

4

1 回答 1

1

一个文档可以有多个<backm>元素,也可以有多个<figure><title>Title</title></figure>元素。您如何构建查询取决于您要区分的情况。

//backm/descendant::figure/title

将返回<title>元素的子<figure>元素和元素的后代<backm>元素。

所以:

count(//backm/descendant::figure/title) > 0

True如果有 1 个或多个此类title元素,将返回。


您也可以使用双重否定来表达这一点

not(//backm[not(descendant::figure/title)])

我的印象是这应该有更好的性能。


//title[parent::figure][ancestor::backm]

列出<title>具有父级<figure><backm>祖先的所有元素。

于 2013-05-02T20:52:26.917 回答