[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Combining grouping and generate-id() for multilevel TOC
Subject: [xsl] Combining grouping and generate-id() for multilevel TOC From: Ghostrider <ghostrider@xxxxxxxxxxx> Date: Wed, 18 Jul 2001 10:01:46 +0200 |
Hi, I've been trying to generate a two-level TOC in my HTML output, entries linking to anchors created with a generate-id(). It works for the first, top level but I can't get the second level from the hierarchy in there properly... Could someone maybe have a look if my problem is the same as the one Jeni solved in this message: http://www.biglist.com/lists/xsl-list/archives/200101/msg00149.html ? I can't seem to transform her templates and stuff to fit my situation (which, unfortunately, is the way I have to go about using XSL...). Am I correct if I assume that I need to 1. add a second grouping in the xsl for that second level, like I did for the first one, and 2. use another generate-id() to refer to all these second level groups with a unique anchor? If so, how do I go about this? I'm having trouble putting the pieces together logically, so any help would be appreciated. Thanks, Armin <--=========== desired HTML output file: first grouping by <Category 1> elements, then by <Category2>, both in the TOC section and in the Release Notes section with the actual content in it ================--> TOC *** Input --- <a href="#0123456"> DPF </a> --- IPC Ouput --- DPF --- IPC RELEASE NOTES ************* Input --- <a name="0123456'>DPF - Description 1<a> --- IPC - Description 2 Ouput --- DPF - Description 3 --- IPC - Description 4 <--=============== XML source ==========================--> <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="C:\HIGroup\XML\bugs\transform_09-07-01c.xsl"?> <root> <Bugs> <Bug> <Category1>Input</Category1> <-- grouping for Category1 is OK in XSL --> <Category2>DPF</Category2> <-- additional (sub)grouping for Category2 is not OK yet --> <Type>Bug fix</Type> <Description>Reading in ODB++ somehow ...</Description> <BugBase>001</BugBase> </Bug> <Bug> <Category1>Input</Category1> <Category2>IPC</Category2> <Type>Enhancement</Type> <Description>Reading in ODB++ somehow ...</Description> <BugBase>002</BugBase> </Bug> <Bug> <Category1>Output</Category1> <Category2>IPC</Category2> <Type>Enhancement</Type> <Description>Reading in ODB++ somehow ...</Description> <BugBase>003</BugBase> </Bug> </Bugs> <Calls> <Call BugBase="001"> B10015 </Call> <Call BugBase="001"> B10016 </Call> <Call BugBase="002"> B10017 </Call> <Call BugBase="003"> B10018 </Call> <Call BugBase="003"> B10019 </Call> </Calls> </root> <--=============== XSL stylesheet ======================--> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="categories" match="Bug" use="Category1"/> <xsl:key name="categories2" match="Bug" use="concat (Category1, ' ',Category2)" /> <xsl:key name="calls" match="Call" use="@BugBase"/> <xsl:template match="root"> <html> <body> <p>Release Notes</p> <!-- TOC start--> <p><b>Table of Contents</b></p> <p> <xsl:for-each select="//Bug[generate-id(.) = generate-id(key ('categories', Category1) [1] ) ]"> <a href="#{generate-id(.)}"><xsl:value-of select="Category1" /> </a> <br /> </xsl:for-each> </p> <!-- TOC end--> <!-- Bug fix start--> <xsl:apply-templates /> <!-- Bug fix end--> </body> </html> </xsl:template> <xsl:template match="root/Bugs"> <xsl:apply-templates select="Bug[generate-id(.) = generate-id(key ('categories', Category1) [1] ) ]" /> </xsl:template> <xsl:template match="Bugs/Bug"> <div> <b><a name="{generate-id(.)}"><xsl:value-of select="Category1" /></a></b> <div> <xsl:for-each select="key('categories', Category1)"> <span style="color:maroon;font-size:10pt;"> <p style="font-family:verdana,arial, helvetica, sans-serif;font-weight:bold"> <a name="Type"></a></p> <p> <b><xsl:value-of select="Category2"/></b></p> </span> <div> <p<xsl:for-each select="key('calls', BugBase)"> <xsl:value-of select="."/> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each></p> <div><p> <xsl:value-of select="Description"/> </p> </div> </div> </xsl:for-each> </div> </div> </xsl:template> <!--Start: no output for Call node--> <xsl:template match="root/Calls/Call"> </xsl:template> <!--End: no output for Call node--> </xsl:stylesheet> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Any Recommended XSL integ, Joshua Allen | Thread | [xsl] ext func, shruti |
[xsl] Any Recommended XSL integrate, Ben Leighton | Date | Re: Fwd: [xsl] complex XPATH test, David Carlisle |
Month |