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

xpath:检查元素是否在其他元素中,xpath,Xpath,我有一个相当大的XML结构,其最简单的形式如下所示: <document> <body> <section> <p>Some text</p> </section> </body> <backm> <section> <p>Some text</p>

我有一个相当大的XML结构,其最简单的形式如下所示:

<document>
    <body>
        <section>
            <p>Some text</p>
        </section>
    </body>
    <backm>
        <section>
            <p>Some text</p>
            <figure><title>This</title></figure>
        </section>
    </backm>
</document>

一些文本

一些文本

部分
的级别几乎可以是无限的(在
主体
backm
元素中),因此我可以在
部分
中在
部分
中有一个
部分
,等等,
图形
元素可以在
numlist
中,一个
itenmlist
,a
p
,以及更多元素


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

一个文档可以有多个
元素,也可以有多个
标题
元素。如何构建查询取决于您试图区分的情况

//backm/descendant::figure/title
将返回
元素的子元素和
元素的后代的
元素

因此:

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


您也可以使用

我觉得这应该有更好的表现



列出所有
元素,其中包含一个
父元素和一个
祖先元素。

一个文档可以有多个
元素,也可以有多个
标题
元素。如何构建查询取决于您试图区分的情况

//backm/descendant::figure/title
将返回
元素的子元素和
元素的后代的
元素

因此:

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


您也可以使用

我觉得这应该有更好的表现




列出所有
元素,其父元素为
,父元素为

您尝试过什么解决方案?您想知道它是否在
backm
文本中的任何位置吗?Homer6:我尝试过/body/backm[*::this],并且在级别上有所不同,但是有很多层次可以涵盖所有可能的替代方案,所以我需要一个更通用的解决方案。harpo:我想知道figure元素中的标题是否在backm元素中的任何位置。您尝试过哪些解决方案?您想知道它是否在
backm
的文本中的任何位置?Homer6:我尝试过/body/backm[*::this]虽然在级别上有所不同,但是有很多级别可以涵盖所有可能的选项,所以我需要一个更通用的解决方案。哈波:我想告诉你figure元素中的标题是否在backm元素中的任何位置。马特:谢谢你的回复!一些澄清:只能有一个backm。我想检查figure元素中的title是否在backm元素中。@user2075124:不客气。我仍然在试图在
xpath
中对双重否定进行思考,我有点理解它们,但下一刻就失去了它!是的,双重否定很棘手。但不起作用(只检查backm中的figure中是否有标题,我想检查figure中的当前标题是否在backm中)。@user2075124:这不是你要求的。嗯,英语不是我的母语,因此我对任何混淆表示歉意。我试图写得更清楚:“我想做的是检查figure元素中的title是否在backm元素中的某个位置。这可能吗?”MattH:谢谢你的回答!一些澄清:只能有一个backm。我想检查figure元素中的title是否在backm元素中。@user2075124:不客气。我仍然在试图在
xpath
中对双重否定进行思考,我有点理解它们,但下一刻就失去了它!是的,双重否定很棘手。但不起作用(只检查backm中的figure中是否有标题,我想检查figure中的当前标题是否在backm中)。@user2075124:这不是你要求的。嗯,英语不是我的母语,因此我对任何混淆表示歉意。我试图通过写:“我想做的是检查figure元素中的title是否在backm元素中的某个位置。这可能吗?”
not(//backm[not(descendant::figure/title)])
//title[parent::figure][ancestor::backm]