我试图找到一种方法来搜索节点内的字符串,但不包括那些节点的某些子元素的内容.简单明了,我想在文本的段落中搜索一个字符串,不包括作为段落的子元素的脚注.
例如,
我的文件是:
<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>
Run Code Online (Sandbox Code Playgroud)
当我在搜索"text"时,我希望Xpath / XQuery检索第一个p元素,而不是第二个p元素(其中"text"仅包含在脚注子元素中).
我试过了这个contains()函数,但它检索了两个p元素.
任何帮助将非常感激 :)
Dim*_*hev 14
我想在文本的段落中搜索字符串,不包括作为段落的子元素的脚注
一个XPath 1.0 - 唯一的解决方案:
用途:
//p//text()[not(ancestor::footnote) and contains(.,'text')]
Run Code Online (Sandbox Code Playgroud)
针对以下XML文档(从您的文档中获取但在ps中添加s 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>
Run Code Online (Sandbox Code Playgroud)
此XPath表达式精确选择所需的文本节点:
My text starts here/
Run Code Online (Sandbox Code Playgroud)