From: "Andrew Welch" <awelch(_at_)piper-group(_dot_)com>
Date: Mon, 14 Oct 2002 10:39:58 +0100
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: RE: [xsl] Error xsl:param may not be used here
The problem is that your <xsl:param> is wrongly
placed.<xsl:param> is a top
level element ie, child of <xsl:stylesheet> element or if it is in a
template then it must be the immediate child of the
<xsl:template> element.
so in your case, because you have an <xsl:variable> element
before the
<xsl:param> element, its reporting the error message.
Thats interesting - saxon 6.5.2 allows this (as stated msxml doesnt).
This is a known bug in Saxon 6.5.2 - it shouldn't be allowed.
The specs says:
11.5 "As well as being allowed at the top-level, both xsl:variable and
xsl:param are also allowed in templates. xsl:variable is allowed
anywhere within a template that an instruction is allowed. In this case,
the binding is visible for all following siblings and their descendants.
Note that the binding is not visible for the xsl:variable element
itself. xsl:param is allowed as a child at the beginning of an
xsl:template element. In this context, the binding is visible for all
following siblings and their descendants. Note that the binding is not
visible for the xsl:param element itself."
Has this followed through into xslt 2.0 as its not mentioned in the
draft?
The content model is unchanged in 2.0:
<xsl:template
match = pattern
name = qname
priority = number
mode = tokens>
<!-- Content: (xsl:param*, content-constructor) -->
</xsl:template>
Michael Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list