2012-12-06 150 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