December 2002
Intermediate to advanced
672 pages
16h 53m
English
You want to map XML content onto HTML tables.
Tables are often created in two stages. First, the top-level table markup is generated, and then templates are applied to create rows and fields. The solution is a modification of part of the stylesheet produced in Recipe 8.2. The changed portion is highlighted:
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="URL"/>
<xsl:template match="/">
<xsl:apply-templates select="*" mode="index"/>
<xsl:apply-templates select="*" mode="content"/>
</xsl:template>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<!-- Create index.html (mode = "index") -->
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<xsl:template match="salesBySalesperson" mode="index">
<!-- Non-standard saxon xsl:document! -->
<xsl:document href="index.html">
<html>
<head>
<title>Sales by Salesperson</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>Sales By Salesperson</h1>
<xsl:apply-templates mode="index"/>
</body>
</html>
</xsl:document>
</xsl:template>
<xsl:template match="salesperson" mode="index">
<h2>
<a href="{concat($URL,@name,'.html')}">
<xsl:value-of select="@name"/>
</a>
</h2>
</xsl:template>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<!-- Create @name.html (mode = "content") -->
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<xsl:template match="salesperson" mode="content">
<xsl:document ...Read now
Unlock full access