|
Subject: Re: Variables within templates From: David Carlisle <davidc@xxxxxxxxx> Date: Thu, 14 Oct 1999 17:48:43 +0100 (BST) |
> So, if a variable should be visible "for all following siblings and their
> descendants." why I am getting the error?
because that refers siblings and descendants of the <xsl:variable>
element in the XML tree of the stylesheet.
so in here
<xsl:for-each select="invoices/invoice">
<xsl:variable name="language" select="@xml:lang" />
<xsl:apply-templates />
</xsl:for-each>
the variable scope applies only to the <xsl:apply-templates element
(so you could have used $langauge in a select expression on that
element)
but that is all. The other templates are not in this scope.
If you want to pass information down the recursive apply-templates call,
then you need to make it a parameter to the templates
<xsl:for-each select="invoices/invoice">
<xsl:apply-templates>
<xsl:with-param name="language" select="@xml:lang" />
</xsl:apply-templates>
</xsl:for-each>
and declare language to be a param of any templates that need to use it.
However it is probably simpler in this case not to pass this information
down via a parameter, and just go back up the tree to get the
information when you need it. that is
<xsl:for-each select="invoices/invoice">
<xsl:apply-templates />
</xsl:for-each>
and then
<xsl:template match="invoice_number">
<xsl:value-of select="/invoices/translations/invoice_no
[@xml:lang= current()/../@xml:lang]" />
: <xsl:value-of select="." />
</xsl:template>
David
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Variables within templates, Denis . Avdonine | Thread | RE: Nostradamus (was Re: FO. lists , Kay Michael |
| Re: Nostradamus (was Re: FO. lists , James Tauber | Date | Re: Nostradamus (was Re: FO. lists , Simon St.Laurent |
| Month |