在以下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个元素:
这应该意味着我只会得到其串联内容为hi标签且其rend属性包含“ bold”的段落。
我尝试了多种方法。最接近的似乎是:
//p[hi[contains(@rend, "bold")] and not(text()) and not(*[not(self::hi[contains(@rend, "bold")])])]
但是,not(text())方面无法正常工作。在P标签本身中包含文本的行(上面的条件2)不满足。
我尝试了其他条件:
和其他几个。
任何帮助将非常感激。我正在使用XSLT 1.0。
hi元素之间的空格是有效的文本节点。使用normalize-space()对其进行过滤。
p[count(hi) = count(hi[contains(@rend, 'bold')]) and not(text()[normalize-space()!=''])]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句