<xls:sort is not working when special character [i.e. dot(.), colon(:), semicolon(;)] is present

问题描述 投票:0回答:1
当特殊字符如“, : ;”时,

xsl:sort无法正常工作是礼物。这里可能有什么问题?

我正在尝试使用 java dom4j 库从 xml 数据渲染 html。虽然实际项目有多种排序标准,但我在这里对具体问题进行总结。

我有一些 xml 数据,例如:

<employee>
    <name>
        <![CDATA[test 1.8 - test]]>
    </name>
    <name>
        <![CDATA[test 4 - test]]>
    </name>
    <name>
        <![CDATA[Test 2 - test]]>
    </name>
</employee>

我正在尝试使用带有 的 xsl 转换器对它们进行排序。用于排序的片段...

<xsl:for-each select="employee/name">
    <xsl:sort select="name" case-order="upper-first"/>
...

预期输出订单:

Test 2 - test
test 1.8 - test
test 4 - test

我得到的输出订单

test 1.8 - test
Test 2 - test
test 4 - test
java xml spring xslt dom4j
1个回答
0
投票

首先,您的代码片段对

employee
进行排序,而不是对
name
进行排序。

现在,您得到的结果是对名称进行排序后的预期输出。如果您希望 Test 2 - test

 的条目排在第一位,因为它以大写字母 
T
 开头,那么您需要执行以下操作:

<xsl:for-each select="name"> <xsl:sort collation="http://www.w3.org/2005/xpath-functions/collation/codepoint"/> .... </xsl:for-each>
您将需要一个支持 XSLT 2.0 或更高版本的处理器。

我不明白点或任何其他字符的存在与此有什么关系。

© www.soinside.com 2019 - 2024. All rights reserved.