转换 HTML
XSLT 排序用 xsl:sort,分组在 XSLT 1.0 里靠 Muenchian 方法(复杂),XSLT 2.0 有 for-each-group 直接分组。
排序
<xsl:sort select="price" data-type="number" order="descending"/> 数字排序;字符串默认字母序。
分组(XSLT 2.0)
<xsl:for-each-group select="book" group-by="@category"> 按属性分组,current-group() 取组内节点。
代码示例
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<h1>按分类分组</h1>
<xsl:for-each-group select="bookstore/book" group-by="@category">
<h2>分类:<xsl:value-of select="current-grouping-key()"/></h2>
<ul>
<xsl:for-each select="current-group()">
<xsl:sort select="price" data-type="number" order="descending"/>
<li>
<xsl:value-of select="title"/>
(¥<xsl:value-of select="price"/>)
</li>
</xsl:for-each>
</ul>
</xsl:for-each-group>
</body></html>
</xsl:template>
</xsl:stylesheet>