Node selection by level
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <Book> <Title>this is the title</Title> <Authors> <Author>A</Author> <Author>B</Author> <Author>C</Author> </Authors> <Year>2007</Year> <Chapters> <Chapter number="1" title="title 1">chapter 1</Chapter> <Chapter number="2" title="title 2">chapter 2</Chapter> <Chapter number="3" title="title 3">chapter 3</Chapter> <Chapter number="4" title="title 4">chapter 4</Chapter> <Chapter number="5" title="title 5">chapter 5</Chapter> </Chapters> </Book> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="/Book/Title" /> </title> </head> <body> <h3> <xsl:value-of select="/Book/Title" /> </h3> <p> by <xsl:apply-templates select="/Book/Authors/Author" /> </p> <h3>Table of Contents</h3> <xsl:apply-templates select="/Book/Chapters/Chapter" mode="TOC" /> <xsl:apply-templates select="/Book/Chapters/Chapter" mode="fulltext" /> </body> </html> </xsl:template> </xsl:stylesheet> Output: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>this is the title</title> </head> <body> <h3>this is the title</h3> <p> by ABC </p> <h3>Table of Contents</h3>chapter 1chapter 2chapter 3chapter 4chapter 5chapter 1chapter 2chapter 3chapter 4chapter 5 </body> </html>