检查属性是否等于value,不同于value或undefined

时间:2015-02-25 10:20:04

标签: xslt xslt-1.0

我有以下xsl:select标签基于某些条件

<MaturityDate>
 <xsl:choose>
    <xsl:when test="../../../../@name !='WQA'">
        <xsl:value-of select="Apsml:unadjustedDate"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="Apsml:adjustedTerminationDate"/>
    </xsl:otherwise>
 </xsl:choose>
</MaturityDate>

现在如上所示,如果名称等于WQA然后做某事或者如果产品不是WQA那么它会做一些事情。现在我想添加第三个条件,即如果上述两个条件都不为真,那么它应该显示为空

<xsl:value-of select="'null'" />

请告知如何添加第三个条件,如果两个条件都不为真,那么它最后应显示为空

1 个答案:

答案 0 :(得分:2)

属性name的值可以等于'WQA'或与'WQA'不同; (唯一的)另一种选择是该属性不存在。

所以,你可以使用:

<xsl:choose>
    <xsl:when test="../../../../@name ='WQA'">
        <xsl:value-of select="Apsml:adjustedTerminationDate" /> 
    </xsl:when>
    <xsl:when test="../../../../@name !='WQA'">
        <xsl:value-of select="Apsml:unadjustedDate" /> 
    </xsl:when>
    <xsl:otherwise>
        <!-- @name does not exist -->
        <xsl:value-of select="'null'" />
    </xsl:otherwise>
</xsl:choose>

如果要在属性不存在时明确检查案例,可以使用测试not(../../../../@name)