将IF子句添加到XSL调用模板

时间:2015-05-07 12:16:30

标签: xml xslt xsd

我对XSL很新,我正在尝试编辑别人的代码。

xsl调用模板" formatAustralianDate"并返回一个数字。但是,如果@created为null,则返回NaN天数

 <xsl:call-template name="formatAustralianDate">
          <xsl:with-param name="dateValue" select="@Created"/>
 </xsl:call-template> day(s)

有没有办法可以测试@Created是否为空(或空白),如果是,那么只返回0天?甚至更好,空白

2 个答案:

答案 0 :(得分:1)

您可以在此使用xsl:choose

<xsl:choose>
   <xsl:when test="normalize-space(@created)">
      <xsl:call-template name="formatAustralianDate">
         <xsl:with-param name="dateValue" select="@created"/>
      </xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
       <xsl:text>0</xsl:text>
   </xsl:otherwise>
</xsl:choose>
<xsl:text> day(s)</xsl:text>

如果created不存在,或者是一个空字符串(或者是一个只有空格的字符串,那么规范化空间然后转换为空字符串),那么测试将返回false,并且{而是评估{1}}。

答案 1 :(得分:0)

在XSLT上有点生疏,但可能还有以下几点:

<xsl:if test="floor(@Created)>0">
 <!-- code here if test passes -->
</xsl:if>