Select attribute value and output to a list : select « XSLT stylesheet « XML






Select attribute value and output to a list


File: Data.xml

<?xml version="1.0"?>
<people>

  <person born="1912" died="1954">
    <name>
      <first_name>A</first_name>
      <last_name>B</last_name>
    </name>
    <profession>C</profession>
    <profession>D</profession>
    <profession>E</profession>
  </person>

  <person born="2008" died="2008">
    <name>
      <first_name>F</first_name>
      <middle_initial>G</middle_initial>
      <last_name>H</last_name>
    </name>
    <profession>I</profession>
    <hobby>J</hobby>
  </person>

</people>


File: Transform.xslt

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="people">
    <html>
      <head><title>Famous Scientists</title></head>
      <body>
        <dl>
          <xsl:apply-templates/>
        </dl>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="person">
    <dt><xsl:apply-templates select="name"/></dt>
    <dd><ul>
      <li>Born: <xsl:apply-templates select="@born"/></li>
      <li>Died: <xsl:apply-templates select="@died"/></li>
    </ul></dd>
  </xsl:template>

</xsl:stylesheet>

Output:

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Famous Scientists</title>
   </head>
   <body>
      <dl>
         
         
         <dt>
            A
            B
            
         </dt>
         <dd>
            <ul>
               <li>Born: 1912</li>
               <li>Died: 1954</li>
            </ul>
         </dd>
         
         
         <dt>
            F
            G
            H
            
         </dt>
         <dd>
            <ul>
               <li>Born: 2008</li>
               <li>Died: 2008</li>
            </ul>
         </dd>
         
         
      </dl>
   </body>
</html>

 








Related examples in the same category

1.Parent and attribute
2.select="../@attribute"
3.child
4.Get value from tag with {}
5.Node selection by level
6.Select Node by index
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"