Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4301 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  espace de nommage en xml.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

espace de nommage en xml.

n°1570513
lordankou
Posté le 05-06-2007 à 18:01:56  profilanswer
 

Bonjour,
 
j'ai un document XML/SVG chargé et hélas pour moi firefox n'affiche que les éléments qui ont été créé à l'aide la commande createElementNS.
or mon fichier chargé ne contient aucun espace de nommage.
serait-il possible d'utiliser une fonction qui converti un element non créer avec un espace de nommage en un élément créé avec un espace de nommage ?
cordialement

mood
Publicité
Posté le 05-06-2007 à 18:01:56  profilanswer
 

n°1570520
rx__
Paint It Black
Posté le 05-06-2007 à 18:10:00  profilanswer
 

Tu as un petit exemple de code de la création et de l'affichage?

n°1570523
lordankou
Posté le 05-06-2007 à 18:17:56  profilanswer
 

niveau création en fait j'ai ça comme fichier svg :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
  3. <svg>
  4. <svg viewBox="36875.8 -457099 301309.1 441210.4">
  5. <desc>Towns in Ireland</desc>
  6. <g id="roi_towns_point">
  7.  <circle id="Cork" cx="169118.7" cy="-72453.2" r="45200" />
  8.  <circle id="Dublin" cx="315138.6" cy="-234588.7" r="452" />
  9.  <circle id="Dn_Laoghaire" cx="324225.7" cy="-228102.5" r="452" />
  10.                        .....


 
en fait ce qui pose problème avec firefox c'est qu'il refuse d'afficher un cercle sélectionner, par exemple celui ci :
<circle id="Cork" cx="169118.7" cy="-72453.2" r="45200" /> contenu dans une variable foufoune par exemple
mais  si  à l'inverse je cré un nouvel element suivant le schéma suivant :

Code :
  1. test = document.createElementNS(svgNS,"circle" );
  2. test.setAttributeNS(null,"cx",foufoune.getAttribute("cx" ));
  3. test.setAttributeNS(null,"cy",foufoune.getAttribute("cy" ));
  4. test.setAttributeNS(null,"r",foufoune.getAttribute("r" ));
  5. puis
  6. this.myMap.appendChild(test);


il affiche très bien le circle mais par contre
 
this.myMap.appendChild(foufoune);  
ne m'affiche rien sous firefox (sous opera aucun problème du tout).
 
le problème ne vient donc pas des coordonnées qui sont correctes mais à priori qu'il faut que ça soit à tout pris un élément avec espace de nommage sinon ça ne marche pas.  
 
sur le coup je trouve firefox relativement tordu.
 
j'aurai une autre question :
un element crée avec un espace de nommage c'est à dire comme ça :
test = document.createElementNS(svgNS, "rect" );
devrait apparaître comment dans un fichier ? (parce que je me rends compte que modifier chaque élément à la volée n'est pas faisable mais modifier le fichier source contenant mon xml est plus facile).

n°1570538
rx__
Paint It Black
Posté le 05-06-2007 à 18:54:53  profilanswer
 

Ca ressemble plutôt à une erreur omission dans Opera... Les éléments svg, circle, etc. ne prennent le sens qui t'intéresse (à savoir du Scalable Vector Graphics) que s'ils appartiennent au namespace http://www.w3.org/2000/svg. Ce que je veux dire par là c'est que <svg xmlns="http://www.w3.org/2000/svg">...</svg> est bien un document XML avec une image alors que <svg xmlns="urn:rx">...</svg> n'en est pas.
 
Donc la réponse à l'autre question est que tu DOIS ;) mettre le xmlns="http://www.w3.org/2000/svg" dans ton fichier source si tu veux être correct. (le doctype ne suffit pas)


Message édité par rx__ le 05-06-2007 à 18:56:27
n°1570547
lordankou
Posté le 05-06-2007 à 19:12:04  profilanswer
 

oui mais là ou je pense qu'il y a une errreur c'est que je rajoute mes éléments sélectionnés à un élément svg qui contient déjà un espace de nommage. donc dans la théorie tous les éléments enfants héritent de cet espace.  
hors d'après ce que je constate ce n'est pas le cas quand on rajoute un élément provenant d'un fichier. l'héritage ne s'effectue pas alors que le nouvel élément fait bien parti d'un élément svg parent qui possède un espace de nommage.

n°1570572
rx__
Paint It Black
Posté le 05-06-2007 à 20:09:21  profilanswer
 

OK je vois mieux :sleep: As-tu vérifié le contenu de la propriété namespaceURI des éléments?
La doc dit

Citation :

Gecko implementation of createElement doesn't conform to the DOM spec for XUL and XHTML documents: localName and namespaceURI are not set to null on the created element. See bug 280692 for details.


Et effectivement, en testant dans une page xhtml le createElement() me met namespaceURI à http://www.w3.org/1999/xhtml et non à null, ce qui effectivement comme tu dis, devrait permettre d'hériter du namspace de l'élément parent.
 
Pour répondre à ta toute première question, oui, tu peux écrire dans le .namespaceURI pour le changer une fois que l'élément est créé.

n°1570676
lordankou
Posté le 06-06-2007 à 09:03:11  profilanswer
 

maintenant ça marche en rajoutant directement le namespace.
bon dans l'absolu si l'utilisateur fait bien son boulot il est censé me donner un fichier avec un namespace...
mais l'utilisateur étant con par définition je vais rajouter une condition :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  espace de nommage en xml.

 

Sujets relatifs
Problème entre argument + fonction + variable + espace[Java] Connaître l'espace disque disponible
comment connaitre l'espace libre de ma bdd ?Excel problème d'espace dans gestion de fonds
Comment modifier le contenu dun fichier avec ofstream ou autre?Image avec espace en dessous sous FF et pas sous IE
création d'espace membreMenu en image ou en CSS ??
Peux t-on supprimer l'espace créer après un form ?[C++] évaluer l'espace mémoire occupée par une application
Plus de sujets relatifs à : espace de nommage en xml.


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)