Get two values in one template : template match « XSLT stylesheet « XML






Get two values in one template


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>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="name">
    <p><xsl:value-of select="last_name"/>, 
    <xsl:value-of select="first_name"/></p>
  </xsl:template>

  <xsl:template match="person">
    <xsl:apply-templates select="name"/>
  </xsl:template>

</xsl:stylesheet>

Output:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Famous Scientists</title>
   </head>
   <body>
      
      
      <p>B, 
         A
      </p>
      
      
      <p>H, 
         F
      </p>
      
      
   </body>
</html>

 








Related examples in the same category

1.Define and use template
2.Locate parent tags and get value from children tags
3.Select value from an element with value-of
4.match an element
5.output in template
6.set match mode to fulltext
7.match and get value operations with namespace
8.Call a template with parameter
9.template mode="index"
10.template with parameters
11.output a table without loop