2010-07-31 12 views
1

Celui-ci fonctionne Ok."xmlns: xmpp" & "xmpp: xmlns" Quelle est la différence?

curl -H 'Content-Type: application/xml' -d " <body rid='2965554435' xmlns='http://jabber.o=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh' /> " https://dashboard.onsip.com/http-bind 

celui-ci retournait une réponse vide

curl -H 'Content-Type: application/xml' -d " <body rid='2965554435' xmlns='http://jabber.o=utf-8' ver='1.6' xmpp:version='1.0' xmpp:xmlns='urn:xmpp:xbosh' /> " https://dashboard.onsip.com/http-bind 

quelle est la différence? et est le deuxième est approprié d'écrire ainsi?

P.S. XHR xml est généré par la bibliothèque OXJS.

Répondre

3

Seulement:

xmlns:xmpp='urn:xmpp:xbosh' 

déclare un espace de noms. Le préfixe xmlns:... a une signification prédéfinie dans XML With Namespaces, pour lier l'utilisation du préfixe xmpp:... dans le document.

Ce:

xmpp:xmlns='urn:xmpp:xbosh' 

n'est pas une déclaration d'espace de noms, il est un attribut nommé xmlns avec le préfixe xmpp. Le préfixe xmpp n'est lié à aucun espace de noms dans ce document car il n'y a pas de déclaration xmlns:xmpp et ce n'est pas un préfixe prédéfini. Un analyseur XML avec des espaces de noms se plaindra quand il obtiendra xmpp:... attributs et il n'y a aucune déclaration d'espace de noms pour xmpp. Cette erreur explique pourquoi le service Web ne vous répond pas.

+0

Merci, vous avez raison. En effet, j'ai trébuché la source où le message est généré, il s'agit d'une bibliothèque JSJAC qui est venu avec des exemples d'OXJS, http://github.com/junction/OXJS/blob/master/examples/demo-jsjac/jsjac.js (ligne 430). Je suis étonné comment on pourrait écrire ça = (De toute façon vous avez beaucoup aidé à m'assurer que la deuxième option est en effet une faille – simple

+0

Erk! Ouais, c'est plutôt mauvais, cela semble être corrigé en amont dans jsjac, voir http: // github.com/sstrigler/JSJaC/commit/1c4f0b7e3fe7da6276f80227988cf98666278d57 – bobince