我试图想出替代的特殊字符,如A,U,U等与在BizTalk他们的基本字母表中的一个好办法。目前我使用的是以下XSL格式:用.Net/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代码来实现一个扩展函数,代码如http://stackoverflow.com/questions/3769457/how-can-i-remove-accents-on -a串。但这一切都取决于您的需求或您对“特殊字符”及其替代品的定义是否与该答案中使用的定义相符。 – 2012-04-16 10:42:16
没有一个“更聪明的办法”,因为你没有提供一个什么样的“特殊字符”是,也不应该如何产生其更换的定义。事实上,不同的语言可能会有不同的规则来替换相同的字符,正如@msam指出的那样。让代码更加灵活的一种方法是将所有“特殊字符”的集合及其相应的“替换”放入单独的XML文件中。这样代码将永远不需要修改。 – 2012-04-16 12:26:32