我試圖想出替代的特殊字符,如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