Use for-each loop : for each « XSLT stylesheet « XML






Use for-each loop



File: Data.xml

<?xml version="1.0"?>
<Objects>
  <Object name="Car">
    <Characteristic>A</Characteristic>
    <Characteristic>B</Characteristic>
    <Characteristic>C</Characteristic>
    <Characteristic>D</Characteristic>
  </Object>

  <Object name="Orange">
    <Characteristic>1</Characteristic>
    <Characteristic>2</Characteristic>
    <Characteristic>3</Characteristic>
    <Characteristic>4</Characteristic>
  </Object>

</Objects>


File: Transform.xslt

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:template match="/">
    <html>
      <head>
        <title>title</title>
      </head>
      <body>
        <h3>
          Characteristics of
          <xsl:value-of select="Objects/Object/@name" />
        </h3>
        <xsl:apply-templates select="/Objects/Object" />
      </body>
    </html>
  </xsl:template>

  <xsl:template match="Object">
    <ul>
      <xsl:for-each select="Characteristic">
        <li>
          <xsl:value-of select="." />
        </li>
      </xsl:for-each>
    </ul>
  </xsl:template>

</xsl:stylesheet>

Output:

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>title</title>
   </head>
   <body>
      <h3>
                   Characteristics of
                   Car
      </h3>
      <ul>
         <li>A</li>
         <li>B</li>
         <li>C</li>
         <li>D</li>
      </ul>
      <ul>
         <li>1</li>
         <li>2</li>
         <li>3</li>
         <li>4</li>
      </ul>
   </body>
</html>

 








Related examples in the same category

1.Use for-each to loop through each tags
2.for-each loop and table rows
3.for-each select="*", value-of="."
4.for-each select="node()", value-of select="."
5.for-each select="child::parentTagName", value-of select="childTagName"
6.for-each select="child::parentTagName[@attributeName='your value']"
7.Nested for-each statement