我有一个简单的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())>0">
但它不会像多个<p>
标签一样工作,那么字符串长度函数会因多个参数而中断。
非常感谢任何解决此问题的帮助。
答案 0 :(得分:1)
<xsl:template match="main/node1[* | text()[normalize-space()]">
匹配具有至少一个元素子节点的一个node1
元素或一个内容不是空格的文本子节点。所以条件node1[* | text()[normalize-space()]
可能就是你要找的东西,因为它忽略了注释节点(和处理指令节点)。