IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[XHTML & Namespace]Le DOM des navigateur est-il à la ramasse où je n'ai rien Compris aux Namespaces


Sujet :

XML/XSL et SOAP

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut [XHTML & Namespace]Le DOM des navigateur est-il à la ramasse où je n'ai rien Compris aux Namespaces
    Voilà le contexte
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xhtml xmlns="http://www.w3.org/1999/xhtml"
       xmlns:myNS="http://mydomain.org/NS"
    >
      <head>
      </head>
      <body>
       <span myNS:MyAttribute="aValue">contenu</span>
       <myNS:myTag>coucou</myNS:myTag>
      </body>
    </xhtml>
    De ce que j'ai compris des namspaces je m'attendais à
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    documentElement {nodeName:'HTML', namespaceUri:'http://www.w3.org/1999/xhtml'}
      HTMLHeadElement {namespaceUri:null}
      HTMLBodyElement {namespaceUri:null}
        HTMLSpanElement {
          namespaceUri:null,
          attributes:[
            0:{prefix:'myNS',name:'MyAttribute',value:'aValue',namespaceUri:'http://mydomain.org/NS'}
          ]
        }
          TextNode (contenu)
        Element {prefix:'myNS',nodeName:'myTag', namespaceUri:'http://mydomain.org/NS'}
          TextNode (coucou)

    Soit donc un noeud span avec un attribut de nom "MyAttribute" de valeur "aValue" dans le namespace "http://mydomain.org/NS"
    de même pour le tag "myTag" dans le namespace "http://mydomain.org/NS"

    Or ce n'est pas du tout ce que j'obtiens
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    documentElement {nodeName:'HTML', namespaceUri:'http://www.w3.org/1999/xhtml'}
      HTMLHeadElement {namespaceUri:null}
      HTMLBodyElement {namespaceUri:null}
        HTMLSpanElement {
          namespaceUri:null
          attributes:[
            0:{prefix:null,name:'myNS:MyAttribute',value:'aValue',namespaceUri:null}
          ]
        }
          TextNode (contenu)
        Element {prefix:null,nodeName:'myNS:myTag', namespaceUri:null}
          TextNode (coucou)
    j'ai l'attribut "myNS:MyAttribute" dans le namspace par défaut et le tag "myNS:myTag" lui aussi dans le namspace par défaut

    pourtant lorsque j'utilise javascript pour ajouter de attributs dans le namespace ça marche
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    body.firstChild.setAttributeNS('http://mydomain.org/NS','other',12832);
    j'ai bien
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    documentElement {nodeName:'HTML', namespaceUri:'http://www.w3.org/1999/xhtml'}
      HTMLHeadElement {namespaceUri:null}
      HTMLBodyElement {namespaceUri:null}
        HTMLSpanElement {
          namespaceUri:null,
          attributes:[
            0:{prefix:null,name:'myNS:MyAttribute',value:'aValue',namespaceUri:null}
            1:{prefix:null,name:'other',value:12832,namespaceUri:'http://mydomain.org/NS'}
          ]
        }
          TextNode (contenu)
        Element {prefix:null,nodeName:'myNS:myTag', namespaceUri:null}
          TextNode (coucou)
    l'attribut other a bien été déclaré dans le namespace "http://mydomain.org/NS" alors que MyAttribute (qui était dans le code source) est vu dans le namspace par défaut mais avec un nom contenant le préfixe

    J'ai la même chose sous FF, Chorme, Omniweb
    Merci de votre aide
    A+JYT

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    Bonjour,

    Je pense surtout que les navigateurs et plus généralement tous les parsers n'autorisent pas de mélanger un élément d'un namespace et un attribut d'un autre namespace. Lorsque le navigateur a parsé la page il a trouvé la balise span du namespace global, et il a donc attribué tous ses composants au meme namespace, MyNS:MyAttribute est donc devenu le nom de l'attribut dans l'espace de nom global.

    Lorsque tu veux rajouter ton attribut "other" tu lui précises bien dans quel espace de nom tu veux le placer, je pense donc que c'est pour ça que dans ce cas ça a fonctionné.
    Linux because rebooting is just for adding medias

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    c'est bien ce que je pense aussi
    mais cela ne corresponds pas à ce que dit la nome DOM XML

    c'est le même comportement pour le tag myTag

    je me demande si ce n'est pas du à la présence de Any dans la liste des éléments et des attributs dans le schéma de XHTML

    je me demande si le parser tant qu'il matche avec le schéma principal ne chercha pas plus loin.

    myNS:MyAttribute matche avec anyAttribute donc il est valable donc on ne cherche pas de nameSpace
    myNS:myTag matche avec any donc même résultat.

    en tout cas ça pose des pb si on veut traiter les namespaces dans un navigateur.

    A+JYT

Discussions similaires

  1. Extraction des liens d'un XHTML avec l'API DOM
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 18h49
  2. Réponses: 3
    Dernier message: 07/05/2010, 13h54
  3. Réponses: 29
    Dernier message: 13/07/2009, 16h34
  4. [CSS - Javascript ?] Les barres des navigateurs
    Par sempire dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/10/2005, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo