RFC3920可扩展消息出席协议(XMPP):核心 11 XMPP内的XML使用

11. XMPP内的XML使用

11.1 约束
      XMPP是流XML元素的一个简单与特殊的协议,用来近实时的交换结构化信息。由于XMPP不需要任意分析与完整XML文档,这儿没有XMPP需要支持[XML]全特征的需求。特别的,以下约束应用。

      关于XML产生,一个XMPP实现不准注入以下任意一个XML流:
*评论(定义在[XML]节2。5)
*处理说明(2。6节)
*内部或外部DTD子集(2。8节)
*除了预定义实体(4。6节)的内部或外部实体参考。
*包含映射到预定义实体(4。6节)保留字符的字符数据或属性值;那样的字符必须被避免

      关于XML处理,如果一个XMPP实现接收到那样的约束XML数据,它必须忽略此数据。

11.2 XML命名空间名与前缀
      XML命名空间[XML-NAMES]被用在所有与XMPP-兼容的XML中,去创建数据拥有权的严格界限。命名空间的基本功能是分离结构的混合在一起的XML元素的不同词汇。确保XMPP-兼容XML是命名空间-了解使任意允许的XML能够与XMPP中的任意数据元素结构化的混合。XML命名空间名与前缀的规则定义在以下子部分。

11.2.1 流命名空间
      流命名空间声明在所有XML流头中都是需要的。流命名空间名必须是'http://etherx.jabber.org/streams'。<stream/>元素与它的<features/>与<error/>子元素的元素名必须被所有实例中的流命名空间认定合格。一个实现应当为那些元素产生仅有的'stream:'前缀,并且因为历史原因可能接受仅有的'stream:'前缀。

11.2.2 缺省命名空间
      缺省命名空间声明是需要的,并且用在所有XML流中,为了定义允许的根流元素的第一级子元素。此命名空间声明必须与初始流与响应流相同,为了两个流一致的被认证合格。缺省命名空间声明应用于流与所有在由其它命名空间认证合格的流(除非由另一命名空间显示认定合格,或由流命名空间或回叫命名空间前缀认证)中发送的节。

      服务器实现必须支持以下两个缺省命名空间(由于历史原因,一些实现可能支持仅有的那些两个缺省命名空间):
*jabber:client——缺省命名空间,当流用于客户端与服务器通信时所声明的。
*jabber:server——缺省命名空间,当流用于两服务器间通信时声明的。

      客户端实现必须支持'jabber:client'缺省命名空间,并且由于历史原因可能只支持缺省命名空间。

      实现不准为缺省命名空间中的元素产生命名空间前缀,如果缺省命名空间是'jabber:client'或'jabber:server'。一个实现不应当为元素产生命名空间前缀,元素由'jabber:client'与'jabber:server'之外的内容(与流相反)命名空间认证的。

      注:'jabber:client'与'jabber:server'命名空间是接近同一的,但用在不同的上下文中(客户端到服务顺通信用'jabber:client'与服务器到服务器通信用'jabber:server')。这两个仅有的不同是‘to’与‘from’属性在'jabber:client'中发送的节中是可选的,然而在'jabber:server'中发送的节是必须的。如果一个兼容实现接受一个由'jabber:client'或'jabber:server'命名空间认证合格的流,它必须支持所有三个核心节种类的(消息,出席,与IQ)通用属性(9。1节)与基本语义(9。2节)。

11.2.3 回叫命名空间
      回叫命名空间声明对于所有用在服务器回叫(8节)中的元素都是需要的。回叫命名空间的名字必须是'jabber:server:dialback'。所有由这个命名空间认证合格的元素必须被加前缀。一个实现应当为那种元素仅产生'db:'前缀并可能接受仅有的'db:'前缀。

11.3 确认(验证)
      除了'jabber:server'命名空间中节的相关‘to’与‘from’地址,服务器不为转发到客户端或另一个服务器的XML元素负责;一个实现可能选择提供仅有的认证数据元素,但这是可选的(虽然一个实现不准接受XML,那也不是好格式)。客户端不应当依赖此能力去发送数据,这些数据与方案并不符,并且应当忽略一个来的XML流中的非构造元素或属性。XML流与节的验证是可选的,包含在此的方案仅用于描述目的。

11.4 包含文本声明
      实现应当在发送流头之前发送文本声明。应用必须遵循文本声明包含在内的相关环境的[XML]中的规则。

11.5 字符编码
      实现必须支持UTF-8 (RFC 3629 [UTF-8])统一字符集(ISO/IEC 10646-1 [UCS2])字符传输,RFC 2277 [CHARSET]中查。实现不准试图使用其它编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值