我可以在XSLT中对字符串进行条件格式化吗?
输入字符串是此格式的电话号码:
1234567890
我想要的是;如果第3个数字(不计算+)是4或9,则该字符串应显示为
+12 435 67 890或+12 935 67 890
但如果是其他任何数字:
+12 34 56 78 90
对于第3位数字(4或8除外)的所有数字
<td>
<xsl:value-of select="substring($number,1,3)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring($number,4,2)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring($number,6,2)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring($number,8,2)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring($number,10)"/>
</td>
如果某人有更优雅的方式来格式化这个字符串,请告诉我们。
答案 0 :(得分:1)
使用以下输入:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<phone>+1234567890</phone>
<phone>+1243567890</phone>
<phone>+1293567890</phone>
</root>
和这个样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="root/phone">
<formatted_phone>
<xsl:choose>
<xsl:when test="substring(., 4, 1) = '4' or substring(., 4, 1) = '9'">
<xsl:value-of select="concat(substring(., 1, 3), ' ', substring(., 4, 3), ' ', substring(., 8, 2), ' ', substring(., 9))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(substring(., 1, 3), ' ', substring(., 4, 2), ' ', substring(., 6, 2), ' ', substring(., 8, 2), ' ', substring(., 10))"/>
</xsl:otherwise>
</xsl:choose>
</formatted_phone>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
你可以有这个输出
<?xml version="1.0" encoding="utf-8"?>
<formatted_phone>+12 34 56 78 90</formatted_phone>
<formatted_phone>+12 435 78 890</formatted_phone>
<formatted_phone>+12 935 78 890</formatted_phone>