“xmlns:xmpp”&“xmpp:xmlns”有什么区别?

问题描述:

这个工作正常。“xmlns:xmpp”&“xmpp:xmlns”有什么区别?

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 

这一个是返回一个空的响应

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 

的区别是什么?并且是第二个适合写的呢?

P.S. XHR xml由OXJS库生成。

只有:

xmlns:xmpp='urn:xmpp:xbosh' 

声明了一个命名空间。前缀xmlns:...XML With Namespaces中具有预定义的含义,用于绑定在文档中使用前缀xmpp:...

此:

xmpp:xmlns='urn:xmpp:xbosh' 

不是一个命名空间声明,它的命名xmlns带有前缀xmpp的属性。前缀xmpp未绑定到本文档中的任何名称空间,因为没有xmlns:xmpp声明,并且它不是预定义的前缀。

带名称空间解析器的XML在获取xmpp:...属性时会发出抱怨,并且xmpp没有名称空间声明。这个错误将会是Web服务给你没有回应的原因。

+0

谢谢,你是对的。事实上,我偶然发现了消息生成的源头,它恰好是一个JSJAC库,它附带了OXJS的示例,http://github.com/junction/OXJS/blob/master/examples/demo-jsjac/jsjac.js(行430)。我很惊讶我怎么写这个=(无论如何,你帮了我很大的忙,以确保第二个选项确实是一个缺陷 – simple 2010-07-31 13:32:55

+0

Erk!是的,这很糟糕。这似乎是在jsjac的上游固定的,参见http:// github.com/sstrigler/JSJaC/commit/1c4f0b7e3fe7da6276f80227988cf98666278d57 – bobince 2010-07-31 13:48:02