xsl:for-each instruction contains a template, which is applied to each node selected with select attribute. : for each « XSLT stylesheet « XML Tutorial






File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
    <AAA id="a1" pos="start">
      <BBB id="b1"/>
      <BBB id="b2"/>
    </AAA>
    <AAA id="a2">
      <BBB id="b3"/>
      <BBB id="b4"/>
      <CCC id="c1">
        <DDD id="d1"/>
      </CCC>
      <BBB id="b5">
        <CCC id="c2"/>
      </BBB>
    </AAA>
</data>
File: Transform.xslt

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
      <xsl:for-each select="//BBB">
        <DIV style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
        </DIV>
      </xsl:for-each>
      <xsl:for-each select="source/AAA/CCC">
        <DIV style="color:navy">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
        </DIV>
      </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?><DIV style="color:red">BBB id=b1</DIV><DIV style="color:red">BBB id=b2</DIV><DIV style="color:red">BBB id=b3</DIV><DIV style="color:red">BBB id=b4</DIV><DIV style="color:red">BBB id=b5</DIV>








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.