Re: [xsl] global variables and more

Subject: Re: [xsl] global variables and more
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Sun, 14 Dec 2003 18:19:41 -0500
At 2003-12-14 21:27 +0000, Jonny Pony wrote:
So I try to check first and create some global-variables and put in some values for the layout (page height, ...)

This approach doesn't work of course:
 <xsl:when test="count(/ColumnNames/Column) &lt;= 5">
   <xsl:variable name="page-height">29.7cm</xsl:variable>
   <xsl:variable  name="page-width">21cm</xsl:variable>

Yes, it wouldn't work because the scope of a variable is its following siblings and their descendants, and your variables' scopes are ending at the end of the xsl:when.

But is there a way to do something like that?

Turn your assignment inside out by using a result tree fragment:

<xsl:variable name="page-height">
    <xsl:when test="count(/ColumnNames/Column) &lt;= 5">29.7cm</xsl:when>
<xsl:variable name="page-width">
    <xsl:when test="count(/ColumnNames/Column) &lt;= 5">21cm</xsl:when>

Now you have both variables in scope for following siblings and their descendants. The only caveat for this approach is when testing variables that are assigned in this fashion: cast the variable before testing it because a result tree fragment always tests as true.

I hope this helps.

............................. Ken

-- North America (Washington, DC): 3-day XSLT/2-day XSL-FO 2004-02-09 Instructor-led on-site corporate, government & user group training for XSLT and XSL-FO world-wide: please contact us for the details

G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                       Definitive XSLT and XPath
ISBN 0-13-140374-5                               Definitive XSL-FO
ISBN 1-894049-08-X   Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X               Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:
Male Breast Cancer Awareness

XSL-List info and archive:

Current Thread