Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: Benoit Lefevre (benoit.lefevre@effix.fr)
Date: 14/08/2001 - 07:34


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

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement