<?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>
|