[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Show a column only if the total is not zero

Subject: RE: Show a column only if the total is not zero
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Tue, 18 May 2004 15:49:26 +0100
xslt column
If you're not worried about performance then this is a doddle. I'll give the
schema-aware XSLT 2.0 version and leave you to retrofit it:

<xsl:template match="person/element(*, xs:decimal)
                     [sum(../../person/*[name()=name(current())]) != 0]">
<td><xsl:value-of select="."/></td>
</xsl:template>

That's a template that matches all children of <person> whose schema type is
xs:decimal. You need another version (that does nothing) for the case where
the total is zero.

(There's another 2.0 dependency buried in here, by the way: current() is not
allowed in 1.0 match patterns.)

However, this calculates the total amount of overtime once for each record,
which is O(n^2). To do better than this, calculate the totals first, and
pass a list of the names of excluded elements (in 1.0 you could represent
this list as a space-separated string) as a parameter to each of the
templates.

Michael Kay

   

> -----Original Message-----
> From: Richard Huxtable [mailto:huxtabler@xxxxxxxxx] 
> Sent: 18 May 2004 13:10
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Show a column only if the total is not zero
> 
> The costs on a project look like this.
> 
> <person>
>    <name>Adam</name>
>    <fees>134.25</fees>
>    <overtime>0.00</overtime>
>    <travel>39.25</travel>
> </person>
> <person>
>    <name>Brian</name>
>    <fees>172.50</fees>
>    <overtime>0.00</overtime>
>    <travel>52.75</travel>
> </person>
> <person>
>    <name>Chris</name>
>    <fees>103.75</fees>
>    <overtime>0.00</overtime>
>    <travel>0.00</travel>
> </person>
> 
> I would like the report on the project to look like this.
> 
> name		fees		travel
> Adam		134.25		39.25
> Brian		172.50		52.75
> Chris		103.75		0.00
> Total		410.50		92.00
> 
> There was no overtime on this project so I don't want it 
> shown. I should
> be most grateful for any suggestions on the best way to show 
> the columns
> where the total is not zero. (In practice I have more than 3 types of
> cost.) 
> Many thanks.

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.