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
|