Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Mode = toc

File: Data.xml <?xml version="1.0" encoding="utf-8"?> <data>   <chapter>     <title>Chapter 1</title>     <comment>This is a comment</comment>     <paragraph>And this is some text</p>   </chapter>   <chapter>     <title>Chapter 2</title>     <paragraph>This is some text as well</p>   </chapter> </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="/">     <H2>TOC</H2>     <xsl:for-each select="//chapter">       <xsl:apply-templates select="." mode="toc" />     </xsl:for-each>     <H2>TEXT</H2>     <xsl:for-each select="//chapter">       <xsl:apply-templates select="." />     </xsl:for-each>   </xsl:template>   <xsl:template match="chapter">     <xsl:apply-templates select="*" />   </xsl:template>   <xsl:template match="chapter" mode="toc">     <xsl:apply-templates select="*" mode="toc" />   </xsl:template>   <xsl:template match="title">     <H3 style="color:blue">       <xsl:value-of select="." />     </H3>   </xsl:template>   <xsl:template match="title" mode="toc">     <H3 style="color:red">       <xsl:value-of select="." />     </H3>   </xsl:template>   <xsl:template match="comment" mode="toc">     [     <i>       <xsl:value-of select="." />     </i>     ]   </xsl:template>   <xsl:template match="comment">     <i>       <xsl:value-of select="." />     </i>   </xsl:template>   <xsl:template match="p" mode="toc" /> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><H2>TOC</H2><H3 style="color:red">Chapter 1</H3>     [     <i>This is a comment</i>     ]   <H3 style="color:red">Chapter 2</H3><H2>TEXT</H2><H3 style="color:blue">Chapter 1</H3><i>This is a comment</i>And this is some text<H3 style="color:blue">Chapter 2</H3>This is some text as well