[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Using contains with more than one string - XSLT2.0
Beautiful! Did not know about that one. Many thanks, that appears to work perfectly :) Michele -----Original Message----- From: David Sewell dsewell@xxxxxxxxxxxx [mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx] Sent: Wednesday, January 28, 2015 3:36 PM To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx' Subject: Re: Using contains with more than one string - XSLT2.0 If you're using XSLT 2, the function you want is matches() rather than contains(). That allows you to use regular-expression syntax to express a choice of strings to match. In this case you want <xsl:for-each select="//dsc//unittitle[matches(normalize-space(.),'Photo|Neg')] or you can put the regular expression in your $target variable, so that simply replacing "contains" with "matches" in your code below will work. matches() is a lot more powerful than contains() because of its support for regular expressions and case insensitivity (among other things). David S. On Wed, 28 Jan 2015, Michele R Combs mrrothen@xxxxxxx wrote: > I've done some googling on this but nothing seems quite to match what I want to do. > > At the top of my style sheet I have this: > > <xsl:variable name="target" select="'Photo'"/> > > Then later I do this to find all titles with that string in them: > > <xsl:for-each > select="//dsc//unittitle[contains(normalize-space(.),$target)]"> > > So far so good, works great. The problem comes when I want to tell the contains function to match on any one of several strings, e.g. Photo or Neg or Film. So far I have tried the following but none of them work: > > <xsl:variable name="target" select="'Photo|Neg'"/> > <xsl:variable name="target" select="'Photo'|'Neg'"/> > <xsl:variable name="target" select="'Photo' or 'Neg'"/> > <xsl:variable name="target" select="'Photo Neg'"/> > > If I must, I can stick the or'ed terms directly in the contains function rather than using a variable, but when I tried a few variations on that, they didn't work either. > > Thanks > > Michele > +++++++++++++++ > Michele Combs > Lead Archivist > Special Collections Research Center > Syracuse University Libraries > 315-443-2081 > mrrothen@xxxxxxx > scrc.syr.edu > > -- David Sewell, Editorial and Technical Manager ROTUNDA, The University of Virginia Press PO Box 400314, Charlottesville, VA 22904-4314 USA Email: dsewell@xxxxxxxxxxxx Tel: +1 434 924 9973 Web: http://rotunda.upress.virginia.edu/
|
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
|