Subject: RE: Reference to variable cannot be resolved.
From: "Martinez, Brian" <brian.martinez@xxxxxxxx>
Date: Thu, 13 Feb 2003 11:37:45 -0700
|
> From: Imrran Wahid [mailto:devguy2003@xxxxxxxxx]
> Sent: Thursday, February 13, 2003 11:19 AM
> Subject: Reference to variable cannot be resolved.
>
> I get the following error when attempting to transform
> an xml using IE 6.
>
> "A reference to variable or parameter 'ItemAStruct'
> cannot be resolved. The variable or parameter may not
> be defined, or it may not be in scope."
>
> Here's a snippet from my xsl:
> <xsl:template match="/">
> <html>
> <body bgcolor="#B0C4DE">
> <xsl:variable name="ItemAStruct"
> select="document('lookup.xml')/TableStructures/ItemA"/>
>
> <xsl:apply-templates select="//Content/ItemAs" />
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="ItemAs">
> <xsl:variable name="ItemAs" select="."/>
> <!-- process each ItemA element from lookup.xml -->
> <tr>
> <xsl:for-each select="$ItemAStruct">
> <xsl:variable name="ItemName"
> select="string(name(.))"/>
> <xsl:if test="count($ItemAs/*[name(.)=$ItemName])
> > 0">
> <th><xsl:value-of select="$ItemName"/></th>
> </xsl:if>
> </xsl:for-each>
> </tr>
> </xsl:template>
> </xsl:stylesheet>
>
>
> Can anyone spot the culprit?
It's a scope issue: $ItemAStruct exists only within its local template, so
your matching template can't "see" it.
You have two options: make $ItemAStruct a global variable (i.e., move its
xsl:variable declaration outside your templates), or better yet, pass it as
a parameter:
<xsl:apply-templates select="//Content/ItemAs">
<xsl:with-param name="ItemAStruct"
select="document('lookup.xml')/TableStructures/ItemA"/>
</xsl:apply-templates>
<xsl:template match="ItemAs">
<xsl:param name="ItemAStruct"/>
<!-- rest of code -->
</xsl:template>
hth,
b.
| brian martinez brian.martinez@xxxxxxxx |
| senior gui programmer 303.708.7248 |
| trip network, inc. fax 303.790.9350 |
| 6436 s. racine cir. englewood, co 80111 |
| http://www.cheaptickets.com/ http://www.trip.com/ |
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|