RE: [xsl] Can a named template return a node list?

Subject: RE: [xsl] Can a named template return a node list?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 16 Jun 2005 16:53:05 +0100
In XSLT 1.0, templates don't return anything, they write to the current
result tree (which might be the final result tree, or the contents of an RTF
in a variable). This means that if they produce nodes, the nodes are always
copies of nodes in the source, not references to original nodes.

This all changes with 2.0.

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

 

> -----Original Message-----
> From: John [mailto:john-xsl-list@xxxxxxxx] 
> Sent: 16 June 2005 15:25
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Can a named template return a node list?
> 
> Sorry in advance for my terminology.  Is it possible for a named 
> template to return a node list?  Here is some simplified XML 
> with which 
> I have been experimenting:
> 
> <root>
>    <node1 attr="node1attrval">
>      <node1a>node1atext</node1a>
>    </node1>
>    <node2 attr="node2attrval">
>      <node2a>node2atext</node2a>
>    </node2>
> </root>
> 
> And the XSL I have been trying:
> 
> <xsl:template match="*">
>    <xsl:variable name="somenode">
>      <xsl:call-template name="sometemplate" />
>    </xsl:variable>
>    <xsl:value-of select="$somenode/@attr" />
> </xsl:template>
> 
> <xsl:template name="sometemplate">
>    <xsl:copy-of select="/root/node1" />
> </xsl:template>
> 
> The reference to $somenode/@attr gives an error.  I think the 
> problem is 
> with copy-of - I want it to return a reference to a node, but 
> it seems 
> to return the value of the node.  Is there some other function or 
> approach I should try?  I have tried value-of and copy, and I 
> am hoping 
> to stay away from XSL extensions if possible.  I cannot use XSL 2.
> 
> Thanks,
> 
>     -John

Current Thread