1

私は、ã、û、ü などの特殊文字を 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インラインコードを使用することを考えていました。しかし、私もそれを機能させることができないようです。

基本的に、文字リストを常に更新しなければならないようなアプリを作成したくありません。定義されていない新しい特殊文字が作成され、受信側のアプリでエラーが発生する可能性があります。しかし、選択肢はありますか?

4

2 に答える 2

2

別の方法として、正規表現を使用して必要な文字を置き換えることもできます。

さらに重要なことに、この方法で文字をマッピングすると混乱が生じる可能性があることを認識していますよね? たとえば、ゲルマン語は、ä を ae に、ü を ue に、ö を oe にマッピングし、a、u、o にマッピングすると、いくつかの単語の意味が変わります。

于 2012-04-16T10:48:06.333 に答える
0

私の質問はこれです:これを行うためのより良い、または「よりスマートな」方法はありますか?

...

基本的に、文字リストを常に更新しなければならないようなアプリを作成したくありません。定義されていない新しい特殊文字が作成され、受信側のアプリでエラーが発生する可能性があります。しかし、選択肢はありますか?

「特殊文字」とは何か、またその置換を生成する方法の定義を提供していないため、「よりスマートな方法」はありません

実際、@msam で指摘されているように、言語によって同じ文字の置換規則が異なる場合があります。

このコードをより柔軟にする 1 つの方法は、すべての「特殊文字」とそれに対応する「置換」のセットを別の XML ファイルに配置することです。この方法では、コードを変更する必要はありません。

于 2012-04-16T12:28:35.637 に答える