XSLT <xsl:for-each>

  • 定义

    <xsl:for-each> 元素允许您在XSLT中进行循环。
  • <xsl:for-each> 元素

    XSL <xsl:for-each> 元素可用于选择指定节点集的每个 XML 元素:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
        <body>
        <h2>我的CD收藏</h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>名称</th>
            <th>艺术家</th>
          </tr>
          <xsl:for-each select="catalog/cd">
            <tr>
              <td><xsl:value-of select="title"/></td>
              <td><xsl:value-of select="artist"/></td>
            </tr>
          </xsl:for-each>
        </table>
        </body>
        </html>
      </xsl:template>
    
    </xsl:stylesheet>
    查看转换结果
    注意:select 属性的值是 XPath 表达式。 XPath 表达式的工作方式类似于浏览文件系统。 其中正斜杠(/)选择子目录。
  • 过滤输出

    我们还可以通过在 <xsl:for-each> 元素的 select 属性中添加一个条件来过滤 XML 文件的输出。
    <xsl:for-each select="catalog/cd[artist='Bob Dylan']">
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
        <body>
        <h2>我的CD收藏</h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>名称</th>
            <th>艺术家</th>
          </tr>
          <xsl:for-each select="catalog/cd[artist='Bob Dylan']">
            <tr>
              <td><xsl:value-of select="title"/></td>
              <td><xsl:value-of select="artist"/></td>
            </tr>
          </xsl:for-each>
        </table>
        </body>
        </html>
      </xsl:template>
    
    </xsl:stylesheet>
    查看转换结果