<?xml version="1.1" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;">
]>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="xalan://xml.apache.org/xalan/java" xmlns="http://www.xemelios.org/namespaces#cge" xmlns:n="http://www.xemelios.org/namespaces#cge" xmlns:added="http://www.xemelios.org/namespaces#added" xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally" exclude-result-prefixes="java" version="2.0">
    
    <xsl:output standalone="yes" method="xml" indent="yes"/>
    
    <xsl:output encoding="##output-encoding##"/>
    <!--xsl:output version="##xml-version##"/-->
    <xsl:output version="1.0"/>
    
    <xsl:param name="language" select="'fr'"/>
    
    <xsl:param name="CodeBudget"/>
    <xsl:param name="LibelleBudget"/>
    <xsl:param name="CodeCollectivite"/>
    <xsl:param name="LibelleCollectivite"/>
    
    <xsl:template match="/*[position()=1]">
        <xsl:choose>
            <xsl:when test="local-name(.) = 'CompteGestionEtat'">
                <CompteGestionEtat xmlns="http://www.xemelios.org/namespaces#cge" xmlns:n="http://www.xemelios.org/namespaces#cge" xmlns:added="http://www.xemelios.org/namespaces#added">
                    <xsl:for-each select="./*">
                        <xsl:call-template name="writeElement">
                            <xsl:with-param name="el" select="."/>
                        </xsl:call-template>
                        <!--xsl:if test="local-name(.) = 'Entete'">
                            <xsl:call-template name="make.accueil">
                                <xsl:with-param name="fils" select="/n:CompteGestionEtat/*"/>
                            </xsl:call-template>
                        </xsl:if-->
                    </xsl:for-each>                    
                </CompteGestionEtat>
            </xsl:when>
        </xsl:choose>
    </xsl:template>
    
    <xsl:template name="writeElement">
        <xsl:param name="el"/>
        <!--xsl:choose>
            <xsl:when test="starts-with(name($el),'Date')">
            <xsl:variable name="formatted"><xsl:call-template name="format-date"><xsl:with-param name="texte" select="$el/@V"/></xsl:call-template></xsl:variable>
            <xsl:element name="{name($el)}">
            <xsl:attribute name="V" select="$formatted"/>
            </xsl:element>
            </xsl:when>
            <xsl:otherwise-->
        <xsl:if test="not(contains('|LigneRecapitulation|',concat('|',name($el),'|'))) or (contains('|LigneRecapitulation|',concat('|',name($el),'|')) and string-length($el/@NatureProduit) &gt; 0)">
            <xsl:element name="{name($el)}">
                <xsl:for-each select="$el/@*">
                    <xsl:choose>
                        <xsl:when test="string-length(.) eq 0"/>
                        <!--xsl:when test="starts-with(name(.),'Date')">
                            <xsl:variable name="formatted"><xsl:call-template name="format-date"><xsl:with-param name="texte" select="."/></xsl:call-template></xsl:variable>
                            <xsl:attribute name="{name(.)}" select="$formatted"/>
                            </xsl:when-->
                        <xsl:otherwise>
                            <xsl:attribute name="{name(.)}">
                                <xsl:value-of select="."/>
                            </xsl:attribute>
                        </xsl:otherwise>
                    </xsl:choose>
                </xsl:for-each>
                <!-- ajouts Attributs -->
                <xsl:choose>
                    <xsl:when test="contains('|LigneAccueil|LigneBalanceGenerale|LigneDeveloppementDepense|LigneDeveloppementRecette|LigneRecapitulation|LigneReversement|',concat('|',name($el),'|'))">
                        <xsl:attribute name="generated-id" namespace="http://www.xemelios.org/namespaces#added">
                            <xsl:value-of select="generate-id()"/>
                        </xsl:attribute>
                    </xsl:when>
                </xsl:choose>
                <xsl:choose>
                    <xsl:when test="contains('|Collectivite|',concat('|',name($el),'|'))">
                        <xsl:if test="not(@CodeBudget)"><xsl:attribute name="CodeBudget" select="$CodeBudget"/></xsl:if>
                    </xsl:when>
                    <xsl:when test="contains('|LigneBalanceGenerale|',concat('|',name($el),'|'))">
                        <xsl:choose>
                            <xsl:when test="(contains(lower-case($el/@LibelleCpte),'total') and (contains(lower-case($el/@LibelleCpte),'compte') or contains(lower-case($el/@LibelleCpte),'classe'))) or string-length($el/@NumCompte) eq 0">
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">0</xsl:attribute>
                            </xsl:otherwise>
                        </xsl:choose>
                        <xsl:choose>
                            <xsl:when test="number($el/@BalanceEntreeDebit) != 0 or number($el/@BalanceEntreeCredit) != 0 or  number($el/@OperationDebit) != 0 or  number($el/@OperationCredit) != 0 or  number($el/@OperationFinDebit) != 0 or  number($el/@OperationFinCredit) != 0 or  number($el/@BalanceSortieDebit) != 0 or  number($el/@BalanceSortieCredit) != 0">
                                <xsl:attribute name="isSearchable" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                        </xsl:choose>
                    </xsl:when>
                    <!-- ANNEXE II -->
                    <xsl:when test="contains('|LigneDeveloppementDepense|',concat('|',name($el),'|'))">
                        <xsl:choose>
                            <xsl:when test="contains(upper-case($el/@Type),'TOTAL')">
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">0</xsl:attribute>
                            </xsl:otherwise>
                        </xsl:choose>
                    </xsl:when>
                    <!-- ANNEXE I -->
                    <xsl:when test="contains('|LigneDeveloppementRecette|',concat('|',name($el),'|'))">
                        <xsl:choose>
                            <xsl:when test="contains(upper-case($el/@Type),'TOTAL') or contains(upper-case($el/@Type),'TITRE')">
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">0</xsl:attribute>
                            </xsl:otherwise>
                        </xsl:choose>
                        <xsl:choose>
                            <xsl:when test="number($el/@Annulations) != 0 or number($el/@Droits) != 0 or  number($el/@RARDeb) != 0 or  number($el/@RARFin) != 0 or  number($el/@RecettesComptant) != 0 or  number($el/@TotDroits) != 0 or  number($el/@TotRecetteBudg) != 0 or  number($el/@Recouvrement) != 0">
                                <xsl:attribute name="isSearchable" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                        </xsl:choose>
                    </xsl:when>
                    <xsl:when test="contains('|LigneRecapitulation|',concat('|',name($el),'|'))">
                        <xsl:choose>
                            <xsl:when test="contains(upper-case($el/@Type),'TOTAL')">
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>                            
                            <xsl:otherwise>
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">0</xsl:attribute>
                            </xsl:otherwise>
                        </xsl:choose>
                        <xsl:choose>
                            <xsl:when test="number($el/@Annulations) != 0 or number($el/@Droits) != 0 or  number($el/@RARDeb) != 0 or  number($el/@RARFin) != 0 or  number($el/@RecettesComptant) != 0 or  number($el/@TotDroits) != 0 or  number($el/@TotRecetteBudg) != 0 or  number($el/@Recouvrement) != 0">
                                <xsl:attribute name="isSearchable" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                        </xsl:choose>
                    </xsl:when>
                    <xsl:when test="contains('|LigneReversement|',concat('|',name($el),'|'))">
                        <xsl:choose>
                            <xsl:when test="contains(upper-case($el/@Type),'TOTAL') or contains(upper-case($el/@Type),'TITRE')">
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:attribute name="isNotShowResultat" namespace="http://www.xemelios.org/namespaces#added">0</xsl:attribute>
                            </xsl:otherwise>
                        </xsl:choose>
                        <xsl:choose>
                            <xsl:when test="number($el/@Annulations) != 0 or number($el/@Droits) != 0 or  number($el/@RARDeb) != 0 or  number($el/@RARFin) != 0 or  number($el/@RecettesComptant) != 0 or  number($el/@TotDroits) != 0 or  number($el/@TotRecetteBudg) != 0 or  number($el/@Recouvrement) != 0">
                                <xsl:attribute name="isSearchable" namespace="http://www.xemelios.org/namespaces#added">1</xsl:attribute>
                            </xsl:when>
                        </xsl:choose>
                    </xsl:when>
                </xsl:choose>
                <!-- recursion -->
                <xsl:for-each select="$el/*">
                    <xsl:call-template name="writeElement">
                        <xsl:with-param name="el" select="."/>
                    </xsl:call-template>
                </xsl:for-each>
            </xsl:element>
        </xsl:if>
    </xsl:template>
    
    <xsl:template name="iso-date">
        <xsl:param name="datebrute"/>
        <xsl:param name="separator">/</xsl:param>
        <xsl:variable name="date.tokenize" select="tokenize($datebrute,'/')"/>
        <xsl:choose>
            <xsl:when test="string-length($datebrute)=10 and not(contains($datebrute,'..'))">        
                <xsl:value-of select="$date.tokenize[3]"/>
                <xsl:value-of select="$separator"/>
                <xsl:value-of select="$date.tokenize[2]"/>
                <xsl:value-of select="$separator"/>
                <xsl:value-of select="$date.tokenize[1]"/>
            </xsl:when>
            <xsl:when test="string-length($datebrute)=8 and not(contains($datebrute,'..'))">
                <xsl:choose>
                    <xsl:when test="number($date.tokenize[3])>74">19<xsl:value-of select="$date.tokenize[3]"/></xsl:when>
                    <xsl:otherwise>20<xsl:value-of select="$date.tokenize[3]"/></xsl:otherwise>
                </xsl:choose>                
                <xsl:value-of select="$separator"/>
                <xsl:value-of select="$date.tokenize[2]"/>
                <xsl:value-of select="$separator"/>
                <xsl:value-of select="$date.tokenize[1]"/>
            </xsl:when>
            <xsl:when test="string-length($datebrute)>0 and contains($datebrute,'..')">
                <xsl:value-of select="$datebrute"/>
            </xsl:when>
        </xsl:choose>
    </xsl:template>
    
    <xsl:template name="date.in.string">
        <xsl:param name="chaine"/>
        <xsl:variable name="date" select="tokenize($chaine,'/')"/>
        <xsl:variable name="day" select="substring($date[1],string-length($date[1])-1,2)"/>
        <xsl:call-template name="iso-date">
            <xsl:with-param name="datebrute"><xsl:value-of select="$day"/>/<xsl:value-of select="$date[2]"/>/<xsl:value-of select="$date[3]"/></xsl:with-param>
            <xsl:with-param name="separator">-</xsl:with-param>
        </xsl:call-template>
    </xsl:template>
    
    <!--xsl:template name="make.accueil">
        <xsl:param name="fils"/>
        
        <xsl:element name="Accueil" namespace="http://www.xemelios.org/namespaces#cge">
            <xsl:element name="PageAccueil" namespace="http://www.xemelios.org/namespaces#cge">
                <xsl:for-each select="$fils">
                    <xsl:variable name="name.el" select="name()"/>
                    
                    <xsl:if test="contains('|BalanceGenerale|DeveloppementDepense|DeveloppementRecette|Recapitulation|Reversement|ERTN|',concat('|',$name.el,'|'))">
                        <xsl:element name="LigneAccueil" namespace="http://www.xemelios.org/namespaces#cge">
                            <xsl:choose>
                                <xsl:when test="contains('|BalanceGenerale|',concat('|',$name.el,'|'))">
                                    <xsl:attribute name="Etat" select="'BalanceGenerale'"/>
                                    <xsl:attribute name="Titre" select="'1 - Balance G&#233;n&#233;rale des comptes'"/>
                                </xsl:when>
                                <xsl:when test="contains('|DeveloppementDepense|',concat('|',$name.el,'|'))">
                                    <xsl:attribute name="Etat" select="'DeveloppementDepense'"/>
                                    <xsl:attribute name="Titre" select="'2 - D&#233;veloppement des d&#233;penses budg&#233;taires par minist&#232;re et programme'"/>
                                </xsl:when>
                                <xsl:when test="contains('|DeveloppementRecette|',concat('|',$name.el,'|'))">
                                    <xsl:attribute name="Etat" select="'DeveloppementRecette'"/>
                                    <xsl:attribute name="Titre" select="'3 - D&#233;veloppement des recettes budg&#233;taires et des comptes sp&#233;ciaux - Ventilation par ligne'"/>
                                </xsl:when>
                                <xsl:when test="contains('|Recapitulation|',concat('|',$name.el,'|'))">
                                    <xsl:attribute name="Etat" select="'Recapitulation'"/>
                                    <xsl:attribute name="Titre" select="'4 - D&#233;veloppement des recettes budg&#233;taires et des comptes sp&#233;ciaux - R&#233;capitulation par compte budg&#233;taire'"/>
                                </xsl:when>
                                <xsl:when test="contains('|Reversement|',concat('|',$name.el,'|'))">
                                    <xsl:attribute name="Etat" select="'Reversement'"/>
                                    <xsl:attribute name="Titre" select="'5 - Reversements de fonds sur d&#233;penses des minist&#232;res &#224; annuler'"/>
                                </xsl:when>
                                <xsl:when test="contains('|ERTN|',concat('|',$name.el,'|'))">
                                    <xsl:attribute name="Etat" select="'ERTN'"/>
                                    <xsl:attribute name="Titre" select="'6 - Etat de Recettes des Titres Nationnaux'"/>
                                </xsl:when>
                            </xsl:choose>
                            
                            <xsl:attribute name="FirstPage" select="'1'"/>
                            <xsl:attribute name="generated-id" namespace="http://www.xemelios.org/namespaces#added">
                                <xsl:value-of select="generate-id()"/>
                            </xsl:attribute>
                        </xsl:element>
                    </xsl:if>
                </xsl:for-each>  
                <Pied NumPage="1"/>
            </xsl:element>
        </xsl:element>
    </xsl:template-->
    
    <!--xsl:template name="format-date"-->
    <!-- 01/01/2007 vers 2007-01-01 -->
    <!--xsl:param name="texte"/>
        <xsl:choose>
        <xsl:when test="string-length($texte) eq 0"/>
        <xsl:when test="string-length($texte) eq 4"><xsl:value-of select="$texte"/>-01-01</xsl:when>
        <xsl:when test="string-length($texte) eq 10">
        <xsl:variable name="elements" select="tokenize($texte,'/')"/>
        <xsl:value-of select="concat($elements[3],'-',$elements[2],'-',$elements[1])"/>
        </xsl:when>
        <xsl:otherwise><xsl:value-of select="$texte"/></xsl:otherwise>
        </xsl:choose>
        
        </xsl:template-->
    
</xsl:stylesheet>
