[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Only selectingn first occurance?


Subject: RE: [xsl] Only selectingn first occurance?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 18 Oct 2007 22:32:42 +0100

In XSLT 1.0, when you supply a node-set to a function or an instruction that
expects a string (for example xsl:value-of or concat()), you get the string
value of the first node in the set.

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

> -----Original Message-----
> From: Dan Vint [mailto:dvint@xxxxxxxxx] 
> Sent: 18 October 2007 20:37
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Only selectingn first occurance?
> 
> I don't think this is the problem, or maybe it is but 
> manifested in a different way. What I'm trying to do is get 
> one long string of several different types of targets, so my 
> real variable is defined like this:
> 
> <xsl:variable name="builds" 
> select="concat(/project/target[@name='all']/@depends,
> 
> ' ', /project/target[@name='books']/@depends,
> 
> ' ', /project/target[contains(@name, 'stuff')]/@depends, ' ', 
> /project/target[@name='plugins']/@depends,
> 
> ' ', /project/target[@name='help']/@depends
> 
> )"/>
> 
> When I use the value of this builds variable, I get a list of 
> something from all and the one item from the contains. Maybe 
> I need to switch to a key and use that instead?
> 
> ..dan
> 
> --------------------------------------------------------------
> -------------
> Danny Vint
> 
> Specializing in Panoramic Images of California and the West 
> http://www.dvint.com
> 
> Voice:510:522-4703
> FAX: 801-749-3229
> 
> On Thu, 18 Oct 2007, Steve wrote:
> 
> > Try looping through your variable to see if it really only 
> contains 1 node?
> >
> > On 10/18/07, Joe Fawcett <joefawcett@xxxxxxxxxxx> wrote:
> >> ----- Original Message -----
> >> From: "Dan Vint" <dvint@xxxxxxxxx>
> >> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> >> Sent: Thursday, October 18, 2007 7:30 PM
> >> Subject: [xsl] Only selectingn first occurance?
> >>
> >>
> >>> I have the following variable defintion:
> >>> <xsl:variable name="builds"
> >>>  select="/project/target[contains(@name, '_stuff')]/@depends"/>
> >>>
> >>> If I use this in Stylus studio and use the XPath evaluator, the 
> >>> XPath gives me all instances of the Ant targets where the name 
> >>> attribute has _stuff as part of the name. But when I use 
> this this 
> >>> as part of my stylesheet, I only get the first occurance.
> >>>
> >>> Here is the contents of the variable:
> >>>
> >>> "common92, confgwiz92, smart_update92, tempbuild92"
> >>>
> >>> And this is the XPath evaluator window results, it shows 
> 4 hits on 
> >>> this path with results of
> >>>
> >>> common92 configwiz92 smart_update92 tempbuild92
> >>>
> >>> common100 common100_smart_update
> >>>
> >>> wli92 wlibc92 adminhelp92 ...
> >>>
> >>> wli102-alint wli102 wlibc102 ....
> >>>
> >>> How do I change the <xsl:variable> to find the content of all the 
> >>> targets and not just the first one?
> >>>
> >>> ..dan
> >>>
> >>> 
> --------------------------------------------------------------------
> >>> -------
> >>> Danny Vint
> >>>
> >>> Specializing in Panoramic Images of California and the West 
> >>> http://www.dvint.com
> >>>
> >>
> >> Why do you think it's only selecting the first attribute?
> >> If you use xsl:value-of to show the result it will only show the 
> >> first node in the variable.
> >> Show how you are using $builds.
> >>
> >> Joe
> >> http://joe.fawcett.name


Current Thread
Keywords