|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Creating multi-level groupings
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@xxxxxxxxxx> 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








