“xmlns:xmpp”和“xmpp:xmlns”有啥区别?

Posted

技术标签:

【中文标题】“xmlns:xmpp”和“xmpp:xmlns”有啥区别?【英文标题】:"xmlns:xmpp" & "xmpp:xmlns" What is the Difference?“xmlns:xmpp”和“xmpp:xmlns”有什么区别? 【发布时间】:2010-07-31 13:18:55 【问题描述】:

这个工作正常。

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

有什么区别?第二个这样写合适吗?

附: XHR xml由OXJS库生成。

【问题讨论】:

【参考方案1】:

仅:

xmlns:xmpp='urn:xmpp:xbosh'

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

这个:

xmpp:xmlns='urn:xmpp:xbosh'

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

带有命名空间的 XML 解析器在获得 xmpp:... 属性并且没有 xmpp 的命名空间声明时会报错。此错误将是 Web 服务不给您响应的原因。

【讨论】:

谢谢,你是对的。事实上,我偶然发现了生成消息的来源,它恰好是一个 JSJAC 库,带有来自 OXJS 的示例,github.com/junction/OXJS/blob/master/examples/demo-jsjac/…(第 430 行)。我很惊讶一个人怎么能写成 =(。无论如何,你帮了我很多忙,向我保证第二个选项确实是一个缺陷 呃!是的,那很糟糕。这似乎已在 jsjac 上游修复,请参阅 github.com/sstrigler/JSJaC/commit/…

以上是关于“xmlns:xmpp”和“xmpp:xmlns”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理