我正在尝试用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内联代码简单地强制文本上的另一种文化,自动从基本字符中删除特殊符号。但我似乎也无法做到这一点。
基本上,我不想创建一个应用程序,你必须不断更新角色列表并冒险一个未定义的新特殊字符,通过接收应用程序并导致错误。但我有选择吗?
答案 0 :(得分:2)
另一种选择是使用正则表达式来替换你想要的字符。
更重要的是,您确实意识到以这种方式映射字符可能会导致一些混淆吗?例如,日耳曼语言将ä映射到ae,ü到ue和ö到oe并映射到a,u和o将改变某些单词的含义。
答案 1 :(得分:0)
我的问题是:有更好或更“聪明”的方法吗?
...
基本上,我不想创建你需要的应用程序 不断更新角色列表并冒一个新的特殊角色 没有定义,通过并导致错误 接收应用。但我有选择吗?
没有“更聪明的方法”,因为您没有提供“特殊字符”的定义,也没有提供如何生成替换的定义。
事实上,正如@msam所指出的,不同的语言可能有不同的规则来替换相同的字符。
使此代码更灵活的一种方法是将所有“特殊字符”的集合及其相应的“替换”放入单独的XML文件中。这样就不必修改代码了。