apply-templates with mode=toc : apply templates « XSLT stylesheet « XML






apply-templates with mode=toc



File: Data.xml

<?xml version="1.0"?>
<people>

  <person born="1912" died="1954">
    <name>
      <first_name>A</first_name>
      <last_name>B</last_name>
    </name>
    <profession>C</profession>
    <profession>D</profession>
    <profession>E</profession>
  </person>

  <person born="2008" died="2008">
    <name>
      <first_name>F</first_name>
      <middle_initial>G</middle_initial>
      <last_name>H</last_name>
    </name>
    <profession>I</profession>
    <hobby>J</hobby>
  </person>

</people>


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

  <xsl:template match="people">
    <html>
      <head><title>Famous Scientists</title></head>
      <body>
        <ul><xsl:apply-templates select="person" mode="toc"/></ul>
        <xsl:apply-templates select="person"/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="person" mode="toc">
    <xsl:apply-templates select="name" mode="toc"/>
  </xsl:template>

  <xsl:template match="name" mode="toc">
    <li><xsl:value-of select="last_name"/>, 
    <xsl:value-of select="first_name"/></li>
  </xsl:template>

  <xsl:template match="person">
    <p><xsl:apply-templates/></p>
  </xsl:template>

</xsl:stylesheet>

Output:

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Famous Scientists</title>
   </head>
   <body>
      <ul>
         <li>B, 
            A
         </li>
         <li>H, 
            F
         </li>
      </ul>
      <p>
         
         A
         B
         
         C
         D
         E
         
      </p>
      <p>
         
         F
         G
         H
         
         I
         J
         
      </p>
   </body>
</html>

 








Related examples in the same category

1.apply template
2.Apply template, select from a list
3.apply-templates select="tag name"
4.copy the result of apply-templates