xsl-list
[Top] [All Lists]

Re: concat all items in a sequence

2005-08-30 13:41:27
Before there was XPath 2.0 there were the FXSL functions/templates:

  someTrue()

and

 someTrueP()


Cheers,
Dimitre Novatchev

On 8/31/05, Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:
I'm using the following:

contains(elem, val)

It's possible that 'elem' can be a sequence of more than one item.

The way I've code around this is to use string-join with an empty
string as one of the arguments:

contains(string-join(for $i in elem return $i, ''), val)

Is there a better way?

1. The expression

    for $i in elem return $i

  can be rewritten as

    elem

  So you get

    contains(string-join(elem, ''), val)

2. Do you want to match substrings that cross item boundaries, e.g. do you
want contains(('red', 'green'), 'edgr') to be true? If so, I don't think you
can do better than the above. If you don't want this, then apply contains to
each string in the sequence separately:

  exists(elem[contains(., val)])

Michael Kay
http://www.saxonica.com/



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




-- 
Cheers,
Dimitre Novatchev
---------------------------------------
Harry did not ask how Dumbledore knew; ...but Harry had long since
learned that bangs and smoke were more often the marks of ineptitude
than expertise.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>