2010-07-31 184 views
1

這個工作正常。「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庫生成。

回答

3

只有:

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