转换 HTML

XSLT 教程 · 第 5 章 · 8 次浏览

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>