XSLT - 格式号输出NaN

时间:2016-02-29 18:16:37

标签: xslt nan

我是XSLT的新手。我正在处理邮政编码,而且我试图将零填充到5个字符以下的任何邮政编码。否则,我希望我的代码完全按原样编写输入参数。当邮政编码以字母开头或包含字母时,我遇到了问题。我的输出是返回NaN。如何告诉代码每当邮政编码包含一个字母时,只需按原样写出邮政编码而不运行" format-number"逻辑?我知道"开始 - "和"包含"功能,但我不完全了解它们的工作原理。

<xsl:template name="MyZipCodeUnder5DigitsPadLeftZerosTemplate">
<xsl:param name="BillToZipcode" />

<xsl:choose>

 <xsl:when test="string-length($BillToZipcode) &lt; 5">
    <xsl:element name="PostalCode">
       <xsl:value-of select="format-number($BillToZipcode, '00000')" />
    </xsl:element>
  </xsl:when>

<xsl:otherwise>
   <xsl:element name="PostalCode">
    <xsl:value-of select="$BillToZipcode"/>
   </xsl:element>
</xsl:otherwise>

</xsl:choose>
</xsl:template>

1 个答案:

答案 0 :(得分:0)

怎么样:

<xsl:template name="MyZipCodeUnder5DigitsPadLeftZerosTemplate">
    <xsl:param name="BillToZipcode" />
    <PostalCode>
        <xsl:choose>
            <xsl:when test="number($BillToZipcode)">
                <xsl:value-of select="format-number($BillToZipcode, '00000')" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$BillToZipcode"/>
            </xsl:otherwise>
        </xsl:choose>
    </PostalCode>   
</xsl:template>

这假设没有(数字)Zipcode可以有超过5位数。如果不是这样,您可以使用:

<xsl:when test="number($BillToZipcode) &lt; 10000">