检查XML节点是否为空

时间:2012-12-06 17:01:58

标签: xml xslt xpath

我有一个简单的XML结构,比如

<main>
<node1><!-- comments --><!-- comments --></node1>
</main>

这可以有任意数量的子节点或值,如:

    <main>
    <node1><!-- comments --><!-- comments --><p>texttext text</p> 
more text <br/></node1>
    </main>

我想检查节点<node1>是否为空:
条件:节点仍然可以在其中包含注释,并且仍应标记为空 我做了类似的事情:

<xsl:if test="string-length(main/node1//text())&gt;0">

但它不会像多个<p>标签一样工作,那么字符串长度函数会因多个参数而中断。

非常感谢任何解决此问题的帮助。

1 个答案:

答案 0 :(得分:1)

<xsl:template match="main/node1[* | text()[normalize-space()]">匹配具有至少一个元素子节点的一个node1元素或一个内容不是空格的文本子节点。所以条件node1[* | text()[normalize-space()]可能就是你要找的东西,因为它忽略了注释节点(和处理指令节点)。