【发布时间】:2014-08-03 09:34:14
【问题描述】:
我在 XSLT 文件中有两个选择语句。我想要完成的是在 select 语句的输出中添加一个空格。
例如下面的代码:
<xsl:value-of select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" />
返回这个输出:
9702195481; 31201(CCC代理)
我想在左括号前添加一个空格。所以输出将是:
9702195481; 31201(CCC 代理)
我尝试使用“翻译”功能,但它只允许两个输入。
第二条select语句:
<xsl:for-each select="/CAudioFile/Agent/GroupsList/int"><xsl:value-of select="@name"/></xsl:for-each>
返回
53115(ABCDE 城市 IIM)
我想在第一个括号之前添加一个空格。所以输出是:
53115(ABCDE 城市 IIM)
有什么建议吗?
谢谢
编辑:
当我使用以下代码时,它在 99% 的时间里都能正常工作,并且它给了我想要的输出:
<xsl:variable name="cd1" select="CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value" />
<xsl:value-of select="translate(substring-before($cd1, '('), ',', ';')"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="substring-after($cd1, '(')"/>
<xsl:text>, </xsl:text>
输出是:
9702195481; 31201(CCC 代理)
但是,有时代码会返回稍微不同的输出:
9286136438; 31172(GCG代理)、18887113613
我希望这段代码用分号替换每个逗号,这个字符串的输出如下所示:
9286136438; 31172(GCG代理); 18887113613
这样我可以将它们放在一列中。
非常感谢您的帮助。
【问题讨论】:
-
重新编辑:如果您使用已标记为已接受的答案,则不会发生这种情况 - 在拆分之前对整个值进行翻译。见:xsltransform.net/6qVRKvE/8