我是XSLT的新手。我正在处理邮政编码,而且我试图将零填充到5个字符以下的任何邮政编码。否则,我希望我的代码完全按原样编写输入参数。当邮政编码以字母开头或包含字母时,我遇到了问题。我的输出是返回NaN。如何告诉代码每当邮政编码包含一个字母时,只需按原样写出邮政编码而不运行" format-number"逻辑?我知道"开始 - "和"包含"功能,但我不完全了解它们的工作原理。
<xsl:template name="MyZipCodeUnder5DigitsPadLeftZerosTemplate">
<xsl:param name="BillToZipcode" />
<xsl:choose>
<xsl:when test="string-length($BillToZipcode) < 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>
答案 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) < 10000">