2012-12-06 149 views
0

我有一个像检查XML节点是空

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

一个简单的XML结构,这可以有任意数量的子节点或值,如:

<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>标记,则字符串长度函数将因多个参数而中断。

任何帮助解决这个问题真的很感激。

+0

更准确地描述你在做什么。 Best是一个XSLT,XML源和期望的结果。 –

+0

@ThomasW:我想检查一下是否为空。条件:它仍然可以在其中发表评论。如果除了评论之外还有其他内容,那么条件就会失败。 – Vinit

回答

1

<xsl:template match="main/node1[* | text()[normalize-space()]">与具有至少一个元素子节点或具有非空白内容的一个文本子节点的那些node1元素匹配。所以条件node1[* | text()[normalize-space()]可能是你正在寻找的,因为它忽略了评论节点(和处理指令节点)。

+0

工作就像一个魅力....感谢awesoming :) – Vinit