Re: [xsl] SET-INTERSECTION function/template for sequences

Subject: Re: [xsl] SET-INTERSECTION function/template for sequences
From: mark bordelon <markcbordelon@xxxxxxxxx>
Date: Sat, 4 Jul 2009 10:22:16 -0700 (PDT)
Dear Martin,

I am glad I mentioned the actual objective I was trying to achieve instead of
just asking for how to implement my imagined solution. Your solution equating
the sequnces themselves solves my problem. I had no idea you could do that.
To answer your question:
> I don't understand why you put exists() into a match
> attribute. That attribute is supposed to take a pattern, not
> an abitrary XPath expression.
I was hoping that the match attribute, if it evaluated to a boolean, would
match on true and not on false.

By the way, I would still like to implement the set operators for sequences,
just as an XSL exercise to get to know the sequences better.


Mark


--- On Sat, 7/4/09, Martin Honnen <Martin.Honnen@xxxxxx> wrote:

> From: Martin Honnen <Martin.Honnen@xxxxxx>
> Subject: Re: [xsl] SET-INTERSECTION function/template for sequences
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Saturday, July 4, 2009, 10:05 AM
> mark bordelon wrote:
>
> > I am trying to implement in XSL a *set-intersection*
> "function" in the form of a template. It should accepts two
> sequence parameters and return a sequence parameter. The
> application for this function will be to argument values
> that contain space delimited lists like this:
> >
> > XML:
> > <skill category="database software">oracle
> pl-sql package functions and stored
> procedures</skill>
> >
> > XSL: (test "database software" for any match in
> "database sysadm")
> > <xsl:template match="
> >   exists(
> >     setintersect(   
>    tokenize(skill/@category,' '), 
>      tokenize('database sysadm',' ')
> >     )   )
> > ">
>
> I don't understand why you put exists() into a match
> attribute. That attribute is supposed to take a pattern, not
> an abitrary XPath expression.
>
> As for the expression
>
>   exists(setintersect(
>     tokenize(skill/@category, ' '),
>     tokenize('database sysadm', ' ')
>   ))
>
> when you test
>
>   tokenize(skill/@category, ' ') =
>   tokenize('database sysadm', ' ')
>
> then that expression gives true if at least one item in the
> left sequence is the same as one item in the right sequence
> so that seems to check what you want to check with your
> exists expression.
>
> --
>     Martin Honnen
>     http://msmvps.com/blogs/martin_honnen/

Current Thread