XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Yunus UKSubject: Programmatically changing page orientation
Author: Yunus UK
Date: 01 Dec 2009 07:55 AM
Originally Posted: 01 Dec 2009 07:31 AM
Hi,

I have numerous tables I want to generate to one pdf however I would like the table orientation to depend on a attribute I provide with the table data. Is there a way of changing the table orientation at runtime? (section of code is listed below, i want it so if outputLandscapeTable template is called then the orientation is changed to landscape )

Thanks

<xsl:template name="processDocuments">
<xsl:param name="documentIDs"/>
<xsl:for-each select="$documentIDs">
<xsl:variable name="_documentID" select="."/>
<xsl:variable name="_dataColumn" select="/Data/_x0023_Documents[IF_DocumentLoggerID=$_documentID]"/>
<xsl:variable name="_dataLayout" select="/Data/_x0023_Documents[IF_DocumentLoggerID=$_documentID][1]/IsTableData/text()"/>
<fo:block break-before="page"/>
<xsl:choose>
<xsl:when test="$_dataLayout='0'">
<xsl:call-template name="outputPortraitTable">
<xsl:with-param name="dataColumns" select="$_dataColumn"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$_dataLayout='1'">
<xsl:call-template name="outputLandscapeTable">
<xsl:with-param name="dataColumns" select="$_dataColumn"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>

<xsl:template name="outputPortraitTable">
<xsl:param name="dataColumns"/>
<fo:table table-layout="fixed" width="19cm">
<fo:table-column/>
<fo:table-column/>
<fo:table-body>
<xsl:for-each select="$dataColumns">
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:value-of select="DefaultDisplayName"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="Value"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</xsl:template>

<xsl:template name="outputLandscapeTable">
<xsl:param name="dataColumns"/>
<fo:table table-layout="fixed" orient="land">
<xsl:for-each select="$dataColumns">
<fo:table-column></fo:table-column>
</xsl:for-each>
<fo:table-header>
<fo:table-row>
<xsl:for-each select="$dataColumns">
<fo:table-cell>
<fo:block>
<xsl:value-of select="DefaultDisplayName"/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<xsl:for-each select="$dataColumns">
<fo:table-cell>
<fo:block>
<xsl:value-of select="Value"/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>

Postnext
Alberto MassariSubject: Programmatically changing page orientation
Author: Alberto Massari
Date: 01 Dec 2009 09:19 AM
Which version of Stylus Studio are you using?

Alberto

Postnext
Yunus UKSubject: Programmatically changing page orientation
Author: Yunus UK
Date: 01 Dec 2009 09:36 AM
Using professional edition 2006, release 2 (Build 591b)

Postnext
Yunus UKSubject: Programmatically changing page orientation
Author: Yunus UK
Date: 01 Dec 2009 09:42 AM
Using FOP engine 0.20.5 (if that helps)

Regards

Yunus

Postnext
Alberto MassariSubject: Programmatically changing page orientation
Author: Alberto Massari
Date: 01 Dec 2009 10:28 AM
The orient='land' attribute is not part of the fo:table instruction; it is an argument for the DocBook XSLT processor. Unless you are indeed using DocBook, you should wrap the fo:table in a

<fo:block-container reference-orientation="90">

element (that, unfortunately, FOP 0.20 doesn't support - you will have to select XEP as post-processor to make it work)
Another option is to use the PSMI toolkit (http://www.cranesoftwrights.com/resources/psmi/index.htm) that post process your FO document to generate sequence of different page layouts.

Hope this helps,
Alberto

Posttop
Yunus UKSubject: Programmatically changing page orientation
Author: Yunus UK
Date: 02 Dec 2009 06:15 AM
Hi Alberto,

Thanks for your help, looked into your suggestions and in the end decided to upgrade to 0.95 FOP engine and as you suggested just used

<fo:block-container reference-orientation="90">

Thanks

Yunus

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.