Xml XSLT-删除货币格式并检查是否为数字,否则作为字符串传递
我需要从字符串中删除货币格式,但我的问题是该字段有时包含货币,有时是文本字符串。因此可能是: 20美元Xml XSLT-删除货币格式并检查是否为数字,否则作为字符串传递,xml,xslt,Xml,Xslt,我需要从字符串中删除货币格式,但我的问题是该字段有时包含货币,有时是文本字符串。因此可能是: 20美元 123000.00 123000.00美元 你好,世界 作为单个XPATH测试,如果字符串可以作为数字计算并返回布尔值: number(translate(.,translate(.,'0123456789.',''),'')) 您可以将其放入如下模板中,以返回已解析的数字或不返回任何内容: <xsl:template name="getNumber"> <xsl:
123000.00
123000.00美元
你好,世界 作为单个XPATH测试,如果字符串可以作为数字计算并返回布尔值:
number(translate(.,translate(.,'0123456789.',''),''))
您可以将其放入如下模板中,以返回已解析的数字或不返回任何内容:
<xsl:template name="getNumber">
<xsl:param name="stringVal" />
<!--remove all characters other than number and period, use the result in the outer replace to yield only numbers and period -->
<xsl:variable name="numVal" select="translate(.,translate(.,'0123456789.',''),'')" />
<xsl:choose>
<!--If what is left evaluates as a number, then it's a number! -->
<xsl:when test="number($numVal)">
<xsl:value-of select="$numVal"/>
</xsl:when>
<xsl:otherwise>
<!--Do nothing-->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
按如下方式调用模板:
<xsl:call-template name="getNumber">
<xsl:with-param name="stringVal" select="." />
</xsl:call-template>
作为单个XPATH测试,如果字符串可以计算为数字并返回布尔值:
number(translate(.,translate(.,'0123456789.',''),''))
您可以将其放入如下模板中,以返回已解析的数字或不返回任何内容:
<xsl:template name="getNumber">
<xsl:param name="stringVal" />
<!--remove all characters other than number and period, use the result in the outer replace to yield only numbers and period -->
<xsl:variable name="numVal" select="translate(.,translate(.,'0123456789.',''),'')" />
<xsl:choose>
<!--If what is left evaluates as a number, then it's a number! -->
<xsl:when test="number($numVal)">
<xsl:value-of select="$numVal"/>
</xsl:when>
<xsl:otherwise>
<!--Do nothing-->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
按如下方式调用模板:
<xsl:call-template name="getNumber">
<xsl:with-param name="stringVal" select="." />
</xsl:call-template>
我认为这是一个更清晰的答案:
<xsl:template name="getNumber">
<xsl:param name="p_stringVal" />
<xsl:value-of select="translate($p_stringVal,translate($p_stringVal,'0123456789.',''),'')" />
</xsl:template>
像这样调用模板(例如,$input_value='$555555.55'):
我认为这是一个更清晰的答案:
<xsl:template name="getNumber">
<xsl:param name="p_stringVal" />
<xsl:value-of select="translate($p_stringVal,translate($p_stringVal,'0123456789.',''),'')" />
</xsl:template>
像这样调用模板(例如,$input_value='$555555.55'):
货币符号始终是“$”还是可以是欧元、日元等?如果您可以在相应字符串前面写入所需输出,则更为详细。货币符号始终是“$”还是可以是欧元、日元等?如果您可以在相应字符串前面写入所需输出,则更为详细。。