[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

Subject: 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
double html
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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.