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

时间:2014-01-08 13:45:14

标签: xpath

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

<entry id="1">
    <para>first paragraph</para>
    <para>second paragraph</para>
</entry>
<entry id="2">
    <para></para>
</entry>

如果我的XSL发现某个条目的第一个元素的文本节点为空(示例中的条目id =“2”),则需要执行某些操作。我试过这个:

<xsl:when test="(entry/para[1]/text()='')">

但这似乎不起作用。

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

<xsl:when test="entry[1]/para[@stylename = 'Table Heading']">

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

1 个答案:

答案 0 :(得分:7)

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

所以,我建议像

这样的东西
entry/para[1][.='']

entry/para[1][not(text())]