template dans un template ...

"Ziad EL KHATIB" <[email protected]> Tue, 5 Jun 2007 15:59:02 +0200
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
bonjour,
j'ai un soucis avec ma xslt. c'est un peu compliqué à expliquer donc je vais
commencer par un exemple:

--------------------------------------------------------------------------------
EXEMPLE 1 : exemple ou ca fonctionne correctement
XML DEPART
    <contenuGamme>
        <Titre>
            ............
        </Titre>
        <Preambule>
            <Elements>
                <Paragraphe>
                    <BlocTexte></BlocTexte>
                </Paragraphe>
                <Remarque type="imp">
                    <BlocTexte>
                        <Phrase code="N007756">
                            <texte>respecter les consignes de sécurité et de
propreté</texte>
                        </Phrase>
                    </BlocTexte>
                </Remarque>
                <Paragraphe>
                    <BlocTexte/>
                </Paragraphe>
                <Remarque type="nota">
                    <BlocTexte>
                        <Phrase code="O080091">
                            <texte>après coupure du contact</texte>
                        </Phrase>
                        <TexteLibre> : </TexteLibre>
                        <Phrase code="N035779">
                            <texte>attendre *1 minutes avant de débrancher
la batterie pour garantir la mémorisation des apprentissages des différents
calculateurs</texte>
                            <param>15</param>
                        </Phrase>
                    </BlocTexte>
                </Remarque>
                <Paragraphe>
                    <BlocTexte/>
                </Paragraphe>
                <Remarque type="imp">
                    <BlocTexte>
                        <Phrase code="N036848">
                            <texte>attendre au minimum une heure avant toute
intervention sur la ligne d'échappement</texte>
                        </Phrase>
                    </BlocTexte>
                </Remarque>
            </Elements>
        </Preambule>

XML OBTENU ET VOULU
    <contenuGamme>
        <titre>
            ............
         </titre>
        <prea>
            <rem type="imp"><phr code="N007756"/>
            </rem>
            <rem type="nota"><phr code="O080091"/><txtlibre> :
</txtlibre><phr code="N035779">
                    <param type="VALEUR">15</param>
                </phr>
            </rem>
            <rem type="imp"><phr code="N036848"/>
            </rem>
        </prea>


--------------------------------------------------------------------------------
EXEMPLE 2 : exemple qui ne marche pas
XML DEPART
    <contenuGamme>
        <Titre>
             .............................
        </Titre>
        <Preambule>
            <Elements>
                <Paragraphe>
                    <BlocTexte></BlocTexte>
                </Paragraphe>
            </Elements>
        </Preambule>
        <Chapitre>
            <Titre>
             .....................

XML OBTENU
    <contenuGamme>
        <titre>
        </titre>
        <prea/>
        <chap>

XML VOULU
    <contenuGamme>
        <titre>
            ............
         </titre>
         <chapitre>
            <titre>
                ...........


Voici ma xslt:
    <xsl:template match="Preambule">
        <xsl:choose>
            <xsl:when test="name(..)='Chapitre'">
                <sprea>
                    <txtn2>
                        <xsl:apply-templates/>
                    </txtn2>
                </sprea>
            </xsl:when>
            <xsl:when test="name(..)='SousChapitre'">
                <ssprea>
                    <txtn3>
                        <xsl:apply-templates/>
                    </txtn3>
                </ssprea>
            </xsl:when>
            <xsl:otherwise>
                <prea>
                    <xsl:apply-templates/>
                </prea>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template match="BlocTexte">
            <xsl:apply-templates select="node()"/>
    </xsl:template>

En gros, ma xslt marche parfaitement sauf dans le cas ou j'ai dans mon
preambule qu'un BlocTexte vide et rien d'autre, dans ce cas je ne veux pas
avoir un <prea/> qui s'affiche, je ne veux rien.

Je ne pense pas avoir été très clair mais merci pour votre aide en tous cas
:-)