Format table cell during transforming : document « XSLT stylesheet « XML






Format table cell during transforming


File: Data.xml

<?xml version="1.0"?>
<employees>
  <employee eid="98145" dept="programming">
    <title>Java Programmer</title>
    <contact addInfo="info1">
      <name>
        <firstName>J</firstName>
        <middleName int="B">Brian</middleName>
        <lastName>S</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>JBrianS</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.apply template for a document
2.Apply template to a certain node in a document
3.Put xml document to a table layout
4.Variable for document