|
Subject: RE: [xsl] Error xsl:param may not be used here From: "Andrew Welch" <awelch@xxxxxxxxxxxxxxx> Date: Mon, 14 Oct 2002 10:26:02 +0100 |
><xsl:when test="not(string-length($graph/@type) = 0)">
Here you are treating the variable $graph as a nodeset, when it is only
a string.
<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>
You can just drop $graph here and use @type on its own, as the current
node will always be '.'
I understand this is a fictional example, but wouldnt you just need:
<xsl:template name="drawGraph">
<xsl:choose>
<xsl:when test="string-length(@type)">
<xsl:value-of select="@type" />
</xsl:when>
<xsl:otherwise>x-y</xsl:otherwise>
</xsl:choose>
</xsl:template>
This will produce the same results as the above template.
cheers
andrew
> -----Original Message-----
> From: Ryan Beesley [mailto:RBeesley@xxxxxxxxxxxx]
> Sent: 14 October 2002 09:42
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Error xsl:param may not be used here
>
>
> 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 publically 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 probibly 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
>
>
>
> ---
> 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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Error xsl:param may not b, Ryan Beesley | Thread | Re: [xsl] Error xsl:param may not b, Ryan Beesley |
| Re: [xsl] Outputting from more than, Joerg Heinicke | Date | [xsl] Hierearchy navigation in XSL, Scott Bronson |
| Month |