|
Subject: RE: RE: [xsl] Filtering using list of params (Subtree creation?) From: cknell@xxxxxxxxxx Date: Wed, 19 Nov 2003 13:19:48 -0500 |
The easiest way to solve this is to restructure the XML, if possible. Then your input could look like this:
<root>
<europe>
<store location="london">
<staff>100</staff>
</store>
<store location="paris">
<staff>50</staff>
</store>
<store location="madrid">
<staff>25</staff>
</store>
</europe>
<north-america>
<store location="new york">
<staff>200</staff>
</store>
</north-america>
<asia>
<store location="tokyo">
<staff>125</staff>
</store>
</asia>
</root>
And summing any particular group is easy the the XLST sum() function:
<xsl:template match="/root">
<xsl:variable name ="staffing" select="sum(europe/store/staff)" />
<xsl:value-of select="$staffing" />
</xsl:template>
If you can't get the producer of the XML to group the data like this, we'll have to try another approach.
--
Charles Knell
cknell@xxxxxxxxxx - email
-----Original Message-----
From: Chris Ward <cward@xxxxxxxxxxxxxxxxxxx>
Sent: Wed, 19 Nov 2003 16:30:25 -0000
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject: RE: [xsl] Filtering using list of params (Subtree creation?)
Thanks Charles. However, if fear that the <xsl:choose> solution (below)
would move the problem I'm having into the other named templates.
Specifically the "euro" template which should do a SUM() on a selection
-
but not all - stores.
I'll try to better summarse my problem...
Given...
How can I do something along the lines of
SUM( staff for london, madrid, paris )
where the list of locations is dynamic (possibly in a separate XML
document).
I don't know if this makes it any clearer.
Regards,
Chris
> >
> > I want to know if there is a preferred method of filtering out
> > multiple parts of a large XML using some form of parameter
> > list/document.
>
> I suggest two possible approaches, neither of which is what
> you describe:
>
> 1) Create a stylesheet for each view and select the
> appropriate one based on values from the query string of the
> submitting page.
>
> 2) Create a "view" parameter in single stylesheet with a
> large <xsl:choose> section. Then create individual named
> templates to be called based on the value of the view
> parameter as determined in the <xsl:choose>. Like this:
>
> <xsl:param name="view" />
>
> <xsl:template match="/">
> <xsl:choose>
> <xsl:when test="$view = 'global'>
> <xsl:call-template name="global" />
> </xsl:when>
> <xsl:when test="$view = 'euro'>
> <xsl:call-template name="euro" />
> </xsl:when>
> <xsl:when test="$view = 'london'>
> <xsl:call-template name="london" />
> </xsl:when>
> <xsl:when test="$view = 'new york'>
> <xsl:call-template name="new-york" />
> </xsl:when>
> <xsl:when test="$view = 'paris'>
> <xsl:call-template name="paris" />
> </xsl:when>
> <xsl:when test="$view = 'madrid'>
> <xsl:call-template name="madrid" />
> </xsl:when>
> <xsl:when test="$view = 'tokyo'>
> <xsl:call-template name="tokyo" />
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="not-authorized" />
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> --
> Charles Knell
> cknell@xxxxxxxxxx - email
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Variables, G. Ken Holman | Thread | RE: RE: [xsl] Filtering using list , Chris Ward |
| RE: [xsl] Finding total hours betwe, G. Ken Holman | Date | Re: [xsl] Variables, G. Ken Holman |
| Month |