在XSLT1.0中,如果值在字符串值中包含数字
我有一个复杂的地址字符串,或者说是不同的可能格式,我需要将其拆分为道路名称、门牌号、楼层、位置左、右、正中门或门/房间号 除了最后一位之外,我还成功地完成了所有工作,其中伪包含:在XSLT1.0中,如果值在字符串值中包含数字,xslt,xslt-1.0,Xslt,Xslt 1.0,我有一个复杂的地址字符串,或者说是不同的可能格式,我需要将其拆分为道路名称、门牌号、楼层、位置左、右、正中门或门/房间号 除了最后一位之外,我还成功地完成了所有工作,其中伪包含: <xsl:choose> <xsl:when test="contains(@addressFarLeft, ANY_NUMERIC_VALUE_ANYWHERE)"> <door>NUMERICVALUE</
<xsl:choose>
<xsl:when test="contains(@addressFarLeft, ANY_NUMERIC_VALUE_ANYWHERE)">
<door>NUMERICVALUE</door>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
我很确定我不能仅仅使用某种形式的包含,但是接下来呢
值是动态设置的,但以下是一些可能的值:
<xsl:variable name="addressFarLeftValue">.th.</xsl:variable> =>
no numeric value, do nothing
<xsl:variable name="addressFarLeftValue">.1.</xsl:variable> =>
produce: <door>1</door>
<xsl:variable name="addressFarLeftValue">, . tv </xsl:variable> =>
no numeric value, do nothing
<xsl:variable name="addressFarLeftValue">,th, 4.</xsl:variable> =>
produce: <door>1</door>
有什么建议吗?如果要测试字符串是否包含数值,一种方法是使用“translate”函数删除字符串中的所有数字,如果结果字符串与初始字符串不匹配,则您知道它一定包含数字。如果字符串没有改变,那么它就没有改变
<xsl:choose>
<xsl:when test="translate($addressFarLeft, '1234567890', '') != $addressFarLeft">
<door>1</door>
</xsl:when>
<xsl:otherwise/>
所以,.1。输出1,但第。不输出任何内容
如果您想提取实际的数字,那么假设字符串中只出现一个数字,您可以这样做
<xsl:value-of
select="translate(
@addressFarLeft,
translate(@addressFarLeft, '1234567890', ''),
'')" />
那么,第42条。产出42
如果存在多个数字,例如th、42、ab、1,此方法将失败。如果要测试字符串是否包含数值,一种方法是使用“translate”函数从字符串中删除所有数字,如果结果字符串与初始字符串不匹配,你知道它一定包含一个数字。如果字符串没有改变,那么它就没有改变
<xsl:choose>
<xsl:when test="translate($addressFarLeft, '1234567890', '') != $addressFarLeft">
<door>1</door>
</xsl:when>
<xsl:otherwise/>
所以,.1。输出1,但第。不输出任何内容
如果您想提取实际的数字,那么假设字符串中只出现一个数字,您可以这样做
<xsl:value-of
select="translate(
@addressFarLeft,
translate(@addressFarLeft, '1234567890', ''),
'')" />
那么,第42条。产出42
如果存在多个数字,例如th、42、ab、1,则此方法将失败。可以使用双平移方法获得所需的数值,Michael Kay首先显示:
可以使用双平移方法获得所需的数值,Michael Kay首先展示了该方法:
XPath是您需要检查的版本支持,而不是XSLT。您的意思是XPath是问题的标记?XPath是您需要检查的版本支持,而不是XSLT。您的意思是XPath是问题的标记?对于部分解决方案和问题的主题,这将起作用,或者说确实起作用。仍然需要得到实际的数值这当然是可能的,但是如果你想让人们给出答案,你实际上必须先问这个问题;真的。。。。。在上一个例子中,我犯了一个愚蠢的错误,1应该是4,没有人知道。。。。。。但这一点我可以自己管理。。。。谢谢你的解决方案!!:-对于部分解决方案和问题的主题,这将起作用,或者说确实起作用。仍然需要得到实际的数值这当然是可能的,但是如果你想让人们给出答案,你实际上必须先问这个问题;真的。。。。。在上一个例子中,我犯了一个愚蠢的错误,1应该是4,没有人知道。。。。。。但这一点我可以自己管理。。。。谢谢你的解决方案!!:-