我有xml喜欢:
<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, ' "', $AnswerText, '"')" />
</xsl:for-each>
和返回应该是XML的顺序,但由于阿拉伯语字符而处于奇怪的顺序。
我该如何修复?
1 "أقل من 16 عام"
2 "17 – 24 عامً"
3 "25- 34 عامً"
4 "35- 44 عامً"
5 "أكثر من 45 عامً"
如果要对@answer的值进行排序,则应该能够使用
<xsl:for-each select=".//QuestionAnswer">
<xsl:sort select="@Answer" lang="ar"/>
您可以进一步限定语言代码,例如lang="ar-EG"
根据埃及使用的阿拉伯语规则进行分类。我对阿拉伯语一无所知,所以我不知道这是否是必要的。
当然,可能是您的XSLT处理器不支持所有可能的语言代码。
尝试将RTL Unicode添加到您的句子中:
<xsl:variable name="rightToLeftUnicode" select="'‎'"></xsl:variable>
<xsl:value-of select="concat(' ',$AnswerId, ' "', $AnswerText, '"', $rightToLeftUnicode)" />