espace de nommage en xml. - XML/XSL - Programmation
Marsh Posté le 05-06-2007 à 18:10:00
Tu as un petit exemple de code de la création et de l'affichage?
Marsh Posté le 05-06-2007 à 18:17:56
niveau création en fait j'ai ça comme fichier svg :
Code :
|
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 :
|
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).
Marsh Posté le 05-06-2007 à 18:54:53
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)
Marsh Posté le 05-06-2007 à 19:12:04
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.
Marsh Posté le 05-06-2007 à 20:09:21
OK je vois mieux 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éé.
Marsh Posté le 06-06-2007 à 09:03:11
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
Marsh Posté le 05-06-2007 à 18:01:56
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