XPath / XQuery:在节点中查找文本,但忽略特定后代元素的内容

2024-01-11

我试图找到一种方法来搜索节点内的字符串,但排除这些节点的某些子元素的内容。简单明了,我想在文本段落中搜索字符串,不包括作为段落子元素的脚注。

例如,

我的文件是:

<document>
   <p n="1">My text starts here/</p>
   <p n="2">Then it goes on there<footnote>It's not a very long text!</footnote></p>
</document>

当我搜索“文本”时,我想要Xpath / XQuery检索第一个 p 元素,但不检索第二个元素(其中“text”仅包含在脚注子元素中)。

我已经尝试过contains()函数,但它检索两个 p 元素。

任何帮助将非常感激 :)


我想在其中搜索一个字符串 文本的段落,不包括 脚注是子元素 段落的

仅 XPath 1.0 的解决方案:

Use:

//p//text()[not(ancestor::footnote) and contains(.,'text')]

针对以下 XML 文档(从你的获得但添加ps 内footnote让这更有趣):

<document>
    <p n="1">My text starts here/</p>
    <p n="2">Then it goes on there
        <footnote>It's not a very long text!
           <p>text</p>
        </footnote>
    </p>
</document>

该 XPath 表达式准确选择所需的文本节点:

My text starts here/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XPath / XQuery:在节点中查找文本,但忽略特定后代元素的内容 的相关文章

随机推荐