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) <= 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) <= 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) <= 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