Example of <xsl:apply-templates>
The style sheet in this example formats customer data in XML into an HTML <TABLE>
element. In the output table, each row represents a customer and the columns represent the customer's name, address, and phone number. The <xsl:sort>
element sorts the customers by state, with all customers from a single state sorted by name.
Note To test this example, you need to use a script. For more information, see Initiate XSLT in a Script.
XML File (customers.xml)
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="applyt.xsl" ?> <customers> <customer> <name>John Smith</name> <address>123 Oak St.</address> <state>WA</state> <phone>(206) 123-4567</phone> </customer> <customer> <name>Zack Zwyker</name> <address>368 Elm St.</address> <state>WA</state> <phone>(206) 423-4537</phone> </customer> <customer> <name>Albert Aikens</name> <address>368 Elm St.</address> <state>WA</state> <phone>(206) 423-4537</phone> </customer> <customer> <name>Albert Gandy</name> <address>6984 4th St.</address> <state>WA</state> <phone>(206) 433-4547</phone> </customer> <customer> <name>Peter Furst</name> <address>456 Pine Av.</address> <state>CA</state> <phone>(209) 765-4321</phone> </customer> <customer> <name>Dan Russell</name> <address>9876 Main St.</address> <state>PA</state> <phone>(323) 321-7654</phone> </customer> </customers>
XSLT File (applyt.xsl)
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template match="/"> <HTML> <BODY> <TABLE border="1" cellspacing="0" cellpadding="2"> <xsl:apply-templates select="customers/customer"> <xsl:sort select="state"/> <xsl:sort select="name"/> </xsl:apply-templates> </TABLE> </BODY> </HTML> </xsl:template> <xsl:template match="customer"> <TR> <xsl:apply-templates select="name" /> <xsl:apply-templates select="address" /> <xsl:apply-templates select="state" /> <xsl:apply-templates select="phone" /> <xsl:apply-templates select="phone" mode="accountNumber"/> </TR> </xsl:template> <xsl:template match="name"> <TD STYLE="font-size:14pt font-family:serif"> <xsl:apply-templates /> </TD> </xsl:template> <xsl:template match="address"> <TD> <xsl:apply-templates /> </TD> </xsl:template> <xsl:template match="state"> <TD> <xsl:apply-templates /> </TD> </xsl:template> <xsl:template match="phone"> <TD> <xsl:apply-templates /> </TD> </xsl:template> <xsl:template match="phone" mode="accountNumber"> <TD STYLE="font-style:italic"> 1-<xsl:value-of select="."/>-001 </TD> </xsl:template> </xsl:stylesheet>
Output
This is the formatted output:
This is the processor output:
<HTML> <BODY> <TABLE border="1" cellspacing="0" cellpadding="2"> <TR> <TD STYLE="font-size:14pt font-family:serif">Peter Furst</TD> <TD>456 Pine Av.</TD> <TD>CA</TD> <TD>(209) 765-4321</TD> <TD STYLE="font-style:italic"> 1-(209) 765-4321-001 </TD> </TR> <TR> <TD STYLE="font-size:14pt font-family:serif">Dan Russell</TD> <TD>9876 Main St.</TD> ... </TR> </TABLE> </BODY> </HTML>