RE: [xsl] Dynamic dispatch of functions/templates (was matching text() )

Subject: RE: [xsl] Dynamic dispatch of functions/templates (was matching text() )
From: "David Lee" <dlee@xxxxxxxxxxx>
Date: Thu, 23 Dec 2010 12:28:09 -0500
I think I shall have a hard time explaining the use case without writing
stretching the patience of this list.
Your idea is interesting.

<xsl:variable name="temp">
<xsl:for-each select="text()"><xsl:value-of select="."/></xsl:for-each>
<xsl:apply-templates select="$temp/text()"/>

Question: will this preserve the context in $temp ?
That is, suppose I'm in a template like

<xsl:template match="/FOO/BAR">

Then execute the above.
Would it match only 

<xsl:template match="/FOO/BAR/text()"> 

And match it only once ?


(say and not

<xsl:template match="/SPAM/BAR/text()">



Also it *looks like* $temp above becomes a sequence, not a single text node
(Or am I reading too much XQuery into this ?)

Thanks for your patience.

David A. Lee

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx] 
Sent: Thursday, December 23, 2010 11:46 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Dynamic dispatch of functions/templates (was matching
text() )

On 23/12/2010 14:37, David Lee wrote:
> Still thinking how to change
>              <xsl:apply-templates select="text()"/>
>              .
> <xsl:template match="some_xpath/text()">
> ..
> Into something where the text is concatenated in the face of PI's or
> comments.
It sounds as if there's a back-story to this one which perhaps I should 
have been following, but on the face of it, you can simply do

<xsl:variable name="temp">
<xsl:for-each select="text()"><xsl:value-of select="."/></xsl:for-each>
<xsl:apply-templates select="$temp/text()"/>

perhaps with a mode.

I don't really follow the logic of how your stated requirement leads to 
a need for dynamic despatch.

Michael Kay

Current Thread