Use for-each loop to output list items : for each « XSLT stylesheet « XML Tutorial






File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- tutorial.xml -->
<tutorial>
  <section>
    <title>Java</title>
    <panel>
      <title>Introduction</title>
      <!-- ... -->
    </panel>
    <panel>
      <title>Swing</title>
      <!-- ... -->
    </panel>
    <panel>
      <title>GUI</title>
      <!-- ... -->
    </panel>
    <panel>
      <title>2D animation</title>
      <!-- ... -->
    </panel>
  </section>
</tutorial>


File: Transform.xslt
<?xml version="1.0" encoding="utf-8"?>
<!-- tutorial.xsl -->
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="html"/>

  <xsl:template match="tutorial">
    <xsl:for-each select="section">
      <h1>
        <xsl:text>Section </xsl:text>
        <xsl:value-of select="position()"/>
        <xsl:text>. </xsl:text>
        <xsl:value-of select="title"/>
      </h1>
      <ul>
        <xsl:for-each select="panel">
          <li>
            <xsl:value-of select="position()"/>
            <xsl:text>. </xsl:text>
            <xsl:value-of select="title"/>
          </li>
        </xsl:for-each>
      </ul>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Output:

<h1>Section 1. Java</h1>
<ul>
   <li>1. Introduction</li>
   <li>2. Swing</li>
   <li>3. GUI</li>
   <li>4. 2D animation</li>
</ul>








5.45.for each
5.45.1.The xsl:for-each element allows all nodes in a node-set to be processed according to the XSLT instructions nested inside the xsl:for-each element.
5.45.2.Nested for-each loop with sorting
5.45.3.Output xml elements in for-each loop
5.45.4.for-each select=preceding-sibling::address[zip=./zip]
5.45.5.for-each select=//address[generate-id(.)=generate-id(key(zipcodes, zip)[1])]
5.45.6.Use for-each loop to output list items
5.45.7.for-each select="addressbook/address" and sort
5.45.8.compares sorted and unsorted xsl:for-each element
5.45.9.xsl:for-each instruction contains a template, which is applied to each node selected with select attribute.