File: Data.xml <book> <chapter> <title>A</title> <para>para1</para> <para>para2</para> </chapter> <chapter> <title>B</title> <para>line 2</para> <para>line 3</para> </chapter> <afterword> <para>line 4</para> </afterword> <appendix> <title>The Author</title> <para>line 5</para> <para>line 6</para> </appendix> </book> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" /> <xsl:template match="para"> <h1>Unaccounted for para element</h1> <h2>Ancestors</h2> <xsl:for-each select="ancestor::*"> <xsl:value-of select="name()" /> <xsl:if test="position() != last()"> <xsl:text>, </xsl:text> </xsl:if> </xsl:for-each> <h2>Content</h2> <xsl:apply-templates /> </xsl:template> <xsl:template match="book"> <html> <body> <xsl:apply-templates /> </body> </html> </xsl:template> <xsl:template match="title"> <h1> <xsl:apply-templates /> </h1> </xsl:template> <xsl:template match="chapter/para"> <paragraph> <font face="times"> <xsl:apply-templates /> </font> </paragraph> </xsl:template> <xsl:template match="appendix/para"> <paragraph> <font face="arial"> <xsl:apply-templates /> </font> </paragraph> </xsl:template> </xsl:stylesheet>