By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,264 Members | 1,056 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,264 IT Pros & Developers. It's quick & easy.

Help with recursive sum

P: n/a
I've been having some issues with recursive summing and have been
unsuccessful at getting some of the solutions I've seen online to work.
I'm hoping that perhaps somebody in the newsgroup will be able to shed
some light on the issue.

I have the following XML:

<departmentStore>
<name>S-Mart</name>
<department>
<name>Electronics</name>
<section>
<name>Video Games</name>
<system>
<name>Xbox 360</name>
<manufacturer>Microsoft</manufacturer>
<price>$399.99</price>
<gameLibrary>
<game>
<name>Call of Duty 3</name>
<genre>Shooter</genre>
<publisher>Activision</publisher>
<developer>Treyarch</developer>
<price>$59.99</price>
</game>
<game>
<name>Fight Night Round 3</name>
<genre>Sports</genre>
<publisher>Electronic Arts</publisher>
<developer>EA Chicago</developer>
<price>$59.99</price>
</game>
<game>
<name>Rainbow Six Vegas</name>
<genre>Shooter</genre>
<publisher>Ubisoft</publisher>
<developer>Ubisoft Montreal</developer>
<price>$59.99</price>
</game>
<game>
<name>Viva Pinata</name>
<genre>Simulation</genre>
<publisher>Microsoft</publisher>
<developer>Rare</developer>
<price>$49.99</price>
</game>
</gameLibrary>
</system>
</section>
</department>
</departmentStore>

departmentStore, department, section, system, and gameLibrary all have
more children nodes than what are shown.

What I want to do is get the sum of all video game prices for a
specific system and display it when applying the template that matches
"system."

Any help would be very much appreciated. Thanks!

Nathaniel

Dec 27 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
The alMIGHTY N wrote:
I've been having some issues with recursive summing and have been
unsuccessful at getting some of the solutions I've seen online to work.
I'm hoping that perhaps somebody in the newsgroup will be able to shed
some light on the issue.

I have the following XML:

<departmentStore>
<name>S-Mart</name>
<department>
<name>Electronics</name>
<section>
<name>Video Games</name>
<system>
<name>Xbox 360</name>
<manufacturer>Microsoft</manufacturer>
<price>$399.99</price>
<gameLibrary>
<game>
<name>Call of Duty 3</name>
<genre>Shooter</genre>
<publisher>Activision</publisher>
<developer>Treyarch</developer>
<price>$59.99</price>
</game>
<game>
<name>Fight Night Round 3</name>
<genre>Sports</genre>
<publisher>Electronic Arts</publisher>
<developer>EA Chicago</developer>
<price>$59.99</price>
</game>
<game>
<name>Rainbow Six Vegas</name>
<genre>Shooter</genre>
<publisher>Ubisoft</publisher>
<developer>Ubisoft Montreal</developer>
<price>$59.99</price>
</game>
<game>
<name>Viva Pinata</name>
<genre>Simulation</genre>
<publisher>Microsoft</publisher>
<developer>Rare</developer>
<price>$49.99</price>
</game>
</gameLibrary>
</system>
</section>
</department>
</departmentStore>

departmentStore, department, section, system, and gameLibrary all have
more children nodes than what are shown.

What I want to do is get the sum of all video game prices for a
specific system and display it when applying the template that matches
"system."
Never store prices with the currency sign embedded, because they then
cease to be numbers and can't be manipulated easily in functions. Always
store the currency as an attribute of the price, using the standard
3-letter currency codes used by your bank (eg here possibly USD or CAD),
like <price currency="USD">49.99</price>
and only translate to a currency sign for purposes of display or print.
Then it's easy to write:

<xsl:template match="system">
<xsl:value-of select="sum(gameLibrary/game/price)"/>
</xsl:template>

If the data is not yours (ie you get given it), either persuade the
originators to do it right, or pass it through a filter which removes
the currency symbol or rewrites the document to use an attribute.

Motto: get the data model right to begin with, and everything else
pretty much falls into place. Get the data model wrong, and your project
is hosed before you start.

///Peter
--
XML FAQ: http://xml.silmaril.ie/
Dec 27 '06 #2

P: n/a
This can easily be done with FXSL.

Search for:

transform-and-sum
Cheers,
Dimitre Novatchev

"The alMIGHTY N" <na******@yahoo.comwrote in message
news:11**********************@79g2000cws.googlegro ups.com...
I've been having some issues with recursive summing and have been
unsuccessful at getting some of the solutions I've seen online to work.
I'm hoping that perhaps somebody in the newsgroup will be able to shed
some light on the issue.

I have the following XML:

<departmentStore>
<name>S-Mart</name>
<department>
<name>Electronics</name>
<section>
<name>Video Games</name>
<system>
<name>Xbox 360</name>
<manufacturer>Microsoft</manufacturer>
<price>$399.99</price>
<gameLibrary>
<game>
<name>Call of Duty 3</name>
<genre>Shooter</genre>
<publisher>Activision</publisher>
<developer>Treyarch</developer>
<price>$59.99</price>
</game>
<game>
<name>Fight Night Round 3</name>
<genre>Sports</genre>
<publisher>Electronic Arts</publisher>
<developer>EA Chicago</developer>
<price>$59.99</price>
</game>
<game>
<name>Rainbow Six Vegas</name>
<genre>Shooter</genre>
<publisher>Ubisoft</publisher>
<developer>Ubisoft Montreal</developer>
<price>$59.99</price>
</game>
<game>
<name>Viva Pinata</name>
<genre>Simulation</genre>
<publisher>Microsoft</publisher>
<developer>Rare</developer>
<price>$49.99</price>
</game>
</gameLibrary>
</system>
</section>
</department>
</departmentStore>

departmentStore, department, section, system, and gameLibrary all have
more children nodes than what are shown.

What I want to do is get the sum of all video game prices for a
specific system and display it when applying the template that matches
"system."

Any help would be very much appreciated. Thanks!

Nathaniel

Dec 28 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.