如何测试文本节点是否为空?

Hob*_*bes 4 xpath

我有一个具有这种结构的XML文件:

<entry id="1">
    <para>first paragraph</para>
    <para>second paragraph</para>
</entry>
<entry id="2">
    <para></para>
</entry>
Run Code Online (Sandbox Code Playgroud)

如果我的XSL发现一个条目的第一个元素的文本节点是空的(例子中的条目id ="2"),我需要做一些事情.我试过这个:

<xsl:when test="(entry/para[1]/text()='')">
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.

用于读取元素属性的类似代码片段可以正常工作:

<xsl:when test="entry[1]/para[@stylename = 'Table Heading']">
Run Code Online (Sandbox Code Playgroud)

所以我对text()=''选择做错了.搜索建议我应该使用[not(text())]但我无法弄清楚如何在我的代码中集成它.

Tho*_*s W 8

text()=''需要一个文本节点,但在这种情况下<para></para>,没有要匹配的文本节点.

所以,我建议像

entry/para[1][.='']
Run Code Online (Sandbox Code Playgroud)

要么

entry/para[1][not(text())]
Run Code Online (Sandbox Code Playgroud)

  • 是的,除非测试必须为真,如果"它找到一个条目[那]有一个**第一个**元素的文本节点......".顺便说一句,恭喜有1000π代表. (2认同)