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.

xml tech : Technologies XML

[xml-tech] Re: DOM : importNode et espace de noms

[xml-tech] Re: DOM : importNode et espace de noms

Auteur: Herve AGNOUX <herve.agnoux@diaam-informatique.com>
Date: 03/11/2005 - 18:32

Le Jeudi 3 Novembre 2005 14:45, Robin Berjon a écrit :
>
> Il faut bien distinguer l'objet DOM de sa sérialisation XML. L'objet
> importé a bel et bien le bon namespace, ainsi qu'un préfixe
> correspondant et tout ce qu'il faut (pareil pour ses attributs et
> descendants quand l'option deep est à true). Par contre ton
> implémentation DOM peut ne pas rendre celà évident si tu fais un
> toString sur un élément isolé, et peut parfois se tromper dans sa
> sérialisation du document en entier. Dans ce dernier cas c'est un bug
> (ou une limitation) de l'implémentation, et non pas de la spec.

Effectivement, j'ai fait un petit programme utilitaire pour tester tout ça, et
j'ai pu constater que l'espace de nom est bien le bon dans le document
résultat, mais c'est la sérialization qui ne le rend pas correctement.

Je fais la sérialization par une transformation xslt identité, avec le java
1.4 ; donc ce serait là le bug.

Bon ! Et... connaissez-vous un workeround de façon à ce que la sérialization
me sérialize le document xml correctement ???

Pour info, voici mon horrible utilitaire, qui, à partir de

  "<a xmlns:voir=\"http://voir\"><voir:z/></a>"

 affiche

<?xml version="1.0" encoding="UTF-8"?>
<voir:z/>

getTagName=voir:z
LocalName=z
getNamespaceURI=http://voir

... ce qui montre bien qu'on à bien le namespace dans le dom importé, mais pas
dans la sérialization.

import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import javax.xml.parsers.*;
import java.io.*;
import org.xml.sax.*;

public class Importnode
{
  public static void main(String args[]) throws Exception
  {
    DocumentBuilderFactory dbf;
    DocumentBuilder db;
    Document domori;
    Document domdest;
    Node nodeVoirZ;
    TransformerFactory tf;
    Transformer t;
    StreamResult sr;
    DOMSource doms;
    StringWriter sw;
    String txt;
    Element racinedest;
    
    dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    db = dbf.newDocumentBuilder();
    
    // création du document source
    domori = db.parse(new InputSource(new StringReader(
          "<a xmlns:voir=\"http://voir\"><voir:z/></a>"
          )));
    nodeVoirZ = domori.getDocumentElement().getFirstChild();
    
    // création du document destination et import
    domdest = db.newDocument();
    domdest.appendChild(domdest.importNode(nodeVoirZ, true));
    
    // serialization du document destination
    tf = TransformerFactory.newInstance();
    t = tf.newTransformer();
    doms = new DOMSource(domdest);
    sw = new StringWriter();
    sr = new StreamResult(sw);
    t.transform(doms, sr);
    txt = sw.toString();
    System.out.println(txt);
    
    // affichage des caracteristiques du document destination :
    racinedest = domdest.getDocumentElement();
    System.out.println("getTagName="+racinedest.getTagName());
    System.out.println("LocalName="+racinedest.getLocalName());
    System.out.println("getNamespaceURI="+racinedest.getNamespaceURI());
  }
}

-- 
SARL diaam informatique - 04 77 25 43 28
Ingenierie, développements de systèmes d'information
http://www.diaam-informatique.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)
Received on Thu Nov 3 18:32:13 2005

Archive générée par hypermail 2.1.8 le 30/11/2005 - 16:12 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