|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Nodes and Strings
> >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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








