xsl:if test =有没有匹配的元素?

时间:2013-10-22 20:33:33

标签: xml xslt

给出像这样的XML

<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>

我有几种情况我只想在非情况下附加一些元素,所以我想省去额外的代码。

无论如何我可以把它写成一个测试声明吗?

BTW这不起作用

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

因为只要有一件事不热,就会通过。

1 个答案:

答案 0 :(得分:3)

尝试使用XPath:not(/data/item[@temp='hot'])

这转换为where there does not exist an <item> that has a "temp" attribute with value "hot"