From: Eric van der Vlist (vdv@dyomedea.com)
Date: 02/02/2001 - 14:38
Bonjour,
Verachten Bruno wrote:
>
> Bonjour,
>
> > Je voudrais savoir s'il existe un moyen de retranscrire un
> > fichier XML dans sa totalité, texte et éléments. En effet,
> > l'instruction
> > "apply-templates" restitue le texte des éléments XML, mais pas les
> > éléments eux-même.
> Je pense que les instructions xsl:copy et xsl:copy-of devraient
> faire l'affaire:
>
> <xsl:copy-of select="./*"/>
Les instructions xsl:copy [1] et xsl:copy-of [2] permettent de résoudre
ce type de problème.
Il faut également souligner que ce n'est pas xsl:apply-templates qui
"restitue le texte des éléments XML", mais les templates qui seront
exécutés (éventuellement par défaut).
Rappelons que les templates par défaut suivants sont prédéfinis [3]:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
(Cette règle applique les templates sur tous les noeuds textes ou
éléments inclus dans le noeud contexte (racine ou élément))
et
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
(Celle ci copie la valeur (texte) d'un noeud texte ou attribut)
Si sur un document simple comme celui-ci:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<element>un</element>
<element>deux</element>
<element>trois</element>
</document>
on applique une transformation "vide" :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>
Ce sont ces règles qui permettent d'obtenir le résultat:
<?xml version="1.0" encoding="utf-8"?>
un
deux
trois
Ce sont elles qui donnent l'impression que "apply-templates" réalise une
convertion sous forme de texte.
On peut venir les "contrarier" à tout moment:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="element">
<xsl:comment>Je prend la main</xsl:comment>
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
donnera:
<?xml version="1.0" encoding="utf-8"?>
<!--Je prend la main--><element>un</element>
<!--Je prend la main--><element>deux</element>
<!--Je prend la main--><element>trois</element>
et
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="document">
<xsl:comment>Je prend la main</xsl:comment>
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
donnera:
<?xml version="1.0" encoding="utf-8"?>
<!--Je prend la main--><document>
<element>un</element>
<element>deux</element>
<element>trois</element>
</document>
Cordialement,
Eric van der Vlist
[1] http://xmlfr.org/w3c/TR/xslt/#copying
[2] http://xmlfr.org/w3c/TR/xslt/#copy-of
[3] http://xmlfr.org/w3c/TR/xslt/#built-in-rule
> Bruno Verachten.
>
--
------------------------------------------------------------------------
Eric van der Vlist Dyomedea http://dyomedea.com
http://xmlfr.org http://4xt.org http://ducotede.com
------------------------------------------------------------------------
--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|