XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Aaron JobSubject: XSTL help(debug)
Author: Aaron Job
Date: 07 Oct 2005 07:13 PM
Originally Posted: 04 Oct 2005 09:40 AM
hello, I am haveing a problem with a XSL file. I am trying to add up all the quanties of each of the items and compile a shopping list. here is some of my xml file<br> <br> <menu><br> <recipe><br> <head><br> <title>$20,000 Prize-Winning Chili</title><br> </head><br> <ingredients><br> <ing><br> <amt><br> <qty>2.5</qty><br> <unit>pound</unit></amt><br> <item>Lean ground chuck</item></ing><br> <ing><br> <amt><br> <qty>1</qty><br> <unit>pound</unit></amt><br> <item>Lean ground pork</item></ing><br> <ing><br> <amt><br> <qty>1</qty><br> <unit>cup</unit></amt><br> <item>Finely chopped onion</item></ing><br> <ing><br> <amt><br> <qty>4</qty><br> <unit/></amt><br> <item>Garlic cloves; finely chpd.</item></ing><br> </menu><br> <br> The full XML file is located here (site down) I want it to list all the items once(if they come up more than that) and give the sum of the quanty(the qty tag). <br> eg(quanty to come form qty tag): Chicken 400g<br> Milk 100ml<br> <br> My XSL code: (full listing <a href="http://www.users.on.net/~aaronjob/ass1part3.xsl">http://www.users.on.net/~aaronjob/ass1part3.xsl</a>)<br> <br> <?xml version="1.0"?><br> <xsl:stylesheet version="1.0" xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform"&gt;">">http://www.w3.org/1999/XSL/Transform"></a><br> <xslutput method="html"/><br> <xsl:key name="tempItem" match="recipeml/menu/recipe/ingredients/ing" use="item"/><br> <xsl:template match="/"><br> <xsl:apply-templates select="recipeml/menu"/><br> </xsl:template><br> <xsl:template match="menu"><br> <html><br> <head><br> <title>Shopping List</title><br> </head><br> <body><br> <xsl:apply-templates select="//ing"/><br> </body><br> </html><br> </xsl:template><br> <xsl:template match="//ing"><br> <li><br> Item:<br> </li><br> <xsl:for-each select="./item[generate-id()= generate-id(key('tempItem',item)[1])]"><br> <xsl:value-of select="./item"/><br> Count: <xsl:value-of select="count(/item=current())"/><br> Generated ID: <xsl:value-of select="generate-id(.)"/><br> </xsl:for-each><br> </xsl:template><br> <xsl:template match="*|text()"/><br> </xsl:stylesheet><br> <br> I have been pulling my hair out for days now over it can someone help me. Thanks to anyone who even has a go at it

Postnext
(Deleted User) Subject: XSTL help(debug)
Author: (Deleted User)
Date: 04 Oct 2005 02:37 PM
Try this:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:key name="tempItem" match="recipeml/menu/recipe/ingredients/ing" use="item"/>

<xsl:template match="/">
<xsl:apply-templates select="recipeml/menu"/>
</xsl:template>

<xsl:template match="menu">
<html>
<head>
<title>Shopping List</title>
</head>

<body>
<table width="100%" border="1">
<xsl:apply-templates select="//ing"/>
</table>

</body>
</html>
</xsl:template>

<xsl:template match="//ing">
<xsl:if test="generate-id()= generate-id(key('tempItem',item)[1])">
<tr>
<td>
<xsl:value-of select="./item"/>
</td>
<td>
<xsl:value-of select="sum(key('tempItem',item)/amt/qty)"/>
</td>
</tr>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

Postnext
Aaron JobSubject: XSTL help(debug)
Author: Aaron Job
Date: 05 Oct 2005 03:39 AM
thanks that was just what was needed, you would not be able to tell me what i got wrong though would you?

Postnext
(Deleted User) Subject: XSTL help(debug)
Author: (Deleted User)
Date: 05 Oct 2005 12:02 PM
In your original XLST you have to modify for-each :
<xsl:for-each select="item[generate-id(..)= generate-id(key('tempItem',.)[1])]">

key('tempItem',.) returns you "ing", so you have to use "ing" in both
generate-id() calls.
Inside the predicate [] the context node is "item", so you have to use
".." to get to the "ing"

Posttop
Aaron JobSubject: XSTL help(debug)
Author: Aaron Job
Date: 07 Oct 2005 07:13 PM
o ok i undrestand now. Thankyou very much for this.

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.