2013-10-22 64 views
1

鑑於這樣的XMLxsl:if test =沒有匹配的元素?

<data> 
    <item temp="cool"/> 
    <item temp="hot"/> 
    <item temp="hot"/> 
    <item temp="lukewarm"/> 
</data> 

我可以很容易地測試,如果什麼是熱:

<xsl:if test="/data/item/@temp = 'hot'"> 
    Something's hot in here 
</xsl:if> 

但它是一個有點令人費解對我來說,測試,如果沒有什麼是熱:

<xsl:choose> 
    <xsl:when test="/data/item/@temp = 'hot'"></xsl:when> 
    <xsl:otherwise> 
     Nothing's hot in here. 
    </xsl:otherwise> 
</xsl:choose> 

我有幾種情況,我只是想在一些情況下添加一些元素,所以我想要消除額外的代碼。

無論如何,我可以寫入一個測試語句?

順便說一句,因爲它通過,只要有一點不熱,這並不工作

<xsl:if test="/data/item/@temp != 'hot'"> 
    Nothing's hot in here 
</xsl:if> 

回答

3

試試這個作爲的XPath:not(/data/item[@temp='hot'])

這相當於where there does not exist an <item> that has a "temp" attribute with value "hot"

+0

的感謝!我沒有意識到'not()'與'!=' –

+0

不同'!='用於比較值。 'not()'在節點集上使用。 – David

相關問題