|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Small grouping problem (double HTML output for one nod
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
|
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








