gpt4 book ai didi

xml - XPath:返回具有特定子节点但没有自己文本的节点

转载 作者:行者123 更新时间:2023-12-03 17:14:58 24 4
gpt4 key购买 nike

在以下XML中:

<document>
<p rend="Default Style"><hi rend="bold italic">This one</hi></p>
<p rend="Default Style"><hi rend="bold italic">Not this one</hi> please</p>
<p rend="Default Style"><hi rend="italic">Not this one either</hi></p>
<p rend="Default Style"><hi rend="bold">Not this one either</hi><hi rend="italic">Not this one either because it has others</hi></p>
<p rend="Default Style"><hi rend="bold italic">This one</hi> <hi rend="bold italic">because it is all bold</hi></p>
</document>


我想选择包含以下内容的P个元素:


嗨,其rend属性包含单词“ bold”的子元素
没有自己的文字
没有其他的


这应该意味着我只会得到其串联内容为hi标签且其rend属性包含“ bold”的段落。

我尝试了多种方法。最接近的似乎是:

//p[hi[contains(@rend, "bold")] and not(text()) and not(*[not(self::hi[contains(@rend, "bold")])])]


但是,not(text())方面无法正常工作。在P标签本身中包含文本的行(上面的条件2)不满足。

我尝试了其他条件:


不(* [祖先::文本()])
不是(parent :: text())


和其他几个。

任何帮助将非常感激。我正在使用XSLT 1.0。

最佳答案

hi元素之间的空格是有效的文本节点。使用normalize-space()对其进行过滤。

p[count(hi) = count(hi[contains(@rend, 'bold')]) and not(text()[normalize-space()!=''])]

关于xml - XPath:返回具有特定子节点但没有自己文本的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21379172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com