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)
Received on Thu Jul 24 18:23:47 2003