|
Subject: RE: [xsl] Show a column only if the total is not zero From: "Michael Kay" <mhk@xxxxxxxxx> Date: Tue, 18 May 2004 15:49:26 +0100 |
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: [xsl] 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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Show a column only if the, Mukul Gandhi | Thread | RE: [xsl] Show a column only if the, Andrew Welch |
| Re: [xsl] XSL checkbox, Adrian Popescu | Date | Re: [xsl] XSL checkbox, Joe Fawcett |
| Month |