xsl-list
[Top] [All Lists]

Re: global variables and more

2003-12-14 16:19:41
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:choose>
 <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>
   ...
 </xsl:when>

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:choose>
    <xsl:when test="count(/ColumnNames/Column) &lt;= 5">29.7cm</xsl:when>
    <xsl:otherwise>21cm</xsl:otherwise>
  </xsl:choose>
</xsl:variable>
<xsl:variable name="page-width">
  <xsl:choose>
    <xsl:when test="count(/ColumnNames/Column) &lt;= 5">21cm</xsl:when>
    <xsl:otherwise>29.7cm</xsl:otherwise>
  </xsl:choose>
</xsl:variable>

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(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
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:     http://XMLGuild.info
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>