Use for-each to loop through variable : Variable « XSLT stylesheet « XML






Use for-each to loop through variable


File: Data.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<booklist>
  <book category="S">
    <title>title 1</title>
    <author>author 1</author>
  </book>

</booklist>


File: Transform.xslt

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">
  <xsl:key name="biog" match="author" use="@name" />
  <xsl:variable name="biogs" select="document('authors.xml')" />
  <xsl:template match="/">
    <html>
      <body>

        <xsl:variable name="all-books" select="//book" />
        <xsl:for-each select="$all-books">
          <h1>
            <xsl:value-of select="title" />
          </h1>
          <h2>
            Author
            <xsl:if test="count(author)!=1">s</xsl:if>
          </h2>
          <xsl:for-each select="author">
            <!-- for each author of this book -->
            <xsl:variable name="name" select="." />
            <h3>
              <xsl:value-of select="$name" />
            </h3>
            <!--locate the biography by key lookup -->
            <xsl:variable name="auth"
              select="$biogs/key('biog', $name)" />
            <p>
              <xsl:value-of
                select="concat($auth/born, ' - ', $auth/died)" />
            </p>
            <p>
              <xsl:value-of select="$auth/biog" />
            </p>
          </xsl:for-each>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>

</xsl:transform>

Output:

<html>
   <body>
      <h1>title 1</h1>
      <h2>
                     Author
                     
      </h2>
      <h3>author 1</h3>
      <p> - </p>
      <p></p>
   </body>
</html>

 








Related examples in the same category

1.Define variable and set value
2.Define variable
3.Output variable
4.Define a variable and then use it in for loop
5.Assign value from variable to attribute
6.Use constant value from variable
7.Fill variable with the returned value from a function
8.Variable scope
9.substring function with variable
10.Reference variable three times
11.Compare variable
12.Define number type variable
13.Math calculation
14.value-of and math calculation
15.Variable with number type
16.number level="any" count="chapter|sect1|sect2|sect3" format="Ww - " ordinal="yes"
17.number level="any" count="chapter|sect1|sect2|sect3" format="w - " lang="de"
18.number level="any" count="chapter|sect1|sect2|sect3" format="w - " lang="pl"
19.Thai numbering