Bonjour,
Merci beaucoup de tous ces precieux conseils qui correspondent exactement à
l'usage que je comptais en faire.
Fabrice
----- Original Message -----
From: "Eric van der Vlist" <vdv@dyomedea.com>
To: <xml-tech@xmlfr.org>
Sent: Thursday, July 24, 2003 6:23 PM
Subject: [xml-tech] Re: Traiter les contenus mixtes par XSLT
>
> On Thu, 2003-07-24 at 17:58, Fabrice Castellon wrote:
> > Bonjour,
> >
> > J'aimerais recuperer par XSLT, le contenu textuel (uniquement) d'un
element lorsque celui-ci est dit mixte (texte + elements).
> > J'ai une methode mais qui n'est pas à mon gout assez propre (declarer
des templates vides sur tous les éléments enfants ...). Avez-vous une
solution élégante à me proposer ?
>
> Prenons un exemple:
>
> <mixte>
> <foo>jlkj</foo>
> Ceci
> <foo>lkjhlkj</foo>
> est un
> <bar>mimjm</bar>
> contenu mixte
> </mixte>
>
> Si j'ai bien compris, vous voulez isoler le texte qui est directement
> inclus dans l'élément "mixte" en excluant ses sous éléments.
>
> Le problème des contenus mixtes en XSLT est le suivant :
>
> * L'expression XPath "text()" sélectionne l'ensemble des noeuds
> texte (c'est à dire ce que vous voulez).
> * Si vous écrivez <xsl:value-of select="expr"/>, value-of ne
> sélectionne que le premier des noeuds sélectionnés par "expr".
> Dans notre cas, ce noeud est un retour chariot et une
> tabulation, donc ce n'est pas ce que vous voulez.
>
> Il faut donc utiliser autre chose que xsl:value-of, par exemple
> xsl:copy-of qui fonctionne bien dans ce cas :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
>
> <xsl:template match="mixte">
> <xsl:copy-of select="text()"/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Donne :
>
> <?xml version="1.0"?>
>
>
> Ceci
>
> est un
>
> contenu mixte
>
> C'est à dire ce que vous voulez... Si vous voulez mettre cela dans une
> variable pour la travailler vous pouvez, pour une fois, tirer partie de
> la différence entre RTF et node sets :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
>
> <xsl:template match="mixte">
> <xsl:variable name="text">
> <xsl:copy-of select="text()"/>
> </xsl:variable>
> <xsl:value-of select="normalize-space($text)"/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Donnera :
>
> <?xml version="1.0" encoding="utf-8"?>Ceci est un contenu mixte
>
> Cordialement,
>
> Eric van der Vlist
> --
> Read me on Advogato.
> http://advogato.org/person/vdv/
> ------------------------------------------------------------------------
> Eric van der Vlist http://xmlfr.org http://dyomedea.com
> (W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
> ------------------------------------------------------------------------
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "xml-tech@xmlfr.org" (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 xml-tech-request@xmlfr.org
> (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (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 xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu Jul 24 19:10:43 2003