Login   Register  
PHP Classes
elePHPant
Icontem

File: PHPReportGroup.xsl

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 2003-03-13 14:58
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>