I hope the following XSL would help ..
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:key name="by-prod_doctype_cust" match="doc"
use="concat(normalize-space(../text()), ' ' ,
doc_type, ' ', customer)"/>
<xsl:template match="/">
<html>
<head>
<title/>
</head>
<body>
<table border="1">
<xsl:for-each select="volume/product/doc[count(. |
key('by-prod_doctype_cust',
concat(normalize-space(../text()), ' ' , doc_type, '
', customer))[1]) = 1]">
<tr>
<td>
<xsl:value-of
select="normalize-space(../text())"/>
</td>
<td>
<xsl:value-of select="doc_type"/>
</td>
<td>
<xsl:value-of select="customer"/>
</td>
</tr>
<xsl:for-each select="key('by-prod_doctype_cust',
concat(normalize-space(../text()), ' ' , doc_type, '
', customer))">
<tr>
<td/>
<td>
<xsl:value-of select="id"/>
</td>
<td>
<xsl:value-of select="title"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Regards,
Mukul
--- "Jones, Christopher Thorman (Chris)"
<ctj(_at_)lucent(_dot_)com> wrote:
I am trying to create a HTTP table using the
following data, however, I want it grouped on
multiple fields (namely "product", "doc_type" &
"customer").
I've manage to group on one field (see bottom of
mail) but can't find info on extending this to more
than one key.
--------------------------Start of XML
------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
href="VitalVolumes4.xsl"?>
<!-- Vital Document Volumes Database -->
<volume>
<product>01 Vital ABC
<doc>
<doc_type>02 External Reqs</doc_type>
<customer>Government</customer>
<id>3246.01.02.01.01</id>
<title>Specification Document for the FR
trial</title>
</doc>
<doc>
<doc_type>02 External Reqs</doc_type>
<customer>NASA</customer>
<id>3246.01.02.02.01</id>
<title>Placeholder for T-Mobile Doc</title>
</doc>
</product>
<product>02 Vital XYZ
<doc>
<doc_type>01 Type</doc_type>
<customer>Customer A</customer>
<id>3246.02.01.01.01</id>
<title>CSD for Customer A - Vital XYZ</title>
</doc>
<doc>
<doc_type>05 Another Type</doc_type>
<customer>Customer B</customer>
<id>3246.02.05.01.01</id>
<title>Some other document</title>
</doc>
</product>
</volume>
----------------End of
XML-----------------------------------
----------------Start of
XSL--------------------------------
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="docs_by_doc_type" match="doc"
use="doc_type"/>
..
..
<xsl:for-each select="doc[count(. |
key('docs_by_doc_type', doc_type)[1]) = 1]">
<xsl:sort select="doc_type"/>
<tr>
<td colspan="4">
<xsl:value-of select="doc_type"/>
</td>
</tr>
<xsl:for-each select="key('docs_by_doc_type',
doc_type)">
<xsl:sort select="id"/>
<tr>
<td/>
<td>
<xsl:value-of select="id"/>
...
.
.
.
----------------End of
XSL-----------------------------------
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail