Subject: Re: [xsl] concat all items in a sequence|
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Wed, 31 Aug 2005 06:41:27 +1000
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@xxxxxxxxxxxx> 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/ > > -- 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.