| <?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
</xsl:text>
				<xsl:if test="string-length(@EXPRESSION)>0">
				// sets the group break expression
				$this->setExpression( "<xsl:value-of select="@EXPRESSION"/>" );
				</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( "<xsl:value-of select="@PAGEBREAK"/>" );
				</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>	</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>				</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>();
</xsl:text>
	<xsl:text>				$this->o</xsl:text>
	<xsl:value-of select="@NAME"/>
	<xsl:text>->setFields( $this->oFields );
</xsl:text>
	<xsl:text>				$this->o</xsl:text>
	<xsl:value-of select="@NAME"/>
	<xsl:text>->configure();
</xsl:text>
	<xsl:text>				$this->o</xsl:text>
	<xsl:value-of select="@NAME"/>
	<xsl:text>->setPrinter( $this->oRepoPage );
</xsl:text>
	<xsl:text>				$this->o</xsl:text>
	<xsl:value-of select="@NAME"/>
	<xsl:text>->setParameters( $this->oParameters );
</xsl:text>
	<xsl:if test="count(preceding-sibling::*)+1=1">
		<xsl:text>				$this->o</xsl:text>
		<xsl:value-of select="@NAME"/>
		<xsl:text>->setMainGroup( true );
</xsl:text>
		<xsl:text>				$this->oMainGroup =& $this->o</xsl:text> 
		<xsl:value-of select="@NAME"/>;
	</xsl:if>
	<xsl:text>
</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>		</xsl:text>
		</xsl:if>
		<xsl:text>		</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()>1">
					<xsl:text>			</xsl:text>
				</xsl:if>
				<xsl:text>	$this->println( $oValue, </xsl:text>
				<xsl:for-each select="COL">
					<xsl:call-template name="MAKE_COL"/> 
				</xsl:for-each>
				<xsl:text> );
</xsl:text>
			</xsl:for-each>
			<xsl:text>			}
</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()>1">
				<xsl:text>			</xsl:text>
			</xsl:if> 
			<xsl:text>	$this->println( $oValue, </xsl:text>
			<xsl:for-each select="COL">
				<xsl:call-template name="MAKE_COL"/>
			</xsl:for-each>
			<xsl:text> );
</xsl:text>
		</xsl:for-each>
		<xsl:text>			}</xsl:text>
</xsl:template>
</xsl:stylesheet>
 |