2015-07-13 48 views
0

我在XSLT1.0排序空間字符時遇到問題。我在XSLT中對特定字段進行排序,例如'fundName',它具有價值如'fundname/A'和/或'fundname A'。根據我的理解,排序將根據每個字符的ASCII值完成,並應按照'fundname A','fundname/A'的順序返回。但是我得到的值是'/',然後是'空間'值。在XSLT1.0中爲特殊字符(空格,/等)排序

以下是代碼:

INPUT: 
<fundList> 
    <funds> 
    <fundName>JNL/INSTITUTIONAL ALT 35</fundName> 
    <fundCode>12</fundCode> 
    </funds> 
    <funds> 
    <fundName>JNL DISC MODERATE</fundName> 
    <fundCode>15</fundCode> 
    </funds> 
    <funds> 
    <fundName>JNL/WMC MONEY MARKET</fundName> 
    <fundCode>10</fundCode> 
    </funds> 
</fundList> 

XSLT: 
<xsl:for-each select="fundList/funds"> 
    <xsl:sort select="fundName" order="ascending" /> 
    <xsl:sort select="fundCode" order="ascending" /> 

    <fundName><xsl:value-of select="fundName" /></fundName> 
</xsl:for-each> 

OUTPUT: 
JNL/INSTITUTIONAL ALT 35 
JNL/WMC MONEY MARKET 
JNL DISC MODERATE 

注:但是,我在網上嘗試這樣,它給正確repsonse(第一空間,然後/)。

回答

0

排序順序取決於您正在使用的XSLT處理器,因此完全可以預期不同的處理器會給您不同的結果。有些處理器可能會根據Unicode(或ASCII)代碼值進行排序,但這並不能保證:處理器通常會嘗試更智能的排序,例如您在書籍的索引中找到;它可能很大程度上取決於您在操作系統級別的語言選擇。

如果您想要更精確的控制,您需要查看特定處理器的文檔,但是您可以使用translate()函數將排序鍵轉換爲不同的排序值你渴望的方式。

相關問題