XSL如果测试在有值时显示内容

时间:2011-11-04 10:37:23

标签: xml xslt xpath if-statement umbraco

我有if test我希望在属性有值时用逗号显示'year'属性的内容。这不行,所以我会感谢你的建议。

<xsl:if test="year != null">
     <xsl:value-of select="year"/>,
</xsl:if> 

3 个答案:

答案 0 :(得分:9)

您可以使用以下表达式检查year元素的存在:

<xsl:if test="year">

如果要检查year元素是否为空:

<xsl:if test="year != ''">

答案 1 :(得分:0)

<xsl:if test="year != null">    
     <xsl:value-of select="year"/>,    
</xsl:if>

如果当前节点至少有一个true()子节点,并且当前节点的一个year子节点的字符串值不相等,则为null

很可能XML文档中没有任何null元素没有显示...

使用

<xsl:if test="year"> 
     <xsl:value-of select="concat(year, ',')"/>
</xsl:if>  

答案 2 :(得分:0)

我更喜欢使用not函数

not()函数—返回其参数的取反。如果该参数还不是布尔值,则使用boolean()函数条目中描述的规则将其转换为布尔值。

示例:

为了演示not()函数,我们将使用与boolean()函数相同的样式表和XML文档。

<xsl:choose>
    <xsl:when test="not(year='')">
        <xsl:value-of select="year"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>The element year is NULL</xsl:text>
    <xsl:otherwise>
</xsl:choose>

与if语句相同:

<xsl:if test="not(year='')">
    <xsl:value-of select="year"/>
</xsl:if>
<xsl:if test="year=''">
    <xsl:text>The element year is NULL</xsl:text>
</xsl:if>