| 
 
Subject: Re: [xsl] processin each element not on a list From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Sat, 5 Oct 2002 13:36:24 +0100  | 
Hi Dan,
> I have xml in substantially the following form:
>
> <root>
>  <choices>
>   <choice>A</choice>
>   <choice>B</choice>
>   <choice>C</choice>
>   <choice>D</choice>
>  </choices>
>  <items>
>   <item id="1">A</item>
>   <item id="2">X</item>
>   <item id="3">B</item>
>   <item id="4">C</item>
>   <item id="5">Y</item>
>   <item id="6">Z</item>
>  </item>
> </root>
>
> I need to process each item where its content is not one of the
> choice values. I need a very efficient solution since I have say
> up to 10,000 <items>s and perhaps 100 difference <choice>'s. 
OK, then I think you should set up a key on the choices so that, given
an item value, you can quickly see whether it's on the list of choices
by looking up the key:
<xsl:key name="choices" match="choice" use="." />
Then, in order to select all the items whose content is *not* one of
the choice items, you can find those items that don't return a node
when you use the key to do the lookup:
  /root/items/item[not(key('choices', .))]
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] processin each element not on, Dan Diebolt | Thread | Re: [xsl] processin each element no, Joerg Heinicke | 
| Re[2]: [xsl] how print number from , Андрей Солончук | Date | Re: [xsl] processin each element no, Joerg Heinicke | 
| Month |