2016-12-28 1 views
2

私のようなXMLを持っている:XSLTソートアラビア語の文字が

<Answers> 
    <QuestionAnswer Id="1" Answer="أقل من 16 عام"/> 
    <QuestionAnswer Id="2" Answer="17 – 24 عامً"/> 
    <QuestionAnswer Id="3" Answer="25- 34 عامً"/> 
    <QuestionAnswer Id="4" Answer="35- 44 عامً"/> 
    <QuestionAnswer Id="5" Answer="أكثر من 45 عامً"/> 
</Answers> 

XSL:

<xsl:for-each select=".//QuestionAnswer"> 
    <xsl:variable name="AnswerId" select="@Id"/> 
    <xsl:variable name="AnswerText" select="@Answer"/> 
    <xsl:value-of select="concat(' ',$AnswerId, ' &quot;', $AnswerText, '&quot;')" /> 
</xsl:for-each> 

とリターンはXMLからの注文であってもよいが、理由はアラビア文字の奇数次である必要があります。

どうすればこの問題を解決できますか?

1 "أقل من 16 عام" 
2 "17 – 24 عامً" 
3 "25- 34 عامً" 
4 "35- 44 عامً" 
5 "أكثر من 45 عامً" 
+0

あなたの質問を明確にしてみてください。あなたは正確に何を達成しようとしていますか? –

+0

変換結果を端末に出力していますか?その場合は、出力をファイルにリダイレクトし、適切なテキストエディタでそのファイルを参照してください。この問題は表示上の問題に過ぎないことがあります。 –

+0

それは愚かであるが、私はcorectlyアラビア文字もshoulsファイルに出力 – karolio007

答えて

1

あなたが@Answerの値でソートしたい場合、あなたはあなたが、さらに、例えば、言語コードを修飾することができます

<xsl:for-each select=".//QuestionAnswer"> 
    <xsl:sort select="@Answer" lang="ar"/> 

を使用することができるはずですlang="ar-EG"は、エジプトで使用されているアラビア語の規則に従ってソートを行います。私はアラビア語について何も知らないので、これが必要かどうかわかりません。もちろん

、それはあなたのXSLTプロセッサがすべての可能な言語コードをサポートしていないことかもしれません。あなたの文章にRTLユニコードを追加

+0

質問は非常に不明ですが、私はOP内に含まれる数値で項目を並べ替え、1つの回答内で数値を並べ替えることを希望していると思います。 –

+0

マイケルありがとう、私はこのソリューションを試しましたが、それは動作していません – karolio007

+0

数値で値をソートしていません。 Strangeもposition()関数の結果です。 Answer文の値は、「アラビア語の状況」でしか実際の位置ではありません。 – karolio007

0

試してみてください。

<xsl:variable name="rightToLeftUnicode" select="'&#x200E;'"></xsl:variable> 
<xsl:value-of select="concat(' ',$AnswerId, ' &quot;', $AnswerText, '&quot;', $rightToLeftUnicode)" />