Node selection by level : select « XSLT stylesheet « XML






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>

 








Related examples in the same category

1.Parent and attribute
2.select="../@attribute"
3.child
4.Get value from tag with {}
5.Select Node by index
6.Select attribute value and output to a list
7.context position and context size
8.select with if then else
9.select="document('')/*/book:category[@code=current()/@category]/@desc"
10.select distinct values
11.Select one from the target value list
12.select="@*" (at)
13.Select one tag from a list of tags
14.select="employees/employee[2]/following::contact/name/firstName"
15.select="employees/employee[2]/preceding::contact/name/firstName"
16.select="employee[@dept='programming']"
17.select="employees/head:header/namespace::head"
18.value-of select="person[position()=3]/name"