我有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 عامً"
答案 0 :(得分:1)
如果你想对@Answer的值进行排序,那么你应该可以使用
<xsl:for-each select=".//QuestionAnswer">
<xsl:sort select="@Answer" lang="ar"/>
您可以进一步限定语言代码,例如: lang="ar-EG"
根据埃及使用的阿拉伯语规则进行排序。我对阿拉伯语一无所知,所以我不知道这是否有必要。
当然,可能是您的XSLT处理器不支持所有可能的语言代码。
答案 1 :(得分:0)
尝试将RTL unicode添加到您的句子中:
<xsl:variable name="rightToLeftUnicode" select="'‎'"></xsl:variable>
<xsl:value-of select="concat(' ',$AnswerId, ' "', $AnswerText, '"', $rightToLeftUnicode)" />