This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Having trouble, please help...
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] Having trouble, please help...
- From: "Michael Kay" <mhkay at iclway dot co dot uk>
- Date: Tue, 10 Apr 2001 14:22:59 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
> I've got the following XSL template. I want to pass it four
> parameters. One
> for the ParentNode it should select, one for the CurrentNode
> to select, and
> two other text based values.
>
> I use the following code to implement the template:
>
> <xsl:call-template name="PrintRows">
> <xsl:with-param
> name="ParentNode">RetrieveNameAndAddressRSResponse</xsl:with-param>
> <xsl:with-param
> name="CurrentNode">NameAddress1</xsl:with-param>
> <xsl:with-param name="RowColor">#FFEBBF</xsl:with-param>
> <xsl:with-param name="DisplayText">Holder
> Name:</xsl:with-param>
> </xsl:call-template>
Let's be clear: you are not passing the node as a parameter, you are passing
its name, represented as a string.
>
> and the template looks like this:
>
> <xsl:apply-templates
> select="RetrieveNameAndAddressRSResponse/NameAddress1">
> </xsl:apply-templates>
> </font></td>
> <td bgcolor="#000066" width="5%"><br/></td>
> <td bgcolor="#FF9933" width="5%"><br/></td>
> </tr>
> </xsl:template>
>
> Now in the above example, everything is fine, but I need to
> replace the
> apply-templates line with something using the two parameters passed.
> Whenever I do
>
> <xsl:apply-templates select="$ParentNode">
>
> I get a "Reference to variable or parameter 'ParentNode' must
> evaluate to a node list"
>
Yes: because the value of the variable is a string, not a node[-set].
So long as you use simple names, you can use the construct
select=*[name()=$ParentNode]".
If you want to construct more complex expressions than simple names, you
need the xx:evaluate() extension function available in several products.
Mike Kay
Software AG
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list