|
Subject: Re: [xsl] Nodes and Strings From: andrew welch <andrew.j.welch@xxxxxxxxx> Date: Tue, 26 Jul 2005 09:04:24 +0100 |
> >I have two sets that I need to compare but the values aren't the same.
> >Example:
> >
> ><setA>
> > <element>value1</element>
> > <element>value2</element>
> > <element>value3</element>
> > <element>value4</element>
> > <element>value5</element>
> ></setA>
> >
> ><setB>
> > <element>aStringBeforeValue.value1</element>
> > <element>aStringBeforeValue.value2</element>
> > <element>aStringBeforeValue.value3</element>
> ></setB>
> >
> >expected result (for intersection between the sets):
> >
> ><setC>
> > <element>value1</element>
> > <element>value2</element>
> > <element>value3</element>
> ></setC>
> >
> >I want to get the intersection (difference, whatever) between two sets
> >that haven't the same string values for their elements... (I didn't
> >found a function like substring, for example, that receives as
> >parameter
> >a node list... only for strings... So, I'm resolving this problem with
> >a
> >little bit long and confused code.)
> >Is it possible?
Here's a potential XSLT 2.0 solution:
<xsl:template match="/">
<setC>
<xsl:copy-of select="for $a in //setA/element return
for $b in //setB/element return
if (contains($b, $a)) then $a else ''"/>
</setC>
</xsl:template>
I think there is probably a better one, one which doesn't involve the
if then else, and which won't produce duplicates (if that is the
requirement).
A 1.0 solution would be a pair of nested for-each's which check each
element in set A against each element in set B - the same as above but
in long hand really.
cheers
andrew
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Nodes and Strings, Aron Bock | Thread | Re: [xsl] Nodes and Strings, Joris Gillis |
| Re: [xsl] Save the sorted xml in a , Mukul Gandhi | Date | Re: [xsl] Removing duplicates in Me, Emmanouil Batsis |
| Month |