Generate two tables : table « XSLT stylesheet « XML

XML
1. CSS Style
2. SVG
3. XML Schema
4. XQuery
5. XSLT stylesheet
Java
XML Tutorial
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
XML » XSLT stylesheet » table 
Generate two tables


File: Data.xml

<?xml version="1.0" standalone="yes"?>
<report type="Unfilled Orders">
  <customer number="CUST111" type="VIP">
    <name>name 1</name>

    <order-list count="2">
      <order number="ORD200" owner="CUST111" total="650.00" status="late">
        <item-list>
          <item quantity="5" price="100">item 1</item>
          <item quantity="2" price="50">item 2</item>
          <item quantity="1" price="50">item 3</item>
        </item-list>
      </order>
      <order number="ORD105" owner="CUST111" total="150.00" status="backordered">
        <item-list>
          <item quantity="6" price="25">item 4</item>
        </item-list>
      </order>
    </order-list>
  </customer>

  <customer number="CUST222" type="normal">
    <name>Alice Liddle</name>

    <order-list count="2">
      <order number="ORD102" owner="CUST222" total="3490.00" status="late">
        <item-list>
          <item quantity="20" price="100">item 1</item>
          <item quantity="10" price="50">item 2</item>
          <item quantity="10" price="50">item 3</item>
          <item quantity="10" price="25">item 4</item>
          <item quantity="2" price="120">item 5</item>
        </item-list>
      </order>
    </order-list>
  </customer>
</report>


File: Transform.xslt

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

  <xsl:template match="report">
    <HTML>
    <BODY>
      <FONT SIZE="6">
      Report of <xsl:value-of select="@type" /> by Customer
      </FONT>
      <xsl:apply-templates select="customer" />  
    </BODY>
    </HTML>
    
  </xsl:template>

  <xsl:template match="customer">
    <HR/>
    <TABLE BORDER="1" CELLPADDING="3">
      <TR ALIGN="left">
        <TH>Customer #:</TH>
        <TD><xsl:value-of select="@number" /></TD>
        <TH>Name:</TH>
        <TD><xsl:value-of select="name" /></TD>
        <TH>Status:</TH>
        <TD><xsl:value-of select="@type" /></TD>
      </TR>
    </TABLE>
    
    <xsl:apply-templates select="order-list/order" />
  </xsl:template>

  <xsl:template match="order">
    <P/>
    <TABLE BORDER="1" CELLPADDING="3">
      <TR ALIGN="left">
        <TH>Order #:</TH>
        <TD><xsl:value-of select="@number" /></TD>
        <TH>Status:</TH>
        <TD><xsl:value-of select="@status" /></TD>
      </TR>
    </TABLE>
    <TABLE BORDER="1" CELLPADDING="3" WIDTH="100%">
      <TR ALIGN="left">
        <TH>Quantity</TH>
        <TH>Item</TH>
        <TH ALIGN="right">Price</TH>
      </TR>
      <xsl:apply-templates select="item-list/item" />
    </TABLE>
    
  </xsl:template>

  <xsl:template match="item">
    <TR ALIGN="left">
      <TD><xsl:value-of select="@quantity" /></TD>
      <TD><xsl:value-of select="text()" /></TD>
      <TD ALIGN="right"><xsl:value-of select="@price" /></TD>
    </TR>
  </xsl:template>
      
</xsl:stylesheet>
Output:

<HTML>
   <BODY><FONT SIZE="6">
               Report of Unfilled Orders by Customer
               </FONT><HR>
      <TABLE BORDER="1" CELLPADDING="3">
         <TR ALIGN="left">
            <TH>Customer #:</TH>
            <TD>CUST111</TD>
            <TH>Name:</TH>
            <TD>name 1</TD>
            <TH>Status:</TH>
            <TD>VIP</TD>
         </TR>
      </TABLE>
      <P></P>
      <TABLE BORDER="1" CELLPADDING="3">
         <TR ALIGN="left">
            <TH>Order #:</TH>
            <TD>ORD200</TD>
            <TH>Status:</TH>
            <TD>late</TD>
         </TR>
      </TABLE>
      <TABLE BORDER="1" CELLPADDING="3" WIDTH="100%">
         <TR ALIGN="left">
            <TH>Quantity</TH>
            <TH>Item</TH>
            <TH ALIGN="right">Price</TH>
         </TR>
         <TR ALIGN="left">
            <TD>5</TD>
            <TD>item 1</TD>
            <TD ALIGN="right">100</TD>
         </TR>
         <TR ALIGN="left">
            <TD>2</TD>
            <TD>item 2</TD>
            <TD ALIGN="right">50</TD>
         </TR>
         <TR ALIGN="left">
            <TD>1</TD>
            <TD>item 3</TD>
            <TD ALIGN="right">50</TD>
         </TR>
      </TABLE>
      <P></P>
      <TABLE BORDER="1" CELLPADDING="3">
         <TR ALIGN="left">
            <TH>Order #:</TH>
            <TD>ORD105</TD>
            <TH>Status:</TH>
            <TD>backordered</TD>
         </TR>
      </TABLE>
      <TABLE BORDER="1" CELLPADDING="3" WIDTH="100%">
         <TR ALIGN="left">
            <TH>Quantity</TH>
            <TH>Item</TH>
            <TH ALIGN="right">Price</TH>
         </TR>
         <TR ALIGN="left">
            <TD>6</TD>
            <TD>item 4</TD>
            <TD ALIGN="right">25</TD>
         </TR>
      </TABLE>
      <HR>
      <TABLE BORDER="1" CELLPADDING="3">
         <TR ALIGN="left">
            <TH>Customer #:</TH>
            <TD>CUST222</TD>
            <TH>Name:</TH>
            <TD>Alice Liddle</TD>
            <TH>Status:</TH>
            <TD>normal</TD>
         </TR>
      </TABLE>
      <P></P>
      <TABLE BORDER="1" CELLPADDING="3">
         <TR ALIGN="left">
            <TH>Order #:</TH>
            <TD>ORD102</TD>
            <TH>Status:</TH>
            <TD>late</TD>
         </TR>
      </TABLE>
      <TABLE BORDER="1" CELLPADDING="3" WIDTH="100%">
         <TR ALIGN="left">
            <TH>Quantity</TH>
            <TH>Item</TH>
            <TH ALIGN="right">Price</TH>
         </TR>
         <TR ALIGN="left">
            <TD>20</TD>
            <TD>item 1</TD>
            <TD ALIGN="right">100</TD>
         </TR>
         <TR ALIGN="left">
            <TD>10</TD>
            <TD>item 2</TD>
            <TD ALIGN="right">50</TD>
         </TR>
         <TR ALIGN="left">
            <TD>10</TD>
            <TD>item 3</TD>
            <TD ALIGN="right">50</TD>
         </TR>
         <TR ALIGN="left">
            <TD>10</TD>
            <TD>item 4</TD>
            <TD ALIGN="right">25</TD>
         </TR>
         <TR ALIGN="left">
            <TD>2</TD>
            <TD>item 5</TD>
            <TD ALIGN="right">120</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. Fill more one value into table cell
10. use
to format value in a table cell
11. Create table header and content in separated templates
12. One template per table row
13. Add row number
14. Create a table with sorting
15. number column
16. Create table header
17. Sort first then output to table
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.