XSLT - 字符串和数字升序,Saxon 处理器
XSLT - Strings and numbers ascending order, Saxon processor
我试图了解撒克逊处理器如何选择升序。
我有 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 处理器如何决定这个顺序??
它的排序与其他排序一样自然。 Space <32> 在前,数字 0-9 <48-57> 然后是字母。参见 ASCII Code - The extended ASCII table
when I sort this by price I it give me following results
如果您按字母顺序 排序,它会给您 仅 显示的结果 - 即处理 price
的内容作为文本。如果您排序为:
,您将得到 不同的 结果
<xsl:sort select="price" data-type="number" order="ascending"/>
在这种情况下,所有无法转换为数字的值将排在第一位。
请注意,用于排序的默认数据类型是文本 - 除非您明确覆盖它1,否则您还会看到“9.00”的价格已排序之后“100.00”。
(1) 或者如果您有一个将 price
定义为数字数据类型的架构,并且您正在使用架构感知处理器。
我试图了解撒克逊处理器如何选择升序。
我有 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 处理器如何决定这个顺序??
它的排序与其他排序一样自然。 Space <32> 在前,数字 0-9 <48-57> 然后是字母。参见 ASCII Code - The extended ASCII table
when I sort this by price I it give me following results
如果您按字母顺序 排序,它会给您 仅 显示的结果 - 即处理 price
的内容作为文本。如果您排序为:
<xsl:sort select="price" data-type="number" order="ascending"/>
在这种情况下,所有无法转换为数字的值将排在第一位。
请注意,用于排序的默认数据类型是文本 - 除非您明确覆盖它1,否则您还会看到“9.00”的价格已排序之后“100.00”。
(1) 或者如果您有一个将 price
定义为数字数据类型的架构,并且您正在使用架构感知处理器。