RE: [xsl] Re: Can not convert #STRING to a NodeList! Error..

Subject: RE: [xsl] Re: Can not convert #STRING to a NodeList! Error..
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Sat, 8 Nov 2003 19:12:09 -0000
> 
> > In my child templates, I am retrieving using
> >     <xsl:param name="labelsfile"/>
> 
> This declares an xsl:param element named "labelsfile", whose 
> type is not node-set.
> 
> Therefore, any attempt to use this as a node-set (e.g. by 
> specifying it as the value of the "select" attribute of 
> xsl:for-each) will cause a compile-time error.
> 
> The solution is to declare the xsl:param in such a way so 
> that its type will also be specified to be node-set:
> 
>      <xsl:param name="labelsfile" select="/.."/>
> 
> This declares the xsl:param to be of type node-set and to 
> have as initial value the empty node-set (because the root 
> node does not have a parent). Now the compiler "knows" that 
> this xsl:param is of type node-set and will not raise a type error.
> 
I'm surprised at this explanation. XSLT 1.0 has no notion of the static
or compile-time type of a variable, all typing is done dynamically at
run-time. Declaring a default value for this parameter should make no
difference to anything unless the template is called without a
parameter.

The code we were shown looks perfectly OK to me.

Michael Kay


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


Current Thread