From: BoD (BoD@BoDLand.com)
Date: 14/08/2001 - 22:50
Merci beaucoup de l'explication !
Je crois que c'est clair...
J'ai maintenant d'autres petits problèmes du genre dans ma source si je fais
<truc>
<a xmlns="http://www.w3.org/1999/xhtml">test</a>
</truc>
ou bien
<truc xmlns:html="http://www.w3.org/1999/xhtml>
<html:a/>test</html:a>
</truc>
cela ne produit pas le même resultat après transformation...
(Cela produit dans le premier cas un <a> mais dans le 2eme cas un <html:a>
qui ne va pas biensûr)
B.LUBEK
----- Original Message -----
From: "Benoit Lefevre" <benoit.lefevre@effix.fr>
To: <xml-tech@xmlfr.org>
Sent: Tuesday, August 14, 2001 9:34 AM
Subject: [xml-tech] Re: Question xslt et namespace (encore!)
>
>
> Bonjour.
>
> Tout d'abord je precise que ce que je vais dire n'est pas certain;
> j'ai moi meme quelques difficultes avec les namespaces.
>
> Voila commen je vois les choses pour l'instant : un namespace c'est
> ,comme son nom l'indique, une "zone de nomage". Dans ton cas
> quand tu rajoutes un namespace au tague <a>, tu precises au
> processeur xsl que le nom du tague en question appartiend a l'espace
> de nomage "test.com"
>
> Ici ton probleme c'est qu'une fois que tu a fait ca, le tague <a>
ainsi
> que tous ses fils sont alors consideres comme appartenant a cet
> espace de nomage !!
>
> Donc dans ta stylesheet quand tu fait referance a : "//b/c" tu
designes
> quelque chose qui n'apparait pas du tout dans ton document car il
faut
> bien voir que l'expression "//b/c" designe des tagues appartenants a
> l'espace de nommage par default alors que ton <b> et ton <c>
> appartiennent eux a l'espace de nommage test.com.
>
> Pour resumer : "//b/c" est totalement different (pour le
processeur
> en tous les cas) de "//test.com:b/test.com:c".
>
> pour resoudre ton probleme et faire les choses plus proprement il
faut :
>
> 1) d'une part donner un "alias" a ton espace de nomage test.com,
comme
> ceci (prenons "monns" par exemple) :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <a xmlns:monns="test.com">
> <monns:b>
> <monns:c>TOTO</monns:c>
> </monns:b>
> </monns:a>
>
> C'est plus long a ecrire mais c'est plus claire
> lorsque tu as plusieurs espaces de nommages qui
> cohabitent dans le meme document xml. C'est meme
> indispenssable de prefixer les tags pour qu'il n'y ai
> pas de collision de nom lorsque deux espaces de
> nommage possedent des tagues ayants le meme nom. On
> peu imaginer par exemple un espace de nommage
> "entreprise" dans lequel il y a le tag <nom>
> (de l'entreprise) et un espace de nommage "employe"
> dans lequel il y a le tague <nom> (de l'employe).
>
> pour faire cohabiter ces deux tagues dans le meme
> document on ecrit alors :
>
> <entreprise:nom>
> <entreprise:employes>
> <employe:nom>marcel</employe:nom>
> <employe:nom>jean</employe:nom>
> <employe:nom>maurice</employe:nom>
> <employe:nom>bertrand</employe:nom>
> </entreprise:employes>
> </entreprise:nom>
>
> 2) d'autre part dans ta feuille xsl tu declares un
> (ou des) alias pour l'espace de nommage avec lequel
> (ou lesquels) tu est sence travailler.
>
> En pratique tu fais ca comme ca :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:monns=test.com>
>
> <xsl:output method="xml" version="1.0"
> encoding="UTF-8"
> indent="yes" />
>
> <xsl:template match="/">
> <xsl:value-of select="//monns:b/monnsc" />
> </xsl:template>
> </xsl:stylesheet>
>
> de cette maniere tu est certain que ta feuille et
> ton document parlent de la meme chose.
> Le selecte de ton value-of devrait donc fonctionner un
> peut mieux (j'espere :)
>
>
>
>
> Une derniere chose : tout ce que je viens de dire
> doit s'appliquer quand tu veux faire referance a
> un tague, et ce ou que ce soit :
> - dans une stylesheet :
> dans un select,
> dans un match,
> dans un test,
> dans un Xpath.
> - dans un xml.
>
> Cordialement.
>
> Benoit lefevre.
>
> PS : pour revenire a cette histoire de namespace tu
> remarqueras qu'une stylesheet etant elle meme ecrite
> en XML il faut egalement designer les tagues XSL via
> un alias, ici "xsl:".
--
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:06 UTC
webmaster@xmlfr.org
|