Subject: [xsl] Small grouping problem (double HTML output for one node but not for another???) From: ghostrider <ghostrider@xxxxxxxxxxx> Date: Wed, 11 Jul 2001 13:59:14 +0200 |
Hi, I'm having trouble combining 2 pieces of XSL which work as expected when used as separate xsl files for one single xml file, but give different output results when i try to combine them - that is, I get nodes that are output twice when they shouldn't be (because of the GROUPING that one particular XSL ought to do). I'm quite sure that the cause for my problems is that the different parts of the two XSL files are NOT IN THE CORRECT PLACE (although XMLSpy does not give any syntax errors...)to do what I want the XSL to do. Someone please have a quick look at these files... Thanks a lot, Armin ** CORRECT HTML Output with XSL1 (which groups nodes) ** Input DPF - Description 1 IPC - Description 2 Ouput DPF - Description 3 IPC - Description 4 ** INCORRECT HTML Output with XSL2 (which also should add an HTML template for the root, not just the nodes recursively processed and grouped) - Note that the Input node is output twice, the Output node is output once, as it should be)** Release Notes some text... some text... Input DPF - Description 1 IPC - Description 2 Input DPF - Description 1 IPC - Description 2 Ouput DPF - Description 3 IPC - Description 4 ** XML file *** <?xml-stylesheet type="text/xsl" href="C:\HIGroup\XML\bugs\transform_09-07-01c.xsl"?> <root> <Bugs> <Bug> <Category1>Input</Category1> <Category2>DPF</Category2> <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 1 - which generates correct output ** <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="calls" match="Call" use="@BugBase"/> <xsl:template match="Bugs"> <xsl:apply-templates select="Bug[generate-id(.) = generate-id(key ('categories', Category1) [1] ) ]" /> </xsl:template> <xsl:template match="root/Bugs/Bug"> <xsl:value-of select="Category1" /> <div> <xsl:for-each select="key('categories', Category1)"> <div><xsl:value-of select="Category2" /><xsl:text> - </xsl:text> <xsl:value-of select="Description" /></div> <p> <xsl:for-each select="key('calls', BugBase)"> <xsl:value-of select="."/> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each></p> </xsl:for-each> <hr /> </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 2 - generating INCORRECT double output ** <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="calls" match="Call" use="@BugBase"/> <xsl:template match="root"> <html> <body> <p>Release Notes</a> <hr style="height:2px;color:navy"/> </p> <!-- Bug fix start--> <xsl:apply-templates select="Bugs/Bug" /> <!-- 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><xsl:value-of select="Category1" /></b> <div> <xsl:for-each select="key('categories', Category1)"> <span><p><b><xsl:value-of select="Category2"/> (<xsl:value-of select="Type"/>)</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:stylesheet> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: Saving entire xml-Structu, Dimitre Novatchev | Thread | [xsl] date and time, Michael Schäfer |
[xsl] Re: Saving entire xml-Structu, Dimitre Novatchev | Date | RE: [xsl] Saving entire xml-Structu, Roman Huditsch |
Month |