Subject: RE: "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: "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
|