Re: [xsl] Q: Passing constructed elements as parameters

Subject: Re: [xsl] Q: Passing constructed elements as parameters
From: george.fink@xxxxxxx
Date: Wed, 31 Jan 2001 11:44:48 -0800
> 
> 
>    Hi, I'm trying to do something like:
> 
>    <xsl:apply-template>
>      <xsl:with-param name="foo">
>        <xsl:element name="bar"> ... </xsl:element>
>      </xsl:with-param>
>    </xsl:apply-template>
> 
>    <xsl:template>
> assuming you mean <xsl:template match="xxx"> here
> 
>      <xsl:param name="foo"/>
>      <xsl:for-each select="$foo/bar"/>
>    </xsl:template>
> 
>    But something seems to be lost in the translation.  Is there some conversion 
>    step I'm missing?
> 
>    --George
> 
> 
> if the xxx element that matches the second template is a direct
> child of the template that has the apply-templates code at the top
> then it will see the seting of the foo parameter. (otherwise it won't as
> parameters are not passed on by default)
> 
> However if you go
> 
> <xsl:with-param name="foo">
>  ....
> </xsl:with-param>
> 
> rather than
> 
> <xsl:with-param name="foo" select="..."/>
> 
> 
> then $foo wilkl be a result tree fragment rather than a node set,
> so you can not query into it with  <xsl:for-each select="$foo/bar"/>
> 
> It's not clear from what you've posted whether you want to use th e
> <xsl:with-param name="foo" select="..."/> for and have $ foo
> being a set of nodes in the input document, or whether you did intent to 
> construct a new node set, in which case you processor may have a
> node-set() extension function, used as
> 
>  <xsl:for-each select="xt:node-set($foo)/bar"/>
> 

The intent was to have it be a node set so I can query it with $foo/bar, or do 
a apply-templates on it if I need to.

So the node-set function isn't a standard, I'm using xalan right now, if its 
not there I guess I need to change engines.

Thanks for your help.

--George


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread