Re: template dans un template ...
Stephane Bonhomme <[email protected]> Tue, 05 Jun 2007 18:30:25 +0200
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Organization | exselt services |
| Message-ID | <1181061025.13793.57.camel@citrouille> |
il suffit de rajouter le cas (avec un xsl:when vide= dans votre
xsl:choose, afin que dans la condition que vous exprimez, le otherwise
ne s'applique pas, par exemple :
<xsl:choose>
<xsl:when test="name(..)='Chapitre'">... </xsl:when>
<xsl:when test="name(..)='SousChapitre'">... </xsl:when>
<xsl:when test="count(.//BlocTexte/node())=0"/>
<xsl:otherwise>
<prea>
<xsl:apply-templates/>
</prea>
</xsl:otherwise>
</xsl:choose>
Le mardi 05 juin 2007 à 15:59 +0200, Ziad EL KHATIB a écrit :
> 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
> :-)
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "[email protected]" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
>
--
Stéphane Bonhomme -- Exselt Services
Formations, Conseil et Réalisations en Ingénierie Documentaire,
Technologies Web et Logiciels Libres
[email protected] - http://www.exselt.com
04 57 39 30 78 / 06 88 57 27 08