【发布时间】:2012-04-27 15:52:35
【问题描述】:
我正在尝试用 BizTalk 中的基本字母替换特殊字符(如 ã、û、ü 等)的好方法。目前我正在使用以下 XSL 表单:
<xsl:template match="text()">
<xsl:call-template name="ReplaceChars">
<xsl:with-param name="Input" select="."></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:variable name="OddChars">ÄÖÅÜÉäöåüé</xsl:variable>
<xsl:variable name="RegChars">AOAUEaoaue</xsl:variable>
<!-- Replaces odd characters with regular ones -->
<xsl:template name="ReplaceChars">
<xsl:param name="Input" />
<xsl:value-of select="translate($Input, $OddChars, $RegChars)"/>
</xsl:template>
以上工作正常。我的问题是:有没有更好或更“聪明”的方式来做到这一点?我用谷歌找不到任何明智的东西。我正在考虑使用 .Net 内联代码来简单地在文本上强制使用另一种文化,以自动从基本字符中去除特殊符号。但我似乎也无法让它发挥作用。
基本上,我不想创建一个应用程序,您必须不断更新字符列表并冒着未定义的新特殊字符的风险,通过并导致接收应用程序出错。但是我有选择吗?
【问题讨论】:
-
您可以考虑使用
msxsl:script嵌入C# 或VB 代码,以使用stackoverflow.com/questions/3769457/… 中提供的代码实现扩展功能。但这一切都取决于您的需求或您对“特殊字符”的定义以及它们的替换是否与该答案中使用的匹配。 -
没有“更聪明的方式”,因为您没有提供“特殊字符”是什么的定义,也没有提供如何生成它的替换的定义。事实上,正如@msam 所指出的,不同的语言可能有不同的替换相同字符的规则。使此代码更灵活的一种方法是将所有“特殊字符”及其相应“替换”的集合放入单独的 XML 文件中。这样,代码将永远不必修改。