xsl-list
[Top] [All Lists]

RE: Filtering using list of params (Subtree creation?)

2003-11-19 09:30:25

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...

<root>
        <store location="london">
                <staff>100</staff>
        </store>
        <store location="new york">
                <staff>200</staff>
        </store>
        <store location="paris">
                <staff>50</staff>
        </store>
        <store location="madrid">
                <staff>25</staff>
        </store>
        <store location="tokyo">
                <staff>125</staff>
        </store>
</root>


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(_at_)onebox(_dot_)com - 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