Subject: RE: Problems selecting the right nodes.
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 25 Sep 2003 23:49:33 +0100
|
This needs just a minor variation on Muenchian grouping. Define a key on
service/@id, and run through all the service elements, outputting the
element if (a) it is the first one with that key value (standard
Muenchian test) and (b) count(key(...)) != count(/*/branch).
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Adam van den Hoven
> Sent: 25 September 2003 17:26
> To: XSL Mailing List
> Subject: Problems selecting the right nodes.
>
>
> I have a nodeset or arbitrary length that contains a set of
> tags which
> look something like:
>
> <branch id="br1">
> <service id="service1" />
> <service id="service2" />
> <service id="service3" />
> </branch>
> <branch id="br2">
> <service id="service1" />
> <service id="service4" />
> </branch>
>
> Now what I want is a nodeset that contains (uniquely) all the
> services
> that do not occur in all the branches. In this case I want
> service 2, 3
> and 4 but not 1
>
> My original solution was iffy. I ended up creating a tokenized string
> ("Service2|Service3|Service4" in this case) which I then ran
> through a
> recursive named template which did a lot of substring-before and
> substring-after. Since what I cared about are the ids, that was fine.
> However, the input file is occasionally very large so this can take a
> very long time. I want to find a better solution.
>
> If possible, I think I'd like to avoid using extension
> functions, unless
> there is an obvious performance boost.
>
> Any thoughts?
> Adam
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|