替换空格和破折号并格式化Xslt

时间:2017-06-27 21:44:48

标签: xml xslt xslt-1.0

几天前我在XSLT中提出了替换空格的类似问题,但现在我在同一个代码中遇到了另一个问题。

先前被问到: 所以我必须从我们的应用程序导出数据,现在为了这样做我编写了XML代码,并且导出某些字段需要格式化为我使用XSLT。现在这里的问题是在我的SQL SERVER数据库中我有一个联系号码字段,其中一些号码的格式为1234567890,而有些则有空格123 456 7890.所以现在当我使用下面提到的xslt代码时,一切正常预期如果该字段有空格但在没有空格时会混乱。我知道我可以直接在数据库中进行更改,但这不是永久的解决方案。如果有人能提供一些指导,那就太好了。解决方案如下:

<xsl:variable name="phone" select="translate(D_PHONE, ' ', '')" />  
<xsl:value-of select="concat('(', substring($phone, 1, 3), ') ', substring($phone, 4, 3), '-', substring($phone, 7, 4))" />

但是现在问题是有些字段会以123-456-7890的形式返回,而不是空格而且这个解决方案确实失败了。是否有替换标签,我可以基本上提到我想在字段中替换的所有字符,然后像以前一样格式化它们?

提前谢谢你们。

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以将所有不需要的字符添加到translate()函数中,将其转换为空字符串(IOW,删除它们)。

例如,这会删除空格和连字符:

<xsl:variable name="phone" select="translate(D_PHONE, ' -', '')" /> 

或者,您可以定义变量,以便仅保留数字:

<xsl:variable name="phone" select="translate(D_PHONE, translate(D_PHONE, '0123456789', ''), '')"/>