PHP Classes

File: PHPReportGroup.xsl

Recommend this page to a friend!
  Classes of Eustaquio Rangel de Oliveira Jr.  >  phpreports  >  PHPReportGroup.xsl  >  Download  
File: PHPReportGroup.xsl
Role: Auxiliary data
Content type: text/plain
Description: Group layer transformation
Class: phpreports
Report Generator
Author: By
Last change:
Date: 19 years ago
Size: 4,505 bytes
 

Contents

Class file image Download
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Groups transformation --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/REPORT/GROUPS"> <xsl:for-each select="GROUP"> <xsl:call-template name="MAKE_GROUP"/> </xsl:for-each> </xsl:template> <!-- Group --> <xsl:template name="MAKE_GROUP"> // group class <xsl:value-of select="@NAME"/> extends PHPRepoGroup { function configure() { <xsl:text>//configure tags for all the fields&#10;</xsl:text> <xsl:if test="string-length(@EXPRESSION)>0"> // sets the group break expression $this->setExpression( &quot;<xsl:value-of select="@EXPRESSION"/>&quot; ); </xsl:if> <xsl:if test="string-length(@PAGEBREAK)>0"> // tell the group if make or not a page break when the expression changes $this->setPageBreak( &quot;<xsl:value-of select="@PAGEBREAK"/>&quot; ); </xsl:if> <xsl:for-each select="FIELDS/ROW/COL"> <xsl:call-template name="MAKE_FIELD_COL"/> </xsl:for-each> } <xsl:call-template name="MAKE_GROUP_HEADER"/> <xsl:call-template name="MAKE_GROUP_FOOTER"/> } <xsl:for-each select="GROUP"> <xsl:call-template name="MAKE_GROUP"/> </xsl:for-each> </xsl:template> <!-- Group declaration and definition --> <xsl:template name="MAKE_GROUP_DECL"> <xsl:if test="count(preceding-sibling::*)+1>1"> <xsl:text>&#9;</xsl:text> </xsl:if> <xsl:text>var $o</xsl:text> <xsl:value-of select="@NAME"/>; <xsl:text></xsl:text> <xsl:for-each select="GROUP"> <xsl:call-template name="MAKE_GROUP_DECL"/> </xsl:for-each> </xsl:template> <!-- Group tree --> <xsl:template name="MAKE_GROUP_TREE"> <xsl:if test="count(preceding-sibling::*)+1>1"> <xsl:text>&#9;&#9;&#9;&#9;</xsl:text> </xsl:if> <xsl:text>$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text> = new </xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>();&#10;</xsl:text> <xsl:text>&#9;&#9;&#9;&#9;$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>->setFields( $this->oFields );&#10;</xsl:text> <xsl:text>&#9;&#9;&#9;&#9;$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>->configure();&#10;</xsl:text> <xsl:text>&#9;&#9;&#9;&#9;$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>->setPrinter( $this->oRepoPage );&#10;</xsl:text> <xsl:text>&#9;&#9;&#9;&#9;$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>->setParameters( $this->oParameters );&#10;</xsl:text> <xsl:if test="count(preceding-sibling::*)+1=1"> <xsl:text>&#9;&#9;&#9;&#9;$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>->setMainGroup( true );&#10;</xsl:text> <xsl:text>&#9;&#9;&#9;&#9;$this->oMainGroup =&amp; $this->o</xsl:text> <xsl:value-of select="@NAME"/>; </xsl:if> <xsl:text>&#10;</xsl:text> <xsl:for-each select="GROUP"> <xsl:call-template name="MAKE_GROUP_TREE"/> </xsl:for-each> </xsl:template> <!-- Group child --> <xsl:template name="MAKE_GROUP_CHILD"> <xsl:if test="string-length(GROUP)>1"> <xsl:if test="count(preceding-sibling::*)+1=1"> <xsl:text>&#9;&#9;</xsl:text> </xsl:if> <xsl:text>&#9;&#9;</xsl:text> <xsl:text>$this->o</xsl:text> <xsl:value-of select="@NAME"/> <xsl:text>->setChild( </xsl:text> <xsl:text>$this->o</xsl:text><xsl:value-of select="GROUP/@NAME"/> <xsl:text> )</xsl:text>; </xsl:if> <xsl:for-each select="GROUP"> <xsl:call-template name="MAKE_GROUP_CHILD"/> </xsl:for-each> </xsl:template> <!-- Group header --> <xsl:template name="MAKE_GROUP_HEADER"> function printHeader( $oValue ) { $header = $oValue; // nice way to refer to header data ;-) <xsl:for-each select="HEADER/ROW"> <xsl:if test="position()&gt;1"> <xsl:text>&#9;&#9;&#9;</xsl:text> </xsl:if> <xsl:text>&#9;$this->println( $oValue, </xsl:text> <xsl:for-each select="COL"> <xsl:call-template name="MAKE_COL"/> </xsl:for-each> <xsl:text> );&#10;</xsl:text> </xsl:for-each> <xsl:text>&#9;&#9;&#9;}&#10;</xsl:text> </xsl:template> <!-- Group footer --> <xsl:template name="MAKE_GROUP_FOOTER"> function printFooter( $oValue ) { <xsl:for-each select="FOOTER/ROW"> <xsl:if test="position()&gt;1"> <xsl:text>&#9;&#9;&#9;</xsl:text> </xsl:if> <xsl:text>&#9;$this->println( $oValue, </xsl:text> <xsl:for-each select="COL"> <xsl:call-template name="MAKE_COL"/> </xsl:for-each> <xsl:text> );&#10;</xsl:text> </xsl:for-each> <xsl:text>&#9;&#9;&#9;}</xsl:text> </xsl:template> </xsl:stylesheet>