我试着理解撒克逊处理器如何选择升序。
我有xml如下,
<catalog>
<cd>
<title lan="en">Empire Burlesque</title>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title lan="en">Hide your heart</title>
<price> </price>
<year>1988</year>
</cd>
<cd>
<title lan="fr">Greatest Hits</title>
<price>13.90</price>
<year>1982</year>
</cd>
<cd>
<title lan="sp">Still got the blues</title>
<price>abc</price>
<year>1990</year>
</cd>
<cd>
<title lan="fr">Eros</title>
<price>24.90</price>
<year>1997</year>
</cd>
</catalog>
当我按价格对此进行排序时,它会给我以下结果。请注意,我将空字符串放入一个价格值,字符串'abc'
没有其他价格值。
<catalog>
<cd>
<title lan="en">Hide your heart</title>
<price> </price>
<year>1988</year>
</cd>
<cd>
<title lan="en">Empire Burlesque</title>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title lan="fr">Greatest Hits</title>
<price>13.90</price>
<year>1982</year>
</cd>
<cd>
<title lan="fr">Eros</title>
<price>24.90</price>
<year>1997</year>
</cd>
<cd>
<title lan="sp">Still got the blues</title>
<price>abc</price>
<year>1990</year>
</cd>
</catalog>
似乎空字符串首先出现,然后价格有数字,按预期排序且价格有字符串值,先来,
这个命令如何通过Saxon处理器决定?
答案 0 :(得分:1)
与其他人一样排序自然顺序。空间&lt; 32&gt;首先出现并且数字0-9&lt; 48-57&gt;然后是字母表。见ASCII Code - The extended ASCII table
答案 1 :(得分:1)
当我按价格对其进行排序时,它会给我以下结果
如果您按字母顺序排序 ,它会显示仅显示的结果 - 即将price
的内容视为文本。如果排序为:
<xsl:sort select="price" data-type="number" order="ascending"/>
在这种情况下,所有将无法转换为数字的值。
请注意,用于排序的默认数据类型是文本 - 除非您明确覆盖它 1 ,否则您还会看到“9.00”的价格在之后排序 100.00" 。
(1)或者如果您有一个模式将price
定义为数字数据类型,并且您正在使用模式感知处理器。