RE: [xsl] "fetching" elements by name with a tokenized list of names

Subject: RE: [xsl] "fetching" elements by name with a tokenized list of names
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 16 Feb 2007 09:54:36 -0000
The context changes inside a predicate, so "." inside [] is not normally the
same thing as "." outside the []. "*[name()=.]" selects elements whose name
is the same as their string-value.

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

> -----Original Message-----
> From: Georges Schmitz [mailto:georges.schmitz@xxxxxxxxx] 
> Sent: 16 February 2007 09:47
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] "fetching" elements by name with a tokenized 
> list of names
> 
> I don't have a clue why this one works:
> 
>   <xsl:for-each select="tokenize($extract.element,';')">
>     <xsl:variable name="name" select="."/>
>     <xsl:copy-of select="$annex/*[name()=$name]"/>
>   </xsl:for-each>
> 
> and this one not:
> 
>   <xsl:for-each select="tokenize($extract.element,';')">
>     <xsl:copy-of select="$annex/*[name()=.]"/>
>   </xsl:for-each>
> 
> tokenize() delivers a sequence of string tokens, so what 
> makes the difference between referring to a string token in 
> <xsl:for-each> by "."
> directly (the latter) or by using an intermediary variable 
> (the first case)?
> 
> Thanks for clearing this to me,
> Georges

Current Thread