Fill more one value into table cell : table « XSLT stylesheet « XML






Fill more one value into table cell


File: Data.xml

<employees>
      <employee eid="98145" dept="programming">
        <title>Java Programmer</title>
        <contact addInfo="info1">
          <name>
            <firstName>Joe</firstName>
            <middleName int="B">Brian</middleName>
            <lastName>Smith</lastName>
          </name>
          <address>
            <street>1 Drive</street>
            <city>Vancouver</city>
            <state>BC</state>
            <zipcode>80210</zipcode>
          </address>
          <phone>
            <tel type="wk">111-1111111</tel>
            <tel type="hm">222-222222</tel>
            <fax>303-4667357</fax>
          </phone>
          <email>a@a.com</email>
        </contact>
        <hireDate>2008-10-29</hireDate>
      </employee>
   
    </employees>

File: Transform.xslt
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="employees">
    <html>
      <head>
        <title>Employee Data</title>
      </head>
      <body>
        <table cellpadding="5" bgcolor="#cccccc">
          <tr>
            <th>Number</th>
            <th>Name</th>
            <th>Hire Date</th>
            <th>Address</th>
            <th>Phone</th>
            <th>Fax</th>
            <th>Email</th>
          </tr>
          <xsl:apply-templates />
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="employee">

    <tr>
      <td>
        <xsl:number />
      </td>
      <xsl:apply-templates select="contact" />
    </tr>

  </xsl:template>

  <xsl:template match="contact">
    <td>
      <xsl:value-of select="name/firstName" />
      <xsl:value-of select="name/middleName" />
      <xsl:value-of select="name/lastName" />
    </td>
    <td>
      <xsl:value-of select="../hireDate" />
    </td>
    <td>
      <xsl:value-of select="address/street" />
      <br />
      <xsl:value-of select="address/city" />
      ,
      <xsl:value-of select="address/state" />
      <xsl:value-of select="address/zip" />
    </td>
    <td>
      WK:
      <xsl:value-of select="phone/tel[@type=wk]" />
      <br />
      HM:
      <xsl:value-of select="phone/tel[@type=hm]" />
    </td>
    <td>
      <xsl:value-of select="phone/fax" />
    </td>
    <td>
      <xsl:value-of select="email" />
    </td>
  </xsl:template>
</xsl:stylesheet>
Output:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Employee Data</title>
   </head>
   <body>
      <table cellpadding="5" bgcolor="#cccccc">
         <tr>
            <th>Number</th>
            <th>Name</th>
            <th>Hire Date</th>
            <th>Address</th>
            <th>Phone</th>
            <th>Fax</th>
            <th>Email</th>
         </tr>
         
         <tr>
            <td>1</td>
            <td>JoeBrianSmith</td>
            <td>2008-10-29</td>
            <td>1 Drive<br>Vancouver
                     ,
                     BC
            </td>
            <td>
                     WK:
                     <br>
                     HM:
                     
            </td>
            <td>303-4667357</td>
            <td>a@a.com</td>
         </tr>
         
         
      </table>
   </body>
</html>

 








Related examples in the same category

1.Use xslt style sheet to output data in a table
2.Output to a table
3.for-each loop and table output
4.Sort a column
5.Use for-each to output table rows
6.select value for table cell
7.Get value with value-of for table cell
8.Use for-each to loop through nodes in certain level
9.use
to format value in a table cell
10.Create table header and content in separated templates
11.One template per table row
12.Add row number
13.Create a table with sorting
14.number column
15.Generate two tables
16.Create table header
17.Sort first then output to table