Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

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>