【发布时间】:2010-10-21 03:30:51
【问题描述】:
基于以下 XML,在 XSL 中实现字母数字排序的最佳方法是什么?
编辑:澄清一下,下面的 XML 只是一个简单的示例,真正的 XML 将包含更多的变体值。
<colors>
<item>
<label>Yellow 100</label>
</item>
<item>
<label>Blue 12</label>
</item>
<item>
<label>Orange 3</label>
</item>
<item>
<label>Yellow 10</label>
</item>
<item>
<label>Orange 26</label>
</item>
<item>
<label>Blue 117</label>
</item>
</colors>
例如我希望按此顺序获得最终结果:
Blue 12, Blue 117, Orange 3, Orange 26, Yellow 10, Yellow 100
这是“有效地”我想要的。
<xsl:apply-templates select="colors/item">
<xsl:sort select="label" data-type="text" order="ascending"/><!--1st sort-->
<xsl:sort select="label" data-type="number" order="ascending"/><!--2nd sort-->
</xsl:apply-templates>
<xsl:template match="item">
<xsl:value-of select="label"/>
<xsl:if test="position() != last()">,</xsl:if>
</xsl:template>
【问题讨论】:
-
我用更通用的方法更新了我的答案。
标签: xslt sorting alphanumeric