Subject: RE: Error xsl:param may not be used here
From: "Andrew Welch" <awelch@xxxxxxxxxxxxxxx>
Date: Mon, 14 Oct 2002 10:39:58 +0100
|
> 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).
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?
cheers
andrew
> -----Original Message-----
> From: Vasu Chakkera [mailto:vasucv@xxxxxxxxxxx]
> Sent: 14 October 2002 10:08
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: Error xsl:param may not be used here
>
>
> Ryan,
> 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.
>
>
> >From: "Ryan Beesley" <RBeesley@xxxxxxxxxxxx>
> >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx>
> >Subject: Error xsl:param may not be used here
> >Date: Mon, 14 Oct 2002 03:46:46 -0500
> >
> >Repost: Sorry, I posted the first message as a reply...
> >
> >I know that this error has been addressed on this list
> before, but I don't
> >think it has been answered in this context.
> >
> >I have been working on a set of svg graphing (xslt)
> utilities that I'd like
> >to make publicly available once my senior design project is
> complete, but
> >I've run into a slight snag. I wanted to be able to
> customize different
> >parameters in multiple ways. Below is listed a small
> segment of my xml and
> >xslt.
> >
> >---- graph.xml ----
> ><?xml version="1.0" encoding="UTF-8"?>
> ><graph type="pie">
> > <!-- Graph data goes here -->
> ></graph>
> >
> >---- graph.xslt ----
> ><?xml version="1.0" encoding="UTF-8"?>
> ><xsl:stylesheet version="1.0"
> >xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > <xsl:output method="xml" version="1.0" encoding="UTF-8"
> indent="yes"/>
> >
> > <xsl:template match="graph">
> > <xsl:call-template name="drawGraph">
> > <!-- Optional parameters to alter graph -->
> > <xsl:with-param name="type" select="'bar'"/>
> > </xsl:call-template>
> > </xsl:template>
> >
> > <xsl:template name="drawGraph">
> > <xsl:variable name="graph" select="." />
> > <xsl:param name="type">
> > <xsl:choose>
> > <xsl:when test="not(string-length($graph/@type) = 0)">
> > <xsl:value-of select="$graph/@type" />
> > </xsl:when>
> > <xsl:otherwise>x-y</xsl:otherwise>
> > </xsl:choose>
> > </xsl:param>
> > <type>
> > <xsl:value-of select="$type"/>
> > </type>
> > </xsl:template>
> >
> ></xsl:stylesheet>
> >
> >---- output.xml ----
> ><?xml version="1.0" encoding="UTF-8"?>
> ><type>bar</type>
> >
> >Although you would probably never include a parameter in
> both the calling
> >template and the xml data, I have included both to
> demonstrate the use.
> >The
> >passed template param should win however. When evaluating
> this with XML
> >Spy, in debug mode, it works exactly as I want it too. I
> can change the
> >value of @type either while calling the template, or
> directly from the xml
> >data. If neither parameter was provided, the template
> assumes a default.
> >
> >Xalan and MSXML fail completely. If I place my params
> inside the choose,
> >then they aren't recognized, as should be, but it doesn't
> seem to like my
> >nested choose for the param either. I suspect that this
> structure is the
> >source of my error: xsl:param may not be used here.
> >
> >If anyone has suggestions as to how I can make this work,
> I'm always eager
> >to learn. I believe I could use a variable to make this
> work, but then I
> >wouldn't be able to change it from the template, right?
> >
> >Ryan Beesley
> >Rbeesley@xxxxxxxxxxxx
> >Founder, Atum Innovations
> >
> >
> >
> > XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
_________________________________________________________________
MSN Photos is the easiest way to share and print your photos:
http://photos.msn.com/support/worldwide.aspx
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|