<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.jabbercn.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.jabbercn.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zoey1990</id>
		<title>Jabber/XMPP中文翻译计划 - 用户贡献 [zh-cn]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.jabbercn.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zoey1990"/>
		<link rel="alternate" type="text/html" href="http://wiki.jabbercn.org/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Zoey1990"/>
		<updated>2026-04-23T21:22:09Z</updated>
		<subtitle>用户贡献</subtitle>
		<generator>MediaWiki 1.18.2</generator>

	<entry>
		<id>http://wiki.jabbercn.org/XEP-0054</id>
		<title>XEP-0054</title>
		<link rel="alternate" type="text/html" href="http://wiki.jabbercn.org/XEP-0054"/>
				<updated>2012-09-29T08:17:03Z</updated>
		
		<summary type="html">&lt;p&gt;Zoey1990: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:XMPP扩展]]&lt;br /&gt;
[[Category:已翻译]]&lt;br /&gt;
&lt;br /&gt;
'''本文的英文原文来自[http://www.xmpp.org/extensions/xep-0054.html XEP-0054]'''&lt;br /&gt;
&lt;br /&gt;
'''XEP-0054:电子名片'''&lt;br /&gt;
&lt;br /&gt;
摘要: 本文档提供了目前在Jabber社区中使用的vCard-XML格式的典型文档.&lt;br /&gt;
&lt;br /&gt;
作者: Peter Saint-Andre&lt;br /&gt;
&lt;br /&gt;
版权: ? 1999 - 2010 XMPP标准化基金会(XSF). 参见[[XEP-0054#附录C:法律通告|法律通告]].&lt;br /&gt;
&lt;br /&gt;
状态: 活跃的&lt;br /&gt;
&lt;br /&gt;
类型: 历史的&lt;br /&gt;
&lt;br /&gt;
版本: 1.2&lt;br /&gt;
&lt;br /&gt;
最后更新日期: 2008-07-16&lt;br /&gt;
&lt;br /&gt;
注意: 这个历史性的标准提供了目前在Jabber/XMPP社区中使用的一个协议.本文不是XMPP标准化基金会标准跟踪过程中的标准跟踪协议,无论如何,将来它可能被转化为标准跟踪,也可能被一个更新的协议取代.&lt;br /&gt;
&lt;br /&gt;
==绪论==&lt;br /&gt;
&lt;br /&gt;
这份vCard-XML格式的说明文档在Jabber社区内正被使用。未来的说明文档将会推荐一个标准协议来取代这份文档。&lt;br /&gt;
&lt;br /&gt;
对于用户来说，基础的功能是存储和获取用户的电子身份，该信息是用XML表示的，数据的存储取决于所有现存的Jabber服务器的实现。这可以通过发送类型为“set”(存储)或者“get”(获取)的&amp;lt;iq/&amp;gt;到Jabber服务器来完成，该&amp;lt;iq/&amp;gt;节点包含了&amp;lt;vCard/&amp;gt;子节点并用“vcard-temp”命名空间限定，&amp;lt;vCard/&amp;gt;包含实际的vCard-XML格式的元素，这在vCard-XML DTD中定义。然后其他用户就可以查看某人的vcard信息了。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
&lt;br /&gt;
vCard是一种现存的、广泛使用的，用户个人信息存储的标准，有点像是电子名片。vCard的格式在[http://tools.ietf.org/html/rfc2426 RFC 2426] [[XEP-0054#附录G:备注|1]]中定义。&lt;br /&gt;
&lt;br /&gt;
在1998年和1999年，Frank Dawson提交了4个修订的Internet草案描述了用XML表示的vCard格式。起初，当Jabberd开源项目在寻找一种存储个人信息的方法时，jabberd开发者最近一次修订版本是draft-dawson-vcard-xml-dtd-01 [[XEP-0054#附录G:备注|2]]。他也在1998年11月15日提交了第二次修订版 [[XEP-0054#附录G:备注|3]] 和在1999年6月22提交了第三次修订版 [[XEP-0054#附录G:备注|4]]。&lt;br /&gt;
&lt;br /&gt;
不幸的是，Dawson的建议没有被提交到IETF的标准进程。但是因为某些原因被遗忘和丢失了，Jabber项目继续使用draft-dawson-vcard-xml-dtd-01 的DTD，为了使它适合在Jabber(增加了JABBERID和DESC的元素)中使用，它被做两个小的修改。也指定了元素名是大写而不是在draft-dawson-vcard-xml-dtd-01中定义的小写字母。另外，Jabber社区延续了关于版本信息的草案的使用(而不是DTD)，把它作为vCard元素的属性而不是子元素。这格式在Jabber中和在“vcard-temp”命名空间下被Jabber社区实现。&lt;br /&gt;
&lt;br /&gt;
==用例==&lt;br /&gt;
&lt;br /&gt;
===检索用户的电子身份===&lt;br /&gt;
&lt;br /&gt;
用户通过发送不含'to'地址并且包含以'vcard-temp'命名空间为限制的&amp;lt;vCard/&amp;gt;子元素的IQ-get节来检索他(她)自己的vCard电子身份。&lt;br /&gt;
&lt;br /&gt;
'''例子1. vCard检索请求'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='stpeter@jabber.org/roundabout'&lt;br /&gt;
    id='v1'&lt;br /&gt;
    type='get'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'/&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果用户拥有vCard，则服务器必须(MUST)返回IQ-result。&lt;br /&gt;
&lt;br /&gt;
'''例子2. 服务器返回vCard'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v1'&lt;br /&gt;
    to='stpeter@jabber.org/roundabout'&lt;br /&gt;
    type='result'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'&amp;gt;&lt;br /&gt;
    &amp;lt;FN&amp;gt;Peter Saint-Andre&amp;lt;/FN&amp;gt;&lt;br /&gt;
    &amp;lt;N&amp;gt;&lt;br /&gt;
      &amp;lt;FAMILY&amp;gt;Saint-Andre&amp;lt;/FAMILY&amp;gt;&lt;br /&gt;
      &amp;lt;GIVEN&amp;gt;Peter&amp;lt;/GIVEN&amp;gt;&lt;br /&gt;
      &amp;lt;MIDDLE/&amp;gt;&lt;br /&gt;
    &amp;lt;/N&amp;gt;&lt;br /&gt;
    &amp;lt;NICKNAME&amp;gt;stpeter&amp;lt;/NICKNAME&amp;gt;&lt;br /&gt;
    &amp;lt;URL&amp;gt;http://www.xmpp.org/xsf/people/stpeter.shtml&amp;lt;/URL&amp;gt;&lt;br /&gt;
    &amp;lt;BDAY&amp;gt;1966-08-06&amp;lt;/BDAY&amp;gt;&lt;br /&gt;
    &amp;lt;ORG&amp;gt;&lt;br /&gt;
      &amp;lt;ORGNAME&amp;gt;XMPP Standards Foundation&amp;lt;/ORGNAME&amp;gt;&lt;br /&gt;
      &amp;lt;ORGUNIT/&amp;gt;&lt;br /&gt;
    &amp;lt;/ORG&amp;gt;&lt;br /&gt;
    &amp;lt;TITLE&amp;gt;Executive Director&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
    &amp;lt;ROLE&amp;gt;Patron Saint&amp;lt;/ROLE&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;WORK/&amp;gt;&amp;lt;VOICE/&amp;gt;&amp;lt;NUMBER&amp;gt;303-308-3282&amp;lt;/NUMBER&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;WORK/&amp;gt;&amp;lt;FAX/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;WORK/&amp;gt;&amp;lt;MSG/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;ADR&amp;gt;&lt;br /&gt;
      &amp;lt;WORK/&amp;gt;&lt;br /&gt;
      &amp;lt;EXTADD&amp;gt;Suite 600&amp;lt;/EXTADD&amp;gt;&lt;br /&gt;
      &amp;lt;STREET&amp;gt;1899 Wynkoop Street&amp;lt;/STREET&amp;gt;&lt;br /&gt;
      &amp;lt;LOCALITY&amp;gt;Denver&amp;lt;/LOCALITY&amp;gt;&lt;br /&gt;
      &amp;lt;REGION&amp;gt;CO&amp;lt;/REGION&amp;gt;&lt;br /&gt;
      &amp;lt;PCODE&amp;gt;80202&amp;lt;/PCODE&amp;gt;&lt;br /&gt;
      &amp;lt;CTRY&amp;gt;USA&amp;lt;/CTRY&amp;gt;&lt;br /&gt;
    &amp;lt;/ADR&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;HOME/&amp;gt;&amp;lt;VOICE/&amp;gt;&amp;lt;NUMBER&amp;gt;303-555-1212&amp;lt;/NUMBER&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;HOME/&amp;gt;&amp;lt;FAX/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;HOME/&amp;gt;&amp;lt;MSG/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;ADR&amp;gt;&lt;br /&gt;
      &amp;lt;HOME/&amp;gt;&lt;br /&gt;
      &amp;lt;EXTADD/&amp;gt;&lt;br /&gt;
      &amp;lt;STREET/&amp;gt;&lt;br /&gt;
      &amp;lt;LOCALITY&amp;gt;Denver&amp;lt;/LOCALITY&amp;gt;&lt;br /&gt;
      &amp;lt;REGION&amp;gt;CO&amp;lt;/REGION&amp;gt;&lt;br /&gt;
      &amp;lt;PCODE&amp;gt;80209&amp;lt;/PCODE&amp;gt;&lt;br /&gt;
      &amp;lt;CTRY&amp;gt;USA&amp;lt;/CTRY&amp;gt;&lt;br /&gt;
    &amp;lt;/ADR&amp;gt;&lt;br /&gt;
    &amp;lt;EMAIL&amp;gt;&amp;lt;INTERNET/&amp;gt;&amp;lt;PREF/&amp;gt;&amp;lt;USERID&amp;gt;stpeter@jabber.org&amp;lt;/USERID&amp;gt;&amp;lt;/EMAIL&amp;gt;&lt;br /&gt;
    &amp;lt;JABBERID&amp;gt;stpeter@jabber.org&amp;lt;/JABBERID&amp;gt;&lt;br /&gt;
    &amp;lt;DESC&amp;gt;&lt;br /&gt;
      More information about me is located on my &lt;br /&gt;
      personal website: http://www.saint-andre.com/&lt;br /&gt;
    &amp;lt;/DESC&amp;gt;&lt;br /&gt;
  &amp;lt;/vCard&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果不存在 vCard , 服务必须 MUST 返回一个节错误 (它应该 (SHOULD) 是 &amp;lt;item-not-found/&amp;gt;) 或一个包含空的 &amp;lt;vCard/&amp;gt; 元素的 IQ-result.&lt;br /&gt;
&lt;br /&gt;
例子 3. 没有vCard(条目没找到)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v1'&lt;br /&gt;
    to='stpeter@jabber.org/roundabout'&lt;br /&gt;
    type='error'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'/&amp;gt;&lt;br /&gt;
  &amp;lt;error type='cancel'&amp;gt;&lt;br /&gt;
    &amp;lt;item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/&amp;gt;&lt;br /&gt;
  &amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例子 4. 没有vCard(空元素)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v1'&lt;br /&gt;
    to='stpeter@jabber.org/roundabout'&lt;br /&gt;
    type='result'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'/&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===更新用户的vCard===&lt;br /&gt;
&lt;br /&gt;
用户通过发送类型为'set'，不带'to'地址的IQ节来发布或者更新他(她)的vCard，，并且符合前个用例的格式。&lt;br /&gt;
&lt;br /&gt;
'''例子5. vCard更新请求'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v2' type='set'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'&amp;gt;&lt;br /&gt;
    &amp;lt;FN&amp;gt;Peter Saint-Andre&amp;lt;/FN&amp;gt;&lt;br /&gt;
    &amp;lt;N&amp;gt;&lt;br /&gt;
      &amp;lt;FAMILY&amp;gt;Saint-Andre&amp;lt;/FAMILY&amp;gt;&lt;br /&gt;
      &amp;lt;GIVEN&amp;gt;Peter&amp;lt;/GIVEN&amp;gt;&lt;br /&gt;
      &amp;lt;MIDDLE/&amp;gt;&lt;br /&gt;
    &amp;lt;/N&amp;gt;&lt;br /&gt;
    &amp;lt;NICKNAME&amp;gt;stpeter&amp;lt;/NICKNAME&amp;gt;&lt;br /&gt;
    &amp;lt;URL&amp;gt;http://www.xmpp.org/xsf/people/stpeter.shtml&amp;lt;/URL&amp;gt;&lt;br /&gt;
    &amp;lt;BDAY&amp;gt;1966-08-06&amp;lt;/BDAY&amp;gt;&lt;br /&gt;
    &amp;lt;ORG&amp;gt;&lt;br /&gt;
      &amp;lt;ORGNAME&amp;gt;XMPP Standards Foundation&amp;lt;/ORGNAME&amp;gt;&lt;br /&gt;
      &amp;lt;ORGUNIT/&amp;gt;&lt;br /&gt;
    &amp;lt;/ORG&amp;gt;&lt;br /&gt;
    &amp;lt;TITLE&amp;gt;Executive Director&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
    &amp;lt;ROLE&amp;gt;Patron Saint&amp;lt;/ROLE&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;WORK/&amp;gt;&amp;lt;VOICE/&amp;gt;&amp;lt;NUMBER&amp;gt;303-308-3282&amp;lt;/NUMBER&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;WORK/&amp;gt;&amp;lt;FAX/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;WORK/&amp;gt;&amp;lt;MSG/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;ADR&amp;gt;&lt;br /&gt;
      &amp;lt;WORK/&amp;gt;&lt;br /&gt;
      &amp;lt;EXTADD&amp;gt;Suite 600&amp;lt;/EXTADD&amp;gt;&lt;br /&gt;
      &amp;lt;STREET&amp;gt;1899 Wynkoop Street&amp;lt;/STREET&amp;gt;&lt;br /&gt;
      &amp;lt;LOCALITY&amp;gt;Denver&amp;lt;/LOCALITY&amp;gt;&lt;br /&gt;
      &amp;lt;REGION&amp;gt;CO&amp;lt;/REGION&amp;gt;&lt;br /&gt;
      &amp;lt;PCODE&amp;gt;80202&amp;lt;/PCODE&amp;gt;&lt;br /&gt;
      &amp;lt;CTRY&amp;gt;USA&amp;lt;/CTRY&amp;gt;&lt;br /&gt;
    &amp;lt;/ADR&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;HOME/&amp;gt;&amp;lt;VOICE/&amp;gt;&amp;lt;NUMBER&amp;gt;303-555-1212&amp;lt;/NUMBER&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;HOME/&amp;gt;&amp;lt;FAX/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;TEL&amp;gt;&amp;lt;HOME/&amp;gt;&amp;lt;MSG/&amp;gt;&amp;lt;NUMBER/&amp;gt;&amp;lt;/TEL&amp;gt;&lt;br /&gt;
    &amp;lt;ADR&amp;gt;&lt;br /&gt;
      &amp;lt;HOME/&amp;gt;&lt;br /&gt;
      &amp;lt;EXTADD/&amp;gt;&lt;br /&gt;
      &amp;lt;STREET/&amp;gt;&lt;br /&gt;
      &amp;lt;LOCALITY&amp;gt;Denver&amp;lt;/LOCALITY&amp;gt;&lt;br /&gt;
      &amp;lt;REGION&amp;gt;CO&amp;lt;/REGION&amp;gt;&lt;br /&gt;
      &amp;lt;PCODE&amp;gt;80209&amp;lt;/PCODE&amp;gt;&lt;br /&gt;
      &amp;lt;CTRY&amp;gt;USA&amp;lt;/CTRY&amp;gt;&lt;br /&gt;
    &amp;lt;/ADR&amp;gt;&lt;br /&gt;
    &amp;lt;EMAIL&amp;gt;&amp;lt;INTERNET/&amp;gt;&amp;lt;PREF/&amp;gt;&amp;lt;USERID&amp;gt;stpeter@jabber.org&amp;lt;/USERID&amp;gt;&amp;lt;/EMAIL&amp;gt;&lt;br /&gt;
    &amp;lt;JABBERID&amp;gt;stpeter@jabber.org&amp;lt;/JABBERID&amp;gt;&lt;br /&gt;
    &amp;lt;DESC&amp;gt;&lt;br /&gt;
      Check out my blog at https://stpeter.im/&lt;br /&gt;
    &amp;lt;/DESC&amp;gt;&lt;br /&gt;
  &amp;lt;/vCard&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后服务器返回IQ-result(或者IQ-error)&lt;br /&gt;
&lt;br /&gt;
'''例子6. 服务器返回成功'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v2'&lt;br /&gt;
    to='stpeter@jabber.org/roundabout'&lt;br /&gt;
    type='result'/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意，上述的IQ-Set只有一个元素发生了变化(&amp;lt;DESC/&amp;gt;元素)。目前没有可以局部更新vCard的方法，为了更新任何一部分的vCard,必须发送完整的vCard到服务器。&lt;br /&gt;
&lt;br /&gt;
如果用户企图执行一个关于其他用户的vCard的IQ set(即，把to地址设为不是发送者的纯JID)，那么服务必须(MUST)返回一个节错误，应该为 &amp;lt;forbidden/&amp;gt; 或 &amp;lt;not-allowed/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''例子 7. 实体试图修改别人的vCard'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v2'&lt;br /&gt;
    to='stpeter@jabber.org/roundabout'&lt;br /&gt;
    type='error'&amp;gt;&lt;br /&gt;
  &amp;lt;error type='auth'&amp;gt;&lt;br /&gt;
    &amp;lt;forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/&amp;gt;&lt;br /&gt;
  &amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===查看另一个用户的vCard===&lt;br /&gt;
&lt;br /&gt;
用户可能要查看另一个用户的vCard,通过发送类型为get的IQ到另一个用户的纯JID&lt;br /&gt;
&lt;br /&gt;
'''例子8. 请求另一个用户的vCard'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='stpeter@jabber.org/roundabout'&lt;br /&gt;
    id='v3'&lt;br /&gt;
    to='jer@jabber.org'&lt;br /&gt;
    type='get'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'/&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
根据XMPP Core [[XEP-0054#附录G:备注|5]]，一个兼容的服务器必须(MUST)代表(被请求者)响应请求并且不将IQ转发到被请求者的已连接的资源。&lt;br /&gt;
&lt;br /&gt;
'''例子9. 接收另一个用户的vCard'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='jer@jabber.org' &lt;br /&gt;
    to='stpeter@jabber.org/roundabout' &lt;br /&gt;
    type='result'&lt;br /&gt;
    id='v3'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'&amp;gt;&lt;br /&gt;
    &amp;lt;FN&amp;gt;JeremieMiller&amp;lt;/FN&amp;gt;&lt;br /&gt;
    &amp;lt;N&amp;gt;&lt;br /&gt;
      &amp;lt;GIVEN&amp;gt;Jeremie&amp;lt;/GIVEN&amp;gt;&lt;br /&gt;
      &amp;lt;FAMILY&amp;gt;Miller&amp;lt;/FAMILY&amp;gt;&lt;br /&gt;
      &amp;lt;MIDDLE/&amp;gt;&lt;br /&gt;
    &amp;lt;/N&amp;gt;&lt;br /&gt;
    &amp;lt;NICKNAME&amp;gt;jer&amp;lt;/NICKNAME&amp;gt;&lt;br /&gt;
    &amp;lt;EMAIL&amp;gt;&amp;lt;INTERNET/&amp;gt;&amp;lt;PREF/&amp;gt;&amp;lt;USERID&amp;gt;jeremie@jabber.org&amp;lt;/USERID&amp;gt;&amp;lt;/EMAIL&amp;gt;&lt;br /&gt;
    &amp;lt;JABBERID&amp;gt;jer@jabber.org&amp;lt;/JABBERID&amp;gt;&lt;br /&gt;
  &amp;lt;/vCard&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果不存在 vCard 或该用户不存在, 服务必须 MUST 返回一个节错误, 它应该 SHOULD 是 &amp;lt;service-unavailable/&amp;gt; 或 &amp;lt;item-not-found/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''例子 10. 无vCard'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq id='v3'&lt;br /&gt;
    to='stpeter@jabber.org/roundabout'&lt;br /&gt;
    type='error'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'/&amp;gt;&lt;br /&gt;
  &amp;lt;error type='cancel'&amp;gt;&lt;br /&gt;
    &amp;lt;service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/&amp;gt;&lt;br /&gt;
  &amp;lt;/error&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意：vCard的使用不受限于自然人用户帐号。比如，XMPP服务器可以有自己的vCard，该vCard可以被服务器主机上的组织，物理位置，相关的联系地址定义。&lt;br /&gt;
&lt;br /&gt;
==确定支持==&lt;br /&gt;
&lt;br /&gt;
如果一个实体支持 vcard-temp 协议, 它必须 MUST 报告这一点，通过在对[[XEP-0030|服务发现]] [[XEP-0054#附录G:备注|6]]信息请求disco#info的回应中包含一个服务发现特性 &amp;quot;vcard-temp&amp;quot; (关于发行一个或多个名字空间，参见[[XEP-0054#协议名字空间|协议名字空间]]):&lt;br /&gt;
&lt;br /&gt;
'''例子 11. 服务发现信息请求'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq type='get'&lt;br /&gt;
    from='juliet@capulet.lit/balcony'&lt;br /&gt;
    to='capulet.lit'&lt;br /&gt;
    id='disco1'&amp;gt;&lt;br /&gt;
  &amp;lt;query xmlns='http://jabber.org/protocol/disco#info'/&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''例子 12. 服务发现信息应答'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq type='result'&lt;br /&gt;
    from='capulet.lit'&lt;br /&gt;
    to='juliet@capulet.lit/balcony'&lt;br /&gt;
    id='disco1'&amp;gt;&lt;br /&gt;
  &amp;lt;query xmlns='http://jabber.org/protocol/disco#info'&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;feature var='vcard-temp'/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/query&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这个信息也可以通过 [http://xmpp.org/extensions/xep-0115.html 实体能力] [[XEP-0054#附录G:备注|7]] 为那些共享出席信息的实体封装.&lt;br /&gt;
&lt;br /&gt;
==安全事项==&lt;br /&gt;
&lt;br /&gt;
发送到Jabber服务器的vCard信息是在整个世界范围内可读的；因此，用户应该谨慎地决定更新哪些信息。(比如，街道地址，个人电话，email地址)。&lt;br /&gt;
&lt;br /&gt;
==IANA事项==&lt;br /&gt;
&lt;br /&gt;
本文档与[http://www.iana.org/ 互联网编号分配授权机构] [[XEP-0054#附录G:备注|8]]无关。&lt;br /&gt;
&lt;br /&gt;
==XMPP注册事项==&lt;br /&gt;
&lt;br /&gt;
===协议名字空间===&lt;br /&gt;
&lt;br /&gt;
[http://www.xmpp.org/registrar/ XMPP Registrar] [[XEP-0054#附录G:备注|9]]在它的协议名字空间注册项中包含了'vcard-temp'(参考&amp;lt;http://www.xmpp.org/registrar/namespaces.html&amp;gt;)。&lt;br /&gt;
&lt;br /&gt;
===URI查询类型===&lt;br /&gt;
&lt;br /&gt;
作为由[http://www.xmpp.org/extensions/xep-0147.html XMPP URI Query Components] [[XEP-0054#附录G:备注|10]]授权的机构，XMPP登记处维护着一个用于 XMPP URIs 的查询和键-值对的注册项（见&amp;lt;[http://www.xmpp.org/registrar/querytypes.html http://www.xmpp.org/registrar/querytypes.html]&amp;gt;）。&lt;br /&gt;
&lt;br /&gt;
vCard的查询类型是作为vCard相关的动作被注册的。&lt;br /&gt;
&lt;br /&gt;
'''例子13. vCard 动作：IRI/URI'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmpp:romeo@montague.net?vcard&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''例子14. vCard动作：结果节'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq to='romeo@montague.net' type='get'&amp;gt;&lt;br /&gt;
  &amp;lt;vCard xmlns='vcard-temp'/&amp;gt;&lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下面的提交注册了vCard查询类型。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;querytype&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;vcard&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;proto&amp;gt;vcard-temp&amp;lt;/proto&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;enables retrieval of an entity's vCard data&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;doc&amp;gt;XEP-0054&amp;lt;/doc&amp;gt;&lt;br /&gt;
&amp;lt;/querytype&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==实现注意事项==&lt;br /&gt;
&lt;br /&gt;
注意以下事项：&lt;br /&gt;
&lt;br /&gt;
* 这个被包含的元素的正确大小写是&amp;lt;vCard/&amp;gt;(XML元素名称是大小写敏感的)。&lt;br /&gt;
&lt;br /&gt;
* 所有在&amp;lt;vCard/&amp;gt;中的元素必须(MUST)是大写的(即使和draft-dawson-vcard-xml-dtd-01中的不一致)&lt;br /&gt;
&lt;br /&gt;
* 国家的简称是&amp;lt;CTRY/&amp;gt;元素，不是&amp;lt;COUNTRY/&amp;gt;元素(即使和draft-dawson-vcard-xml-dtd-01不一致)。&lt;br /&gt;
&lt;br /&gt;
* 电话号码必须(MUST)包含在&amp;lt;NUMBER&amp;gt;元素里，而不是包含在CDATA中的&amp;lt;TEL/&amp;gt;元素里&lt;br /&gt;
&lt;br /&gt;
* 如果&amp;lt;TEL/&amp;gt;元素没有包含电话号码，那么空的&amp;lt;NUMBER/&amp;gt;也必须被包含。&lt;br /&gt;
&lt;br /&gt;
* Email地址必须(MUST)包含在&amp;lt;USERID&amp;gt;元素里，而不是CDATA中的&amp;lt;EMAIL/&amp;gt;元素&lt;br /&gt;
&lt;br /&gt;
* 一些Jabber实现会添加version属性到&amp;lt;vCard/&amp;gt;元素，属性值为2.0或者3.0。DTD是不正确的，draft-dawson-vcard-xml-dtd-01中的例子明确的指出通过version属性表示版本信息，而不是DTD中定义的&amp;lt;VERSION/&amp;gt;元素。然而，为了符合draft-dawson-vcard-xml-dtd-01，版本信息应该被设置为3.0，不是2.0。&lt;br /&gt;
&lt;br /&gt;
==DTD==&lt;br /&gt;
&lt;br /&gt;
下面的DTD包含了轻微修改过的draft-dawson-vcard-xml-dtd-01版本。除此外，其他唯一修改的地方就是添加JABBERID和DESC元素。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Copyright (C) The Internet Society (2000). All Rights Reserved.&lt;br /&gt;
&lt;br /&gt;
This document and translations of it may be copied and&lt;br /&gt;
furnished to others, and derivative works that comment&lt;br /&gt;
on or otherwise explain it or assist in its implmentation &lt;br /&gt;
may be prepared, copied, published and distributed, in whole&lt;br /&gt;
or in part, without restriction of any kind, provided that&lt;br /&gt;
the above copyright notice and this paragraph are included&lt;br /&gt;
on all such copies and derivative works.&lt;br /&gt;
&lt;br /&gt;
However, this document itself may not be modified in any&lt;br /&gt;
way, such as by removing the copyright notice or references&lt;br /&gt;
to the Internet Society or other Internet organizations,&lt;br /&gt;
except as needed for the purpose of developing Internet&lt;br /&gt;
standards in which case the procedures for copyrights&lt;br /&gt;
defined in the Internet Standards process MUST be followed,&lt;br /&gt;
or as required to translate it into languages other than English.&lt;br /&gt;
&lt;br /&gt;
The limited permissions granted above are perpetual and will&lt;br /&gt;
not be revoked by the Internet Society or its successors or&lt;br /&gt;
assigns.&lt;br /&gt;
&lt;br /&gt;
This document and the information contained herein is provided&lt;br /&gt;
on an &amp;quot;AS IS&amp;quot; basis and THE INTERNET SOCIETY AND THE INTERNET&lt;br /&gt;
ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE&lt;br /&gt;
USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR&lt;br /&gt;
ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A&lt;br /&gt;
PARTICULAR PURPOSE.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NOTE: the following root element is not used in the&lt;br /&gt;
           modified vcard-temp DTD published by the Jabber &lt;br /&gt;
           project (now XMPP Standards Foundation) and is&lt;br /&gt;
           included here only for historical purposes; &lt;br /&gt;
           implementations that comply with vcard-temp must&lt;br /&gt;
           specify the root element as vCard, not xCard. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Root element and container for one&lt;br /&gt;
  or more vCard objects --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT xCard (vCard)+&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Individual vCard container --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT vCard (&lt;br /&gt;
  (VERSION, FN, N),&lt;br /&gt;
  (NICKNAME?,&lt;br /&gt;
  PHOTO?, &lt;br /&gt;
  BDAY?, &lt;br /&gt;
  ADR?, &lt;br /&gt;
  LABEL?, &lt;br /&gt;
  TEL?, &lt;br /&gt;
  EMAIL?,&lt;br /&gt;
  JABBERID?,&lt;br /&gt;
  MAILER?, &lt;br /&gt;
  TZ?, &lt;br /&gt;
  GEO?, &lt;br /&gt;
  TITLE?, &lt;br /&gt;
  ROLE?,  &lt;br /&gt;
  LOGO?, &lt;br /&gt;
  AGENT?, &lt;br /&gt;
  ORG?, &lt;br /&gt;
  CATEGORIES?, &lt;br /&gt;
  NOTE?, &lt;br /&gt;
  PRODID?, &lt;br /&gt;
  REV?, &lt;br /&gt;
  SORT-STRING?, &lt;br /&gt;
  SOUND?, &lt;br /&gt;
  UID?, &lt;br /&gt;
  URL?, &lt;br /&gt;
  CLASS?, &lt;br /&gt;
  KEY?,&lt;br /&gt;
  DESC?&lt;br /&gt;
)*)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- vCard specification version property. &lt;br /&gt;
    This MUST be 2.0, if the document conforms to RFC 2426. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT VERSION (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Formatted or display name property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT FN (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Structured name property. Name components with multiple&lt;br /&gt;
    values must be specified as a comma separated&lt;br /&gt;
	list of values. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT N ( FAMILY?, GIVEN?, MIDDLE?, PREFIX?, SUFFIX?)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT FAMILY (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT GIVEN (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT MIDDLE (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT PREFIX (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT SUFFIX (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Nickname property. Multiple nicknames must be&lt;br /&gt;
    specified as a comma separated list value. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT NICKNAME (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Photograph property. Value is either a BASE64 encoded&lt;br /&gt;
    binary value or a URI to the external content. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT PHOTO ((TYPE, BINVAL) | EXTVAL)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Birthday property. Value must be an ISO 8601 formatted&lt;br /&gt;
    date or date/time value. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT BDAY (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Structured address property. Address components with&lt;br /&gt;
    multiple values must be specified as a comma separated list&lt;br /&gt;
    of values. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT ADR (&lt;br /&gt;
    HOME?, &lt;br /&gt;
    WORK?, &lt;br /&gt;
    POSTAL?, &lt;br /&gt;
    PARCEL?, &lt;br /&gt;
    (DOM | INTL)?, &lt;br /&gt;
    PREF?, &lt;br /&gt;
    POBOX?, &lt;br /&gt;
    EXTADD?, &lt;br /&gt;
    STREET?, &lt;br /&gt;
    LOCALITY?, &lt;br /&gt;
    REGION?, &lt;br /&gt;
    PCODE?, &lt;br /&gt;
    CTRY?&lt;br /&gt;
  )&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT POBOX (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT EXTADD (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT STREET (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT LOCALITY (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT REGION (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT PCODE (#PCDATA)&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT CTRY (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Address label property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT LABEL (&lt;br /&gt;
    HOME?, &lt;br /&gt;
    WORK?, &lt;br /&gt;
    POSTAL?, &lt;br /&gt;
    PARCEL?, &lt;br /&gt;
    (DOM | INTL)?, &lt;br /&gt;
    PREF?, &lt;br /&gt;
    LINE+&lt;br /&gt;
  )&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Individual label lines. --&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT LINE (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Telephone number property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT TEL (&lt;br /&gt;
    HOME?, &lt;br /&gt;
    WORK?, &lt;br /&gt;
    VOICE?, &lt;br /&gt;
    FAX?, &lt;br /&gt;
    PAGER?, &lt;br /&gt;
    MSG?, &lt;br /&gt;
    CELL?, &lt;br /&gt;
    VIDEO?, &lt;br /&gt;
    BBS?, &lt;br /&gt;
    MODEM?, &lt;br /&gt;
    ISDN?, &lt;br /&gt;
    PCS?, &lt;br /&gt;
    PREF?, &lt;br /&gt;
    NUMBER&lt;br /&gt;
  )&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Phone number value. --&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT NUMBER (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Email address property. Default type is INTERNET. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT EMAIL (&lt;br /&gt;
    HOME?, &lt;br /&gt;
    WORK?, &lt;br /&gt;
    INTERNET?, &lt;br /&gt;
    PREF?, &lt;br /&gt;
    X400?, &lt;br /&gt;
    USERID&lt;br /&gt;
  )&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!ELEMENT USERID (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- NOTE: the following element was added by the Jabber&lt;br /&gt;
             project (now XMPP Standards Foundation) to&lt;br /&gt;
             handle Jabber IDs; the value must be in the&lt;br /&gt;
             form of user@host --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!ELEMENT JABBERID (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Mailer (e.g., Mail User Agent Type) property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT MAILER (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Time zone's Standard Time UTC offset. Value must be an&lt;br /&gt;
    ISO 8601 formatted UTC offset. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT TZ (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Geographical position. Values are the decimal degress of&lt;br /&gt;
    LATitude and LONgitude. The value should be specified to &lt;br /&gt;
    six decimal places.--&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT GEO (LAT, LON)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!-- Latitude value. --&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT LAT (#PCDATA)&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
    &amp;lt;!-- Longitude value. --&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT LON (#PCDATA)&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;!-- Title property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT TITLE (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Role property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT ROLE (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Organization logo property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT LOGO ((TYPE, BINVAL) | EXTVAL)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Administrative agent property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT AGENT (vCard | EXTVAL)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Organizational name and units property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT ORG (ORGNAME, ORGUNIT*)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT ORGNAME (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT ORGUNIT (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Application specific categories property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT CATEGORIES (KEYWORD+)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT KEYWORD (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Commentary note property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT NOTE (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Identifier of product that generated the vCard property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT PRODID (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Last revised property. The value must be an &lt;br /&gt;
       ISO 8601 formatted UTC date/time. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT REV (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Sort string property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT SORT-STRING (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Formatted name pronunciation property. The value is &lt;br /&gt;
       either a textual phonetic pronunciation, a BASE64 &lt;br /&gt;
       encoded binary digital audio pronunciation or a URI to&lt;br /&gt;
       an external binary digital audio pronunciation.--&amp;gt;	&lt;br /&gt;
  &amp;lt;!ELEMENT SOUND (PHONETIC | BINVAL | EXTVAL)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!-- Textual phonetic pronunciation. --&amp;gt;&lt;br /&gt;
    &amp;lt;!ELEMENT PHONETIC (#PCDATA)&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- Unique identifier property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT UID (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Directory URL property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT URL (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- NOTE: the following element was added by the Jabber&lt;br /&gt;
             project (now XMPP Standards Foundation) to&lt;br /&gt;
             handle free-form descriptive text. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!ELEMENT DESC (#PCDATA)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- Privacy classification property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT CLASS (PUBLIC | PRIVATE | CONFIDENTIAL)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT PUBLIC EMPTY&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
    &amp;lt;!ELEMENT PRIVATE EMPTY&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
    &amp;lt;!ELEMENT CONFIDENTIAL EMPTY&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;!-- Authentication credential or encryption  key property. --&amp;gt;&lt;br /&gt;
  &amp;lt;!ELEMENT KEY (TYPE?, CRED)&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;!ELEMENT CRED (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Common elements. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Addressing type indicators. --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOME EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WORK EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT POSTAL EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT PARCEL EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOM EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT INTL EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT PREF EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT VOICE EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT FAX EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT PAGER EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT MSG EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT CELL EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT VIDEO EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT BBS EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT MODEM EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ISDN EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT PCS EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT INTERNET EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT X400 EMPTY&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Format type parameter. --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT TYPE (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Base64 encoded binary value. --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT BINVAL (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- URI to external binary value --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT EXTVAL (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==附录==&lt;br /&gt;
===附录A:文档信息===&lt;br /&gt;
&lt;br /&gt;
Source Control: HTML  RSS&lt;br /&gt;
This document in other formats: XML  PDF&lt;br /&gt;
&lt;br /&gt;
系列：[http://xmpp.org/extensions/ XEP]&lt;br /&gt;
&lt;br /&gt;
序号：0054&lt;br /&gt;
&lt;br /&gt;
发布者：[http://xmpp.org/xsf/ XMPP标准基金会]&lt;br /&gt;
&lt;br /&gt;
状态：[http://xmpp.org/extensions/xep-0001.html#states-Active 活跃的]&lt;br /&gt;
&lt;br /&gt;
类型：[http://xmpp.org/extensions/xep-0001.html#types-Historical 历史的]&lt;br /&gt;
&lt;br /&gt;
版本：1.2&lt;br /&gt;
&lt;br /&gt;
最后更新：2008-07-16&lt;br /&gt;
&lt;br /&gt;
批准机构：[http://xmpp.org/council/ XMPP理事会]&lt;br /&gt;
&lt;br /&gt;
依赖标准： XMPP Core&lt;br /&gt;
&lt;br /&gt;
替代标准：无&lt;br /&gt;
&lt;br /&gt;
被替代标准：无&lt;br /&gt;
&lt;br /&gt;
缩略名：vcard-temp&lt;br /&gt;
&lt;br /&gt;
原文控制： [http://svn.xmpp.org:18080/browse/XMPP/trunk/extensions/xep-0054.xml HTML] [http://svn.xmpp.org:18080//changelog/~rss/XMPP/trunk/extensions/xep-0054.xml/rss.xml RSS]&lt;br /&gt;
&lt;br /&gt;
本文的其它格式： [http://xmpp.org/extensions/xep-0054.xml XML] [http://xmpp.org/extensions/xep-0054.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
===附录B:作者信息===&lt;br /&gt;
&lt;br /&gt;
'''Peter Saint-Andre'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:stpeter@jabber.org stpeter@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: stpeter@jabber.org&lt;br /&gt;
&lt;br /&gt;
URI: https://stpeter.im/&lt;br /&gt;
&lt;br /&gt;
{{Template:XEP附录CDEF}}&lt;br /&gt;
&lt;br /&gt;
===附录G:备注===&lt;br /&gt;
&lt;br /&gt;
# RFC 2426: vCard MIME Directory Profile &amp;lt;http://tools.ietf.org/html/rfc2426&amp;gt;.&lt;br /&gt;
# 本文被归档于 &amp;lt;http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-01.txt&amp;gt;.&lt;br /&gt;
# 本文被归档于 &amp;lt;http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-02.txt&amp;gt;.&lt;br /&gt;
# 本文被归档于 &amp;lt;http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-03.txt&amp;gt;.&lt;br /&gt;
# RFC 3920: 可扩展的消息和出席信息协议 (XMPP): Core &amp;lt;http://tools.ietf.org/html/rfc3920&amp;gt;.&lt;br /&gt;
# XEP-0030: Service Discovery &amp;lt;http://xmpp.org/extensions/xep-0030.html&amp;gt;.&lt;br /&gt;
# XEP-0115: Entity Capabilities &amp;lt;http://xmpp.org/extensions/xep-0115.html&amp;gt;.&lt;br /&gt;
# 互联网编号分配机构(IANA) 是用于互联网协议的唯一性参数值分配的核心协调者, 例如号码和URI计划. 更多信息, 见 &amp;lt;http://www.iana.org/&amp;gt;.&lt;br /&gt;
# XMPP登记员XMPP Registrar 维护着一个保留的协议名字空间以及用于由XMPP标准基金会批准的XMPP扩展协议的上下文参数的注册项的列表. 更多信息, 见 &amp;lt;http://xmpp.org/registrar/&amp;gt;.&lt;br /&gt;
# XEP-0147: XMPP URI Query Components &amp;lt;http://xmpp.org/extensions/xep-0147.html&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===附录H:修订历史===&lt;br /&gt;
&lt;br /&gt;
注意: 本协议的旧版本可能在 http://xmpp.org/extensions/attic/ 还可用&lt;br /&gt;
&lt;br /&gt;
'''版本 1.2 (2008-07-16)'''&lt;br /&gt;
&lt;br /&gt;
更多完全定义的错误情景; 增加了确定支持的章节.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 1.1 (2003-03-26)'''&lt;br /&gt;
&lt;br /&gt;
澄清了特定历史的不准确并增加了连接到 Frank Dawson's 的互联网草案的归档版本.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 1.0 (2003-01-09)'''&lt;br /&gt;
&lt;br /&gt;
通过Jabber理事会投票更新状态为活跃.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 0.2 (2002-11-06)'''&lt;br /&gt;
&lt;br /&gt;
很多小修改; 增加了实现注意事项.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 0.1 (2002-10-31)'''&lt;br /&gt;
&lt;br /&gt;
初始版本.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
结束&lt;/div&gt;</summary>
		<author><name>Zoey1990</name></author>	</entry>

	<entry>
		<id>http://wiki.jabbercn.org/RFC6121</id>
		<title>RFC6121</title>
		<link rel="alternate" type="text/html" href="http://wiki.jabbercn.org/RFC6121"/>
				<updated>2012-09-12T07:56:43Z</updated>
		
		<summary type="html">&lt;p&gt;Zoey1990: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:XMPP相关RFC]]&lt;br /&gt;
[[Category:XMPP核心RFC]]&lt;br /&gt;
[[Category:翻译中]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;本文的英文原文来自[http://xmpp.org/rfcs/rfc6121.html RFC 6121]&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;65%&amp;quot;&lt;br /&gt;
|互联网工程任务组(IETF) || P. Saint-Andre&lt;br /&gt;
|-&lt;br /&gt;
|申请讨论: 6121 || Cisco&lt;br /&gt;
|-&lt;br /&gt;
|取代: 3921 || 2011年3月&lt;br /&gt;
|-&lt;br /&gt;
|类别: 标准跟踪 || &lt;br /&gt;
|-&lt;br /&gt;
|ISSN: 2070-1721 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:::'''可扩展的消息和出席信息协议 (XMPP): 即时消息和出席信息'''&lt;br /&gt;
&lt;br /&gt;
'''摘要'''&lt;br /&gt;
&lt;br /&gt;
:本文定义提供了遵循RFC2779要求的基本的即时消息(IM)和出席信息功能的可扩展的消息和出席信息协议(XMPP)的核心功能的扩展. 本文取代了 RFC 3921.&lt;br /&gt;
&lt;br /&gt;
'''本文的状态'''&lt;br /&gt;
&lt;br /&gt;
:这是一个互联网标准跟踪文档.&lt;br /&gt;
&lt;br /&gt;
:本文是互联网工程工作组(IETF)的一个成果. 它代表了IETF社区的一致意见. 它已经公开审核并由互联网工程控制组(IESG)批准发布了. 更多关于互联网标准的信息请参见RFC 5741第2章.&lt;br /&gt;
&lt;br /&gt;
:关于本文当前状态的信息, 任何错误, 以及如何对它提出反馈，请到 http://www.rfc-editor.org/info/rfc6121 .&lt;br /&gt;
&lt;br /&gt;
'''版权通知'''&lt;br /&gt;
&lt;br /&gt;
:Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.&lt;br /&gt;
&lt;br /&gt;
:This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.&lt;br /&gt;
&lt;br /&gt;
==序论==&lt;br /&gt;
===概述===&lt;br /&gt;
&lt;br /&gt;
可扩展的消息和出席信息协议(XMPP)是可扩展的标记语言[[RFC6121#常规备注|XML]]的一个应用范畴,它能使两个或更多网络实体之间的结构化并且可扩展的数据进行准实时的交换. 在[[RFC6120|XMPP‑CORE]]中定义的XMPP的核心特性提供了各种类型的准实时应用的积木, 通过发送由特定的XML命名空间(参考[[RFC6121#常规备注|XML‑NAMES]])所限定的应用特有的数据,它们可被叠加在核心之上. 本文定义的XMPP扩展提供一个[[RFC6121#提示性备注|IMP‑REQS]]所述的即时消息(IM)和出席信息应用所预期的基本功能.&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
&lt;br /&gt;
XMPP的基本语法和语义最开始是由Jabber开源社区开发的, 主要是在1999年. 2002年, 根据 [[RFC6121#提示性备注|IMP‑REQS]] ，XMPP工作组被允许基于Jabber协议开发一个适合IETF的即时消息和出席信息技术. 到了2004年10月, 发布了 [[RFC3920]] 和 [[RFC3921]] , 意味着那时候XMPP的主要定义完成了.&lt;br /&gt;
&lt;br /&gt;
从2004年开始，互联网社区已经获得了广泛的XMPP实现和布署经验, 包括XMPP标准基金会(XSF)主持下开展的正式的互操作性测试. 本文全面整合了从软件开发者和XMPP服务提供者得到的反馈, 包含了一系列向后兼容的修改，见 [[RFC6121#附录E:和RFC3921的不同|附录E]] . 结果是, 本文反映了互联网社区对于XMPP1.0的即时消息和出席信息特性的初步共识, 因此废止了RFC 3921.&lt;br /&gt;
&lt;br /&gt;
===需求===&lt;br /&gt;
===功能汇总===&lt;br /&gt;
===术语===&lt;br /&gt;
&lt;br /&gt;
==管理花名册 Managing the Roster==&lt;br /&gt;
&lt;br /&gt;
在XMPP中， 一个用户的花名册(roster)包含任意数量的特定联系人。一个用户的花名册由用户的服务器代替用户储存，从而使用户可以从任何资源设备访问花名册信息。当用户添加或修改花名册项目，并且无错误发生时，服务器如果有可能应该(SHOULD)不加修改的存储数据，并且当一个授权的客户端请求花名册时，服务器必须(MUST)返回已存储的数据。&lt;br /&gt;
&lt;br /&gt;
安全警告: 因为用户的花名册包含机密的数据，因此服务器必须(MUST)限制对这些数据的访问，只有经授权验证的实体(典型的为帐户拥有者)才有权利检索，修改和删除它。&lt;br /&gt;
&lt;br /&gt;
===语法和语义===&lt;/div&gt;</summary>
		<author><name>Zoey1990</name></author>	</entry>

	<entry>
		<id>http://wiki.jabbercn.org/XEP-0004</id>
		<title>XEP-0004</title>
		<link rel="alternate" type="text/html" href="http://wiki.jabbercn.org/XEP-0004"/>
				<updated>2012-09-04T05:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;Zoey1990: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:XMPP扩展]]&lt;br /&gt;
[[Category:已翻译]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本文的英文原文来自[http://xmpp.org/extensions/xep-0004.html XEP-0004]'''&lt;br /&gt;
&lt;br /&gt;
'''XEP-0004: 数据表单'''&lt;br /&gt;
&lt;br /&gt;
摘要: 本文定义了一个XMPP扩展协议用于数据表单，可以用于worklows如服务配置以及特定应用的数据描述和报告。这个协议包括表单处理的轻量级语义(如请求,响应,提交和取消),定义了几种常见的字段类型(布尔、单个或多个选择的列表选项、单行或多行的文本,单个或多个JabberID、隐藏字段,等等),为以后的数据类型提供扩展性,可以用在广泛的应用中。该协议并不是要提供完整的表格处理功能（由W3C XForms技术提供），而是提供这种功能的基本子集给XMPP使用。&lt;br /&gt;
&lt;br /&gt;
作者:	Ryan Eatmon, Joe Hildebrand, Jeremie Miller, Thomas Muldowney, Peter Saint-Andre&lt;br /&gt;
&lt;br /&gt;
XMPP扩展协议的版权(1999-2008)归XMPP标准化基金会(XSF)所有&lt;br /&gt;
&lt;br /&gt;
版权:	? 1999 - 2010 XMPP标准化基金会(XSF). 参见[[XEP-0004#法律通告|法律通告]].&lt;br /&gt;
&lt;br /&gt;
状态: 最终&lt;br /&gt;
&lt;br /&gt;
类型: 标准跟踪&lt;br /&gt;
&lt;br /&gt;
版本: 2.9&lt;br /&gt;
&lt;br /&gt;
最后更新日期: 2007-08-13&lt;br /&gt;
&lt;br /&gt;
注意: 这里定义的协议是XMPP标准化基金会的一个最终标准.对于实现和布署来说可以被认为是一个稳定技术.&lt;br /&gt;
&lt;br /&gt;
==绪论==&lt;br /&gt;
&lt;br /&gt;
几个现有的Jabber/XMPP的协议包含用户和应用程序之间的结构数据交换，为常用的任务，如注册（[http://xmpp.org/extensions/xep-0077.html In-Band Registration][[XEP-0004#附录G:备注|1]]）和搜索（[http://xmpp.org/extensions/xep-0055.html Jabber Search] [[XEP-0004#附录G:备注|2]]）。不幸的是，这些早期的协议是“硬编码”，因此很大的限制了可交换信息的范围。此外，其他协议(如，[http://xmpp.org/extensions/xep-0045.html Multi-User Chat] [[XEP-0004#附录G:备注|3]])可能需要以交换数据为目的，例如配置，但是配置选项可能根据具体实施或部署不同。最后，开发人员可能要以灵活的方式扩展其他协议(如, [http://xmpp.org/extensions/xep-0030.html Service Discovery][[XEP-0004#附录G:备注|4]])，以提供在基本协议没有定义的信息。在所有这些情况下，这将有助于使用一个通用的数据描述格式，可以用于动态表单生成和各种情况下的数据“建模”。&lt;br /&gt;
&lt;br /&gt;
一个例子可能会有帮助。试想一下，当用户创建一个文本会议服务的多用户聊天室，该服务允许用户以各种方式配置房间。虽然大多数实现可能提供了一个较为常见的可配置功能集（讨论记录，房间拥有者的最大数量，等等）。还会有一些分歧：也许一个实现允许把房间日志以各种文件类型（XML，HTML，PDF等格式）和各种时间周期（每小时，每天，每周等）保存。而另一个实现，可能只存在登录的开/关选择一种格式（如，在HTML保存每日日志）。很明显，第一个实现比第二个实现有更多的配置选项。而不像“硬编码”每个选项通过不同的XML元素（如，&amp;lt;room_logging_period/&amp;gt;），一个好的设计应该包含更多灵活的格式。&lt;br /&gt;
&lt;br /&gt;
此处所描述的'jabber:x:data'协议为Jabber/XMPP实体的使用定义了灵活的格式，控制在“名称值”对的简单和[http://www.w3.org/TR/xforms/ XForms 1.0] [[XEP-0004#附录G:备注|5]]（当这个协议被设计时才开始发展的）的复杂之间。在很多方面，'jabber:x:data' 与[http://www.w3.org/TR/xhtml1/ XHTML 1.0][[XEP-0004#附录G:备注|6]]的表单模块类似。但它提供一些Jabber特有的数据类型，允许应用程序请求数据字段，更自然地集成到IQ节的“workflow”语义中。而且它可以作为现有的Jabber/XMPP协议的扩展，而当这个协议被开发出来时，XHTML的表单模块却不能（尤其是当时并没有[http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218/ Modularization of XHTML] [[XEP-0004#附录G:备注|7]]）。&lt;br /&gt;
&lt;br /&gt;
==需求==&lt;br /&gt;
&lt;br /&gt;
本文档涉及下列需求:&lt;br /&gt;
&lt;br /&gt;
# '''数据收集''' -- 该协议应允许表单处理实体（通常是一个服务器，服务，或bot）从表单提交实体（通常是一个由用户控制的客户端）收集数据。应该是通过不同的数据字段来做，每个都可以是不同的数据“类型”，而且允许自由格式的输入或多个选项的选择（就像HTML表单一样）。&lt;br /&gt;
# '''数据报告''' -- 该协议应允许表单处理的实体向表单提交的实体报告数据，再通过不同的数据字段。 &lt;br /&gt;
# '''可移植性''' -- 协议应该尽量只定义普通数据格式和基本的数据类型。提示应该在相关的用户界面提供，但应该仅仅是提示，而不是严格的要求。 &lt;br /&gt;
# '''简单''' -- 协议在客户端的实施应该简单，并且大多数复杂的工作（如，数据有效性和处理）应由服务器和组件去完成，而不是客户端。 &lt;br /&gt;
# '''灵活性''' -- 协议应该具有灵活性和可扩展性，而不像“硬编码”。&lt;br /&gt;
# '''兼容性''' -- 协议应该为已有的Jabber/XMPP协议定义一个扩展，而且不破坏已有的实现，除非绝对必要。&lt;br /&gt;
&lt;br /&gt;
==协议==&lt;br /&gt;
&lt;br /&gt;
'jabber:x:data' 命名空间的基本语法如下（正式的描述可以在下面的XML节中找到）:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x xmlns='jabber:x:data' &lt;br /&gt;
   type='{form-type}'&amp;gt; &lt;br /&gt;
  &amp;lt;title/&amp;gt; &lt;br /&gt;
  &amp;lt;instructions/&amp;gt; &lt;br /&gt;
  &amp;lt;field var='field-name' &lt;br /&gt;
         type='{field-type}' &lt;br /&gt;
         label='description'&amp;gt; &lt;br /&gt;
    &amp;lt;desc/&amp;gt; &lt;br /&gt;
    &amp;lt;required/&amp;gt; &lt;br /&gt;
    &amp;lt;value&amp;gt;field-value&amp;lt;/value&amp;gt; &lt;br /&gt;
    &amp;lt;option label='option-label'&amp;gt;&amp;lt;value&amp;gt;option-value&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
    &amp;lt;option label='option-label'&amp;gt;&amp;lt;value&amp;gt;option-value&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
  &amp;lt;/field&amp;gt; &lt;br /&gt;
&amp;lt;/x&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
受'jabber:x:data' 命名空间限制的&amp;lt;x/&amp;gt;元素，应该包括直接作为&amp;lt;message/&amp;gt;节第一级子元素或作为&amp;lt;iq/&amp;gt; 节（其中第一级子元素是由一个&amp;quot;wrapper&amp;quot;命名空间限制的）的第二级子节。参见下文列举的限制。&lt;br /&gt;
&lt;br /&gt;
可选项&amp;lt;title/&amp;gt;和&amp;lt;instructions/&amp;gt;元素，允许表单处理实体把表单标记为一个整体并指定自然语言指令，后面跟着表单提交实体。这些元素的XML字符数据不应包含换行符（\n和\r字符），而任何换行符操作（如，在用户界面显示）在这里不是特指的。但&amp;lt;instructions/&amp;gt;元素的多个实体可以被包括在内。&lt;br /&gt;
&lt;br /&gt;
===表单类型===&lt;br /&gt;
&lt;br /&gt;
由'jabber:x:data'表单收集或提供的数据可位于许多不同的上下文中。例如，一个需要填写的空表单，一个填好的表单，提交的结果，一个搜索结果，或仅仅是用'jabber:x:data'命名空间封装的一组数据。完整的数据上下文由3个条件提供：&lt;br /&gt;
&lt;br /&gt;
# &amp;quot;wrapper&amp;quot;协议（比如，以&amp;lt;iq/&amp;gt;节直接子元素为根元素的命名空间和受'jabber:x:data' 命名空间限制的&amp;lt;x/&amp;gt;元素的父元素）&lt;br /&gt;
# 在一个事务（如，一个IQ &amp;quot;set&amp;quot;或&amp;quot;result&amp;quot;）或结构化的会话（如，一个消息&amp;lt;thread/&amp;gt;）中表单的位置&lt;br /&gt;
# 表单中&amp;lt;x/&amp;gt;根元素的'type'属性&lt;br /&gt;
&lt;br /&gt;
前2件上下文信息由其他协议提供，而表单类型见下面表格。&lt;br /&gt;
&lt;br /&gt;
:'''表1：表单类型(Form Types)'''&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
! 类型 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
|form || 表单处理实体(form-processing entity)请求表单提交实体(form-submitting entity)去完成表单&lt;br /&gt;
|-&lt;br /&gt;
|submit || 表单提交实体提交数据给表单处理实体。提交信息可以(MAY)包含空表单中没有提供的字段，但表单处理实体必须(MUST)忽略任何无法识别的字段&lt;br /&gt;
|-&lt;br /&gt;
|cancel || 表单提交实体取消向表单处理实体提交数据&lt;br /&gt;
|-&lt;br /&gt;
|result || 表单处理实体返回数据（如查询结果）给表单提交实体，或数据是一个通用的数据集&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
为了维护form类型中获取的数据的上下文，必须(MUST)遵守以下规则:&lt;br /&gt;
&lt;br /&gt;
:* 对于&amp;lt;iq/&amp;gt;节，在类型为&amp;quot;form&amp;quot; 或&amp;quot;submit&amp;quot;的表单中受&amp;quot;wrapper&amp;quot; 命名空间限制的根元素，必须(MUST)以一个类型为&amp;quot;result&amp;quot;的表单的形式返回。受'jabber:x:data'命名空间限制的&amp;lt;x/&amp;gt;元素，必须(MUST)是&amp;quot;wrapper&amp;quot;命名空间根元素的子元素。根据[http://tools.ietf.org/html/rfc3920 XMPP Core] [[XEP-0004#附录G:备注|8]]所定义， 'id' 属性必须(MUST)在IQ结果中被复制。对于类型为&amp;quot;form&amp;quot; 或 &amp;quot;result&amp;quot;的数据表单,&amp;lt;iq/&amp;gt;节应该(SHOULD)是&amp;quot;result&amp;quot;类型。对于类型为&amp;quot;submit&amp;quot; 或&amp;quot;cancel&amp;quot;的数据表单， &amp;lt;iq/&amp;gt;节应该(SHOULD)是&amp;quot;set&amp;quot;类型。&lt;br /&gt;
&lt;br /&gt;
:* 对于&amp;lt;message/&amp;gt;节，如果提供&amp;lt;thread/&amp;gt;的话，应该(SHOULD)在回复中被复制。受'jabber:x:data'命名空间限制的&amp;lt;x/&amp;gt;元素，必须(MUST)是&amp;lt;message/&amp;gt;节的子元素。&lt;br /&gt;
&lt;br /&gt;
===字段元素===&lt;br /&gt;
&lt;br /&gt;
一个&amp;quot;form&amp;quot;，&amp;quot;submit&amp;quot;，或 &amp;quot;result&amp;quot;类型的数据表单应该(SHOULD)包含至少一个&amp;lt;field/&amp;gt;元素。一个&amp;quot;cancel&amp;quot;类型的数据表单，不应该(SHOULD NOT)包含任何&amp;lt;field/&amp;gt;元素。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field/&amp;gt;元素可以(MAY)包含以下任何子元素:&lt;br /&gt;
&lt;br /&gt;
:'''&amp;lt;desc/&amp;gt;'''&lt;br /&gt;
:该元素的XML字符数据提供了该字段一个自然语言的描述，为了在用户代理中展现（如，作为一个&amp;quot;tool-tip&amp;quot;，帮助按钮，或在字段附近的文本说明）。&amp;lt;desc/&amp;gt;元素不应(SHOULD NOT)包含换行符（\n和\r字符），因为布局是用户代理的责任，任何换行的处理（如，在用户界面中的展现）在这里是未指定的。（注意：提供一个字段的描述，推荐(RECOMMENDED)使用&amp;lt;desc/&amp;gt;元素，而不是一个单独的&amp;quot;fixed&amp;quot;类型的&amp;lt;field/&amp;gt;元素。）&lt;br /&gt;
&lt;br /&gt;
:'''&amp;lt;required/&amp;gt;'''&lt;br /&gt;
:该元素必须(MUST)为空，标记字段为必填字段。&lt;br /&gt;
 &lt;br /&gt;
:'''&amp;lt;value/&amp;gt;'''&lt;br /&gt;
:该元素的XML字符数据在&amp;quot;form&amp;quot;类型数据表单中为字段（根据表单处理实体）定义了默认值，在&amp;quot;submit&amp;quot;类型数据表单中是由表单提交实体提供的数据，在&amp;quot;result&amp;quot;类型数据表单中是数据结果。在&amp;quot;form&amp;quot;类型数据表单中，如果表单处理实体通过&amp;lt;value/&amp;gt;元素提供了一个默认值，表单提交实体就不应该(SHOULD NOT)尝试去执行一个不同的默认值（虽然为了尊重用户的首选项，或预测用户输入也可能(MAY)这么做）。&amp;quot;list-multi&amp;quot;，&amp;quot;jid-multi&amp;quot;，&amp;quot;text-multi&amp;quot;和&amp;quot;hidden&amp;quot;类型的字段也许(MAY)包含多个&amp;lt;value/&amp;gt;元素；所有其它类型的元素不能(MUST NOT)包含多于一个&amp;lt;value/&amp;gt;元素。&lt;br /&gt;
&lt;br /&gt;
:'''&amp;lt;option/&amp;gt;'''&lt;br /&gt;
:在&amp;quot;list-single&amp;quot;或&amp;quot;list-multi&amp;quot;类型字段中的一个选项。&amp;lt;value/&amp;gt;子元素的XML字符定义了选项的值，而'label'属性为选项定义了一个可读的名称。&amp;lt;option/&amp;gt;元素必须(MUST)且只能包含一个&amp;lt;value/&amp;gt;子元素。如果字段类型不是&amp;quot;list-single&amp;quot;或&amp;quot;list-multi&amp;quot;，就一定不能(MUST NOT)包含&amp;lt;option/&amp;gt;元素。&lt;br /&gt;
 &lt;br /&gt;
如果&amp;lt;field/&amp;gt;元素不是&amp;quot;fixed&amp;quot;类型（见下文），它必须(MUST)有一个'var'属性在表单的上下文中唯一的标识字段（如果是&amp;quot;fixed&amp;quot;，可以(MAY)有一个'var'属性）。&amp;lt;field/&amp;gt;元素可以(MAY)有一个'label'属性，为字段定义一个可读的名称。对于&amp;quot;form&amp;quot;类型的数据表单，每个&amp;lt;field/&amp;gt;元素应该(SHOULD)有'type'属性定义字段数据的数据 &amp;quot;类型&amp;quot;（如果没有指定'type'，则默认为&amp;quot;text-single&amp;quot;）。在其他表单类型的上下文中提供的字段，也可以(MAY)有一个'type'属性。对于&amp;quot;submit&amp;quot;类型的数据表单，'type'属性是可选的(OPTIONAL)，因为表单处理实体被假定知道它处理的表单的数据类型。&lt;br /&gt;
&lt;br /&gt;
如果字段出现在用户页面上（如，问卷中的项或表单结果），在XML中的字段元素的顺序应该(SHOULD)决定向用户展现的项目的顺序。&lt;br /&gt;
&lt;br /&gt;
===字段类型===&lt;br /&gt;
以下字段类型代表在Jabber/XMPP实体之间交换的通用的数据类型。这些字段类型并不打算像[http://www.w3.org/TR/xmlschema-2/ XML Schema Part 2] [[XEP-0004#附录G:备注|9]]中定义的数据类型一样全面，也没有定义用户界面元素。&lt;br /&gt;
&lt;br /&gt;
:'''表2:字段类型(Field Types)'''&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! 类型 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
|boolean || 该字段允许一个实体收集或提供一个只能二选一的选项。默认值为&amp;quot;false&amp;quot;。[[XEP-0004#附录G:备注|10]]&lt;br /&gt;
|-&lt;br /&gt;
|fixed || 该字段用于数据描述（如，可读的&amp;quot;section&amp;quot;头信息）而不是数据收集或供给。&amp;lt;value/&amp;gt;子元素不应该(SHOULD NOT)包含换行符（\n和\r字符）；然而一个应用应该(SHOULD)生成多个固定的字段，每个都包含&amp;lt;value/&amp;gt;子元素。&lt;br /&gt;
|-&lt;br /&gt;
|hidden || 该字段未展现给表单提交实体，但是和表单一起返回。表单提交实体不能(SHOULD NOT)修改隐藏字段的值，但如果这种行为被'using protocol'（&amp;quot;所使用的协议&amp;quot;?）定义时可以(MAY)这样做。&lt;br /&gt;
|-&lt;br /&gt;
|jid-multi || 该字段允许一个实体收集或提供多个Jabber ID。每个提供的JID应该(SHOULD)是唯一的（as determined by comparison that includes application of the Nodeprep, Nameprep, and Resourceprep profiles of Stringprep as specified in XMPP Core）（通过比较，包括在XMPP Core中详细说明的Nodeprep、Nameprep和Resourceprep应用程序字符串处理配置文件，来确定？翻译得较拗口），而重复的JID必须(MUST)忽略。*&lt;br /&gt;
|-&lt;br /&gt;
|jid-single || 该字段允许一个实体收集或提供单个Jabber ID。*&lt;br /&gt;
|-&lt;br /&gt;
|list-multi || 该字段允许一个实体从很多选项中收集或提供一个或多个选项。表单提交实体从表单处理实体提交的选项中选择一个或多个项，而且不能(MUST NOT)插入新的选项。表单处理实体不能(MUST NOT)修改从表单处理实体处获取的项目的顺序，因为项目的顺序可能(MAY)很重要。**&lt;br /&gt;
|-&lt;br /&gt;
|list-single || 该字段允许一个实体从很多选项中收集或提供一个选项。表单提交实体从表单处理实体提交的选项中选择一个项，而且不能(MUST NOT)插入新的选项。**&lt;br /&gt;
|-&lt;br /&gt;
|text-multi || 该字段允许一个实体收集或提供多行的文本。***&lt;br /&gt;
|-&lt;br /&gt;
|text-private || 该字段允许一个实体收集或提供一行或一个词的文本，其应该在界面上遮蔽。（如，显示多个星号字符）&lt;br /&gt;
|-&lt;br /&gt;
|text-single || 该字段允许一个实体收集或提供一行或一个词的文本，其应该在界面上显示。这个字段类型是缺省的，并且当一个表单提交实体收到一个不知道的字段类型时，就必须(MUST)假定为这个类型。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 * 注意：为字段类型&amp;quot;jid-single&amp;quot;或&amp;quot;jid-multi&amp;quot;提供的数据必须包含一个或一个以上的有效Jabber ID，有效性是由XMPP Core（参看后面章节的Data Validation）定义的寻址规则决定的。&lt;br /&gt;
&lt;br /&gt;
 ** 注意：在list-multi和list-single中的&amp;lt;option/&amp;gt;元素必须是唯一的，唯一性是由‘label’属性的值和&amp;lt;value/&amp;gt;元素中的XML字符数据决定的。（即，2个都必须是唯一的）&lt;br /&gt;
&lt;br /&gt;
注意：为字段类型&amp;quot;text-multi&amp;quot;提供的数据不应该包含任何换行符（\n和\r字符）。而应用程序应该把数据分为多个字符串（基于平台插入的换行符），然后用不同的&amp;lt;value/&amp;gt;元素中的XML字符数据指定每一个字符串。同样的，以&amp;quot;text-multi&amp;quot;字段类型接收了多个&amp;lt;value/&amp;gt;元素的应用程序，应该把value元素中的XML字符数据合并成一个文本块以提交给用户。每一个字符串为平台适时的通过换行符分开。&lt;br /&gt;
&lt;br /&gt;
===表单结果中的多个项目===&lt;br /&gt;
在某些情况下（如，查询请求的结果），传达多个项目是必须的。因此，一个&amp;quot;result&amp;quot;类型的数据表单可能包含2个上面基本语法没有描述的子元素:&lt;br /&gt;
&lt;br /&gt;
#只有一个&amp;lt;reported/&amp;gt;元素，可以理解为一个“表头”描述数据去遵循。 &lt;br /&gt;
#零个或更多&amp;lt;item/&amp;gt;元素，可以理解为包含符合请求的数据（如果有的话）的&amp;quot;table cells&amp;quot;。 &lt;br /&gt;
&lt;br /&gt;
其语法如下：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x xmlns='jabber:x:data' &lt;br /&gt;
   type='result'&amp;gt; &lt;br /&gt;
  &amp;lt;reported&amp;gt; &lt;br /&gt;
    &amp;lt;field var='field-name' label='description' type='{field-type}'/&amp;gt; &lt;br /&gt;
  &amp;lt;/reported&amp;gt; &lt;br /&gt;
  &amp;lt;item&amp;gt; &lt;br /&gt;
    &amp;lt;field var='field-name'&amp;gt; &lt;br /&gt;
      &amp;lt;value&amp;gt;field-value&amp;lt;/value&amp;gt; &lt;br /&gt;
    &amp;lt;/field&amp;gt; &lt;br /&gt;
  &amp;lt;/item&amp;gt; &lt;br /&gt;
  &amp;lt;item&amp;gt; &lt;br /&gt;
    &amp;lt;field var='field-name'&amp;gt; &lt;br /&gt;
      &amp;lt;value&amp;gt;field-value&amp;lt;/value&amp;gt; &lt;br /&gt;
    &amp;lt;/field&amp;gt; &lt;br /&gt;
  &amp;lt;/item&amp;gt; &lt;br /&gt;
  . &lt;br /&gt;
  . &lt;br /&gt;
  . &lt;br /&gt;
&amp;lt;/x&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这些元素每个都必须包含一个或多个&amp;lt;field/&amp;gt;子元素。&amp;lt;reported/&amp;gt;元素为结果项定义数据格式，通过为每个项目指定所期望的字段。为此，除了'var'属性，&amp;lt;field/&amp;gt;元素还应该有'type'属性'label'属性；而且不能包含&amp;lt;value/&amp;gt;元素。在结果集中，每个&amp;lt;item/&amp;gt;元素定义一个项目，而且必须包含在&amp;lt;reported/&amp;gt;元素（虽然&amp;lt;value/&amp;gt;元素中的XML字符数据可能为空）中指定的字段。&lt;br /&gt;
&lt;br /&gt;
==数据有效性==&lt;br /&gt;
&lt;br /&gt;
数据有效性是表单处理实体（通常是一个服务器，服务，或bot）的责任，而不是表单提交实体（通常是一个由用户控制的客户端）。这有助于满足保持客户端实现简单的要求。如果表单处理实体确定提供的数据是无效的，它应该返回一个“不接受”的错误。选择在XMPP &amp;lt;text/&amp;gt;元素中提供文字说明，或识别问题的特殊应用子元素（参考[http://xmpp.org/extensions/xep-0086.html Error Condition Mappings] [[XEP-0004#附录G:备注|11]]中的映射和格式）。&lt;br /&gt;
&lt;br /&gt;
==例子==&lt;br /&gt;
&lt;br /&gt;
对于下面的例子，我们假设存在一个bot hosting服务在Jabber network上，位于&amp;lt;botster.shakespeare.lit&amp;gt;。这个服务允许注册用户创建和配置新的bots，对已经存在的bots查找和交互，等等。我们假定这些交互的发生使用的Ad-Hoc Commands [12]协议，协议被用作表单的&amp;quot;wrapper&amp;quot;协议，受'jabber:x:data'命名空间限制。下面章节中的例子，体现了前文中描述的数据表单协议的大部分特性。&lt;br /&gt;
&lt;br /&gt;
注意：额外的例子可以通过各种“使用协议”的说明书中找到。如XEP-0045:Multi-User Chat和XEP-0055:Jabber Search。&lt;br /&gt;
&lt;br /&gt;
===配置===&lt;br /&gt;
&lt;br /&gt;
:第一步是为用户在主机上创建一个新的bot。我们假设这是通过发送一个“创建”命令给期望的bot来实现的:&lt;br /&gt;
&lt;br /&gt;
:'''例1.用户请求Bot创建'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='romeo@montague.net/home' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='get' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='create' &lt;br /&gt;
           action='execute'/&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:然后主服务返回一个数据表单个用户:&lt;br /&gt;
&lt;br /&gt;
:'''例2.服务返回一个Bot创建表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='romeo@montague.net/home' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands' &lt;br /&gt;
           node='create' &lt;br /&gt;
           sessionid='create:20040408T0128Z' &lt;br /&gt;
           status='executing'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='form'&amp;gt; &lt;br /&gt;
      &amp;lt;title&amp;gt;Bot Configuration&amp;lt;/title&amp;gt; &lt;br /&gt;
      &amp;lt;instructions&amp;gt;Fill out this form to configure your new bot!&amp;lt;/instructions&amp;gt; &lt;br /&gt;
      &amp;lt;field type='hidden' &lt;br /&gt;
             var='FORM_TYPE'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;jabber:bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 1: Bot Info&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' &lt;br /&gt;
             label='The name of your bot' &lt;br /&gt;
             var='botname'/&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-multi' &lt;br /&gt;
             label='Helpful description of your bot' &lt;br /&gt;
             var='description'/&amp;gt; &lt;br /&gt;
      &amp;lt;field type='boolean' &lt;br /&gt;
             label='Public bot?' &lt;br /&gt;
             var='public'&amp;gt; &lt;br /&gt;
        &amp;lt;required/&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-private' &lt;br /&gt;
             label='Password for special access' &lt;br /&gt;
             var='password'/&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 2: Features&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-multi' &lt;br /&gt;
             label='What features will the bot support?' &lt;br /&gt;
             var='features'&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Contests'&amp;gt;&amp;lt;value&amp;gt;contests&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='News'&amp;gt;&amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Polls'&amp;gt;&amp;lt;value&amp;gt;polls&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Reminders'&amp;gt;&amp;lt;value&amp;gt;reminders&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Search'&amp;gt;&amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 3: Subscriber List&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-single' &lt;br /&gt;
             label='Maximum number of subscribers' &lt;br /&gt;
             var='maxsubs'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;20&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;option label='10'&amp;gt;&amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='20'&amp;gt;&amp;lt;value&amp;gt;20&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='30'&amp;gt;&amp;lt;value&amp;gt;30&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='50'&amp;gt;&amp;lt;value&amp;gt;50&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='100'&amp;gt;&amp;lt;value&amp;gt;100&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='None'&amp;gt;&amp;lt;value&amp;gt;none&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 4: Invitations&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='jid-multi' &lt;br /&gt;
             label='People to invite' &lt;br /&gt;
             var='invitelist'&amp;gt; &lt;br /&gt;
        &amp;lt;desc&amp;gt;Tell all your friends about your new bot!&amp;lt;/desc&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:然后用户提交配置表单:&lt;br /&gt;
&lt;br /&gt;
:'''例3.用户提交bot创建表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='romeo@montague.net/home' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='set' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands' &lt;br /&gt;
           node='create' &lt;br /&gt;
           sessionid='create:20040408T0128Z'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='submit'&amp;gt; &lt;br /&gt;
      &amp;lt;field type='hidden' var='FORM_TYPE'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;jabber:bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' var='botname'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;The Jabber Google Bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-multi' var='description'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;This bot enables you to send requests to&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;Google and receive the search results right&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;in your Jabber client. It&amp;amp;apos; really cool!&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;It even supports Google News!&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='boolean' var='public'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-private' var='password'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;v3r0na&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-multi' var='features'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-single' var='maxsubs'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;50&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='jid-multi' var='invitelist'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;juliet@capulet.com&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;benvolio@montague.net&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:然后服务返回结果给用户:&lt;br /&gt;
&lt;br /&gt;
:'''例4.服务返回bot创建的结果'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='romeo@montague.net/home' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands' &lt;br /&gt;
           node='create' &lt;br /&gt;
           sessionid='create:20040408T0128Z' &lt;br /&gt;
           status='completed'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='result'&amp;gt; &lt;br /&gt;
      &amp;lt;field type='hidden' var='FORM_TYPE'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;jabber:bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' var='botname'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;The Jabber Google Bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='boolean' var='public'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-private' var='password'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;v3r0na&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-multi' var='features'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-single' var='maxsubs'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;50&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='jid-multi' var='invitelist'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;juliet@capulet.com&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;benvolio@montague.net&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===搜索===&lt;br /&gt;
&lt;br /&gt;
既然用户已经创建了这个搜索bot,我们假设他所邀请的好友中的一个，决定通过发送一个搜索请求来试一试:&lt;br /&gt;
&lt;br /&gt;
:'''例5.用户请求搜索表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='juliet@capulet.com/chamber' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='get' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search' &lt;br /&gt;
           action='execute'/&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例6.服务返回搜索表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='juliet@capulet.com/chamber' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search' &lt;br /&gt;
           status='executing'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='form'&amp;gt; &lt;br /&gt;
      &amp;lt;title&amp;gt;Joogle Search&amp;lt;/title&amp;gt; &lt;br /&gt;
      &amp;lt;instructions&amp;gt;Fill out this form to search for information!&amp;lt;/instructions&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' &lt;br /&gt;
             var='search_request'&amp;gt; &lt;br /&gt;
        &amp;lt;required/&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例7.用户提交搜索表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='juliet@capulet.com/chamber' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='get' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='submit'&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' var='search_request'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;verona&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例8.服务返回搜索结果'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='juliet@capulet.com/chamber' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search' &lt;br /&gt;
           status='completed'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='result'&amp;gt; &lt;br /&gt;
      &amp;lt;title&amp;gt;Joogle Search: verona&amp;lt;/title&amp;gt; &lt;br /&gt;
      &amp;lt;reported&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'/&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'/&amp;gt; &lt;br /&gt;
      &amp;lt;/reported&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Comune di Verona - Benvenuti nel sito ufficiale&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.comune.verona.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;benvenuto!&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.hellasverona.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Universita degli Studi di Verona - Home Page&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.univr.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Aeroporti del Garda&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.aeroportoverona.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Veronafiere - fiera di Verona&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.veronafiere.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==服务发现==&lt;br /&gt;
&lt;br /&gt;
如果一个实体支持包含受'jabber:x:data'命名空间限制的&amp;lt;x/&amp;gt;元素作为&amp;lt;message/&amp;gt;节直接子元素，它必须报告支持包含一个&amp;quot;jabber:x:data&amp;quot;（参看Protocol Namespaces中关于一个或多个永久命名空间的发行）的服务搜索特征，去响应服务搜索信息请求:&lt;br /&gt;
&lt;br /&gt;
:'''例9.服务搜索信息请求'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq type='get' &lt;br /&gt;
    from='romeo@montague.net/orchard' &lt;br /&gt;
    to='juliet@capulet.com/balcony' &lt;br /&gt;
    id='disco1'&amp;gt; &lt;br /&gt;
  &amp;lt;query xmlns='http://jabber.org/protocol/disco#info'/&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例10.服务搜索信息响应'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq type='result' &lt;br /&gt;
    from='juliet@capulet.com/balcony' &lt;br /&gt;
    to='romeo@montague.net/orchard' &lt;br /&gt;
    id='disco1'&amp;gt; &lt;br /&gt;
  &amp;lt;query xmlns='http://jabber.org/protocol/disco#info'&amp;gt; &lt;br /&gt;
    ... &lt;br /&gt;
    &amp;lt;feature var='jabber:x:data'/&amp;gt; &lt;br /&gt;
    ... &lt;br /&gt;
  &amp;lt;/query&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果实体支持数据表单，间接的通过在wrapper命名空间中包含数据表单，它不能为'jabber:x:data'命名空间通知支持，因为在wrapper协助中的支持是隐性的。&lt;br /&gt;
&lt;br /&gt;
==安全性考虑==&lt;br /&gt;
&lt;br /&gt;
没有安全问题与上述的规范和XMPP Core中相关章节的描述有关。&lt;br /&gt;
&lt;br /&gt;
==IANA考虑==&lt;br /&gt;
&lt;br /&gt;
这份文档与[http://www.iana.org/ Internet Assigned Numbers Authority (IANA)] [[XEP-0004#附录G:备注|13]]无关。&lt;br /&gt;
&lt;br /&gt;
==XMPP注册考虑==&lt;br /&gt;
&lt;br /&gt;
===协议命名空间===&lt;br /&gt;
&lt;br /&gt;
[http://xmpp.org/registrar/ XMPP Registrar] [[XEP-0004#附录G:备注|14]]在它注册的协议命名空间中包含'jabber:x:data'命名空间。&lt;br /&gt;
&lt;br /&gt;
===参数值===&lt;br /&gt;
&lt;br /&gt;
XMPP注册员维持着一个与'jabber:x:data'命名空间相关的注册参数值。具体定义在[http://xmpp.org/extensions/xep-0068.html Field Standardization for Data Forms] [[XEP-0004#附录G:备注|15]]。注册的地方是&amp;lt;http://xmpp.org/registrar/formtypes.html&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==XML 架构==&lt;br /&gt;
&lt;br /&gt;
该架构是描述性的，不是规范的。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;xs:schema &lt;br /&gt;
    xmlns:xs='http://www.w3.org/2001/XMLSchema' &lt;br /&gt;
    targetNamespace='jabber:x:data' &lt;br /&gt;
    xmlns='jabber:x:data' &lt;br /&gt;
    elementFormDefault='qualified'&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:annotation&amp;gt; &lt;br /&gt;
    &amp;lt;xs:documentation&amp;gt; &lt;br /&gt;
      The protocol documented by this schema is defined in &lt;br /&gt;
      XEP-0004: http://www.xmpp.org/extensions/xep-0004.html &lt;br /&gt;
    &amp;lt;/xs:documentation&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:annotation&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='x'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='instructions'  &lt;br /&gt;
                    minOccurs='0'  &lt;br /&gt;
                    maxOccurs='unbounded'  &lt;br /&gt;
                    type='xs:string'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='title' minOccurs='0' type='xs:string'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='field' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='reported' minOccurs='0' maxOccurs='1'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='type' use='required'&amp;gt; &lt;br /&gt;
        &amp;lt;xs:simpleType&amp;gt; &lt;br /&gt;
          &amp;lt;xs:restriction base='xs:NCName'&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='cancel'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='form'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='result'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='submit'/&amp;gt; &lt;br /&gt;
          &amp;lt;/xs:restriction&amp;gt; &lt;br /&gt;
        &amp;lt;/xs:simpleType&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:attribute&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='field'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='desc' minOccurs='0' type='xs:string'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='required' minOccurs='0' type='empty'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='value' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='option' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='label' type='xs:string' use='optional'/&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='type' use='optional'&amp;gt; &lt;br /&gt;
        &amp;lt;xs:simpleType&amp;gt; &lt;br /&gt;
          &amp;lt;xs:restriction base='xs:NCName'&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='boolean'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='fixed'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='hidden'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='jid-multi'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='jid-single'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='list-multi'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='list-single'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='text-multi'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='text-private'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='text-single'/&amp;gt; &lt;br /&gt;
          &amp;lt;/xs:restriction&amp;gt; &lt;br /&gt;
        &amp;lt;/xs:simpleType&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:attribute&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='var' type='xs:string' use='optional'/&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='option'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='value'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='label' type='xs:string' use='optional'/&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='value' type='xs:string'/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='reported'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:annotation&amp;gt; &lt;br /&gt;
      &amp;lt;xs:documentation&amp;gt; &lt;br /&gt;
        When contained in a &amp;quot;reported&amp;quot; element, the &amp;quot;field&amp;quot; element &lt;br /&gt;
        SHOULD NOT contain a &amp;quot;value&amp;quot; child. &lt;br /&gt;
      &amp;lt;/xs:documentation&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:annotation&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='field' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='item'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='field' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:simpleType name='empty'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:restriction base='xs:string'&amp;gt; &lt;br /&gt;
      &amp;lt;xs:enumeration value=''/&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:restriction&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:simpleType&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/xs:schema&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==最终状态的修改==&lt;br /&gt;
&lt;br /&gt;
当本规范已经是最终状态时，下面的实体协议已经做了修改：&lt;br /&gt;
&lt;br /&gt;
* 指定的'var'属性是所有字段类型所必须的，除了&amp;quot;fixed&amp;quot;, 因为'var'属性是可选的。&lt;br /&gt;
&lt;br /&gt;
* 通过服务搜索指定何时去通知支持。&lt;br /&gt;
  &lt;br /&gt;
* 移除引用&amp;lt;presence/&amp;gt;节。&lt;br /&gt;
&lt;br /&gt;
==草稿状态的修改==&lt;br /&gt;
&lt;br /&gt;
当本规范在草稿状态时，下面的实体协议已经做了修改：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;x/&amp;gt;元素可能直接包含在&amp;lt;message/&amp;gt;和&amp;lt;presence/&amp;gt;节中。&lt;br /&gt;
* &amp;lt;x/&amp;gt;元素可能包含一个&amp;lt;title/&amp;gt;子元素，在表单或结果中。&lt;br /&gt;
* &amp;lt;x/&amp;gt;元素必须拥有一个‘类型’属性。&lt;br /&gt;
* &amp;lt;field/&amp;gt;元素可能是类型='jid-single'。&lt;br /&gt;
* 结果可能以&amp;lt;item/&amp;gt;标签的方式返回报告。&lt;br /&gt;
* 结果可能包含一个&amp;lt;reported/&amp;gt;元素的结果集。&lt;br /&gt;
* &amp;lt;reported/&amp;gt;字段可能拥有一个‘类型’属性，提供如何与数据交互的提示（类型='jid-single'是最有用的）。&lt;br /&gt;
&lt;br /&gt;
==附录==&lt;br /&gt;
===附录A:文档信息===&lt;br /&gt;
&lt;br /&gt;
系列：[http://xmpp.org/extensions/ XEP]&lt;br /&gt;
&lt;br /&gt;
序号：0004&lt;br /&gt;
&lt;br /&gt;
发布者：[http://xmpp.org/xsf/ XMPP标准基金会]&lt;br /&gt;
&lt;br /&gt;
状态：[http://www.xmpp.org/extensions/xep-0001.html#states-Final 终结版]&lt;br /&gt;
&lt;br /&gt;
类型：[http://www.xmpp.org/extensions/xep-0001.html#types-Standards%20Track 标准跟踪]&lt;br /&gt;
&lt;br /&gt;
版本：2.9&lt;br /&gt;
&lt;br /&gt;
最后更新：2007-07-13&lt;br /&gt;
&lt;br /&gt;
批准机构：[http://xmpp.org/council/ XMPP理事会]&lt;br /&gt;
&lt;br /&gt;
依赖标准：[[RFC3920|XMPP Core]]&lt;br /&gt;
&lt;br /&gt;
替代标准：无&lt;br /&gt;
&lt;br /&gt;
被替代标准：无&lt;br /&gt;
&lt;br /&gt;
缩略名：x-data&lt;br /&gt;
&lt;br /&gt;
XML架构:&amp;lt;http://www.xmpp.org/schemas/x-data.xsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原文控制： [http://svn.xmpp.org:18080/browse/XMPP/trunk/extensions/xep-0004.xml HTML] [http://svn.xmpp.org:18080//changelog/~rss/XMPP/trunk/extensions/xep-0004.xml/rss.xml RSS]&lt;br /&gt;
&lt;br /&gt;
本文的其它格式： [http://xmpp.org/extensions/xep-0004.xml XML] [http://xmpp.org/extensions/xep-0004.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===附录B:作者信息===&lt;br /&gt;
&lt;br /&gt;
'''Ryan Eatmon'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:reatmon@jabber.org reatmon@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: reatmon@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Joe Hildebrand'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:jhildebr@cisco.com jhildebr@cisco.com]&lt;br /&gt;
&lt;br /&gt;
JabberID: hildjj@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jeremie Miller'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:jer@jabber.org jer@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: jer@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Thomas Muldowney'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:temas@jabber.org temas@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: temas@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Peter Saint-Andre'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:stpeter@jabber.org stpeter@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: stpeter@jabber.org&lt;br /&gt;
&lt;br /&gt;
URI: https://stpeter.im/&lt;br /&gt;
&lt;br /&gt;
{{Template:XEP附录CDEF}}&lt;br /&gt;
&lt;br /&gt;
===附录G:备注===&lt;br /&gt;
#XEP-0077: In-Band Registration &amp;lt;http://xmpp.org/extensions/xep-0077.html&amp;gt;.&lt;br /&gt;
#XEP-0055: Jabber Search &amp;lt;http://xmpp.org/extensions/xep-0055.html&amp;gt;.&lt;br /&gt;
#XEP-0045: Multi-User Chat &amp;lt;http://xmpp.org/extensions/xep-0045.html&amp;gt;.&lt;br /&gt;
#XEP-0030: Service Discovery &amp;lt;http://xmpp.org/extensions/xep-0030.html&amp;gt;.&lt;br /&gt;
#XForms 1.0 &amp;lt;http://www.w3.org/TR/xforms&amp;gt;.&lt;br /&gt;
#XHTML 1.0 &amp;lt;http://www.w3.org/TR/xhtml1&amp;gt;.&lt;br /&gt;
#Modularization of XHTML &amp;lt;http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218/&amp;gt;.&lt;br /&gt;
#RFC 3920: Extensible Messaging and Presence Protocol (XMPP): Core &amp;lt;http://tools.ietf.org/html/rfc3920&amp;gt;.&lt;br /&gt;
#XML Schema Part 2: Datatypes &amp;lt;http://www.w3.org/TR/xmlschema-2/&amp;gt;.&lt;br /&gt;
#In accordance with Section 3.2.2.1 of XML Schema Part 2: Datatypes, the allowable lexical representations for the xs:boolean datatype are the strings &amp;quot;0&amp;quot; and &amp;quot;false&amp;quot; for the concept 'false' and the strings &amp;quot;1&amp;quot; and &amp;quot;true&amp;quot; for the concept 'true'; implementations MUST support both styles of lexical representation.&lt;br /&gt;
#XEP-0086: Error Condition Mappings &amp;lt;http://xmpp.org/extensions/xep-0086.html&amp;gt;.&lt;br /&gt;
#XEP-0050: Ad-Hoc Commands &amp;lt;http://xmpp.org/extensions/xep-0050.html&amp;gt;.&lt;br /&gt;
#The Internet Assigned Numbers Authority (IANA) is the central coordinator for the assignment of unique parameter values for Internet protocols, such as port numbers and URI schemes. For further information, see &amp;lt;http://www.iana.org/&amp;gt;.&lt;br /&gt;
#The XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see &amp;lt;http://xmpp.org/registrar/&amp;gt;.&lt;br /&gt;
#XEP-0068: Field Data Standardization for Data Forms &amp;lt;http://xmpp.org/extensions/xep-0068.html&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===附录H:修订历史===&lt;br /&gt;
&lt;br /&gt;
注意: &lt;br /&gt;
&lt;br /&gt;
'''版本 2.9 (2007-08-13)'''&lt;br /&gt;
&lt;br /&gt;
Clarified the definition and handling of the list-multi and list-single field types; specified that hidden field values should not be modified unless such behavior is defined for the using protocol; specified that a submission should include all fields provided in the empty form and may include additional fields, but that additional fields must be ignored if not understood by the form-processing entity.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 2.8 (2007-05-21)'''&lt;br /&gt;
&lt;br /&gt;
Removed mentions of presence stanzas; added section on discovering support; added section on substantive changes in Final state.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 2.7 (2006-01-25)'''&lt;br /&gt;
&lt;br /&gt;
Incorporated errata: (1) clarified rules regarding inclusion of option and value elements depending on field type; (2) clarified handling of default values; (3) added value elements to list-multi field in Example 2; (4) harmonized spelling of form-processing entity and form-submitting entity.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
Version 2.6 (2004-10-13)&lt;br /&gt;
Incorporated errata: (1) corrected syntax of &amp;lt;reported/&amp;gt; element (&amp;lt;field/&amp;gt; element should not contain a &amp;lt;value/&amp;gt; child); (2) corrected Example 8.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.5 (2004-05-07)&lt;br /&gt;
Clarified terminology regarding form-processing entities and form-submitting entities; corrected several small errors in the schema.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.4 (2004-05-04)&lt;br /&gt;
Per discussion by the authors and Jabber Council, specified that the 'var' attribute is required for all field types except &amp;quot;fixed&amp;quot;, for which the 'var' attribute is optional.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.3 (2004-03-31)&lt;br /&gt;
Formalization and further editorial revisions.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.2 (2004-01-22)&lt;br /&gt;
Editorial revisions.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.1 (2003-02-16)&lt;br /&gt;
Added schema.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.0 (2002-12-09)&lt;br /&gt;
Per a vote of the Jabber Council, changed status to Final.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 1.1 (2002-10-15)&lt;br /&gt;
Call for Experience changes (see Changes in Draft State section). This version voted to Final on 2002-12-09.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 1.0 (2002-04-24)&lt;br /&gt;
Per a vote of the Jabber Council, changed status to Draft.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 0.6 (2002-03-15)&lt;br /&gt;
Protocol tweaks based on Standards list discussion.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.5 (2002-02-06)&lt;br /&gt;
Protocol tweaks based on implementation and discussion.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.4 (2001-11-16)&lt;br /&gt;
Major redesign to attempt to clarify the scope of this document and limit what it is trying to solve.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.3 (2001-07-23)&lt;br /&gt;
Protocol update&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.2 (2001-06-29)&lt;br /&gt;
Protocol update and DocBook version&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.1 (2001-01-25)&lt;br /&gt;
Initial release&lt;br /&gt;
&lt;br /&gt;
(rwe)&lt;br /&gt;
[http://essaywritingservices.org/index.php essay writing service]&lt;/div&gt;</summary>
		<author><name>Zoey1990</name></author>	</entry>

	<entry>
		<id>http://wiki.jabbercn.org/XEP-0004</id>
		<title>XEP-0004</title>
		<link rel="alternate" type="text/html" href="http://wiki.jabbercn.org/XEP-0004"/>
				<updated>2012-09-04T04:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Zoey1990: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:XMPP扩展]]&lt;br /&gt;
[[Category:已翻译]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本文的英文原文来自[http://xmpp.org/extensions/xep-0004.html XEP-0004]'''&lt;br /&gt;
&lt;br /&gt;
'''XEP-0004: 数据表单'''&lt;br /&gt;
&lt;br /&gt;
摘要: 本文定义了一个XMPP扩展协议用于数据表单，可以用于worklows如服务配置以及特定应用的数据描述和报告。这个协议包括表单处理的轻量级语义(如请求,响应,提交和取消),定义了几种常见的字段类型(布尔、单个或多个选择的列表选项、单行或多行的文本,单个或多个JabberID、隐藏字段,等等),为以后的数据类型提供扩展性,可以用在广泛的应用中。该协议并不是要提供完整的表格处理功能（由W3C XForms技术提供），而是提供这种功能的基本子集给XMPP使用。&lt;br /&gt;
&lt;br /&gt;
作者:	Ryan Eatmon, Joe Hildebrand, Jeremie Miller, Thomas Muldowney, Peter Saint-Andre&lt;br /&gt;
&lt;br /&gt;
XMPP扩展协议的版权(1999-2008)归XMPP标准化基金会(XSF)所有&lt;br /&gt;
&lt;br /&gt;
版权:	? 1999 - 2010 XMPP标准化基金会(XSF). 参见[[XEP-0004#法律通告|法律通告]].&lt;br /&gt;
&lt;br /&gt;
状态: 最终&lt;br /&gt;
&lt;br /&gt;
类型: 标准跟踪&lt;br /&gt;
&lt;br /&gt;
版本: 2.9&lt;br /&gt;
&lt;br /&gt;
最后更新日期: 2007-08-13&lt;br /&gt;
&lt;br /&gt;
注意: 这里定义的协议是XMPP标准化基金会的一个最终标准.对于实现和布署来说可以被认为是一个稳定技术.&lt;br /&gt;
&lt;br /&gt;
==绪论==&lt;br /&gt;
&lt;br /&gt;
几个现有的Jabber/XMPP的协议包含用户和应用程序之间的结构数据交换，为常用的任务，如注册（[http://xmpp.org/extensions/xep-0077.html In-Band Registration][[XEP-0004#附录G:备注|1]]）和搜索（[http://xmpp.org/extensions/xep-0055.html Jabber Search] [[XEP-0004#附录G:备注|2]]）。不幸的是，这些早期的协议是“硬编码”，因此很大的限制了可交换信息的范围。此外，其他协议(如，[http://xmpp.org/extensions/xep-0045.html Multi-User Chat] [[XEP-0004#附录G:备注|3]])可能需要以交换数据为目的，例如配置，但是配置选项可能根据具体实施或部署不同。最后，开发人员可能要以灵活的方式扩展其他协议(如, [http://xmpp.org/extensions/xep-0030.html Service Discovery][[XEP-0004#附录G:备注|4]])，以提供在基本协议没有定义的信息。在所有这些情况下，这将有助于使用一个通用的数据描述格式，可以用于动态表单生成和各种情况下的数据“建模”。&lt;br /&gt;
&lt;br /&gt;
一个例子可能会有帮助。试想一下，当用户创建一个文本会议服务的多用户聊天室，该服务允许用户以各种方式配置房间。虽然大多数实现可能提供了一个较为常见的可配置功能集（讨论记录，房间拥有者的最大数量，等等）。还会有一些分歧：也许一个实现允许把房间日志以各种文件类型（XML，HTML，PDF等格式）和各种时间周期（每小时，每天，每周等）保存。而另一个实现，可能只存在登录的开/关选择一种格式（如，在HTML保存每日日志）。很明显，第一个实现比第二个实现有更多的配置选项。而不像“硬编码”每个选项通过不同的XML元素（如，&amp;lt;room_logging_period/&amp;gt;），一个好的设计应该包含更多灵活的格式。&lt;br /&gt;
&lt;br /&gt;
此处所描述的'jabber:x:data'协议为Jabber/XMPP实体的使用定义了灵活的格式，控制在“名称值”对的简单和[http://www.w3.org/TR/xforms/ XForms 1.0] [[XEP-0004#附录G:备注|5]]（当这个协议被设计时才开始发展的）的复杂之间。在很多方面，'jabber:x:data' 与[http://www.w3.org/TR/xhtml1/ XHTML 1.0][[XEP-0004#附录G:备注|6]]的表单模块类似。但它提供一些Jabber特有的数据类型，允许应用程序请求数据字段，更自然地集成到IQ节的“workflow”语义中。而且它可以作为现有的Jabber/XMPP协议的扩展，而当这个协议被开发出来时，XHTML的表单模块却不能（尤其是当时并没有[http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218/ Modularization of XHTML] [[XEP-0004#附录G:备注|7]]）。&lt;br /&gt;
&lt;br /&gt;
==需求==&lt;br /&gt;
&lt;br /&gt;
本文档涉及下列需求:&lt;br /&gt;
&lt;br /&gt;
# '''数据收集''' -- 该协议应允许表单处理实体（通常是一个服务器，服务，或bot）从表单提交实体（通常是一个由用户控制的客户端）收集数据。应该是通过不同的数据字段来做，每个都可以是不同的数据“类型”，而且允许自由格式的输入或多个选项的选择（就像HTML表单一样）。&lt;br /&gt;
# '''数据报告''' -- 该协议应允许表单处理的实体向表单提交的实体报告数据，再通过不同的数据字段。 &lt;br /&gt;
# '''可移植性''' -- 协议应该尽量只定义普通数据格式和基本的数据类型。提示应该在相关的用户界面提供，但应该仅仅是提示，而不是严格的要求。 &lt;br /&gt;
# '''简单''' -- 协议在客户端的实施应该简单，并且大多数复杂的工作（如，数据有效性和处理）应由服务器和组件去完成，而不是客户端。 &lt;br /&gt;
# '''灵活性''' -- 协议应该具有灵活性和可扩展性，而不像“硬编码”。&lt;br /&gt;
# '''兼容性''' -- 协议应该为已有的Jabber/XMPP协议定义一个扩展，而且不破坏已有的实现，除非绝对必要。&lt;br /&gt;
&lt;br /&gt;
==协议==&lt;br /&gt;
&lt;br /&gt;
'jabber:x:data' 命名空间的基本语法如下（正式的描述可以在下面的XML节中找到）:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x xmlns='jabber:x:data' &lt;br /&gt;
   type='{form-type}'&amp;gt; &lt;br /&gt;
  &amp;lt;title/&amp;gt; &lt;br /&gt;
  &amp;lt;instructions/&amp;gt; &lt;br /&gt;
  &amp;lt;field var='field-name' &lt;br /&gt;
         type='{field-type}' &lt;br /&gt;
         label='description'&amp;gt; &lt;br /&gt;
    &amp;lt;desc/&amp;gt; &lt;br /&gt;
    &amp;lt;required/&amp;gt; &lt;br /&gt;
    &amp;lt;value&amp;gt;field-value&amp;lt;/value&amp;gt; &lt;br /&gt;
    &amp;lt;option label='option-label'&amp;gt;&amp;lt;value&amp;gt;option-value&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
    &amp;lt;option label='option-label'&amp;gt;&amp;lt;value&amp;gt;option-value&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
  &amp;lt;/field&amp;gt; &lt;br /&gt;
&amp;lt;/x&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
受'jabber:x:data' 命名空间限制的&amp;lt;x/&amp;gt;元素，应该包括直接作为&amp;lt;message/&amp;gt;节第一级子元素或作为&amp;lt;iq/&amp;gt; 节（其中第一级子元素是由一个&amp;quot;wrapper&amp;quot;命名空间限制的）的第二级子节。参见下文列举的限制。&lt;br /&gt;
&lt;br /&gt;
可选项&amp;lt;title/&amp;gt;和&amp;lt;instructions/&amp;gt;元素，允许表单处理实体把表单标记为一个整体并指定自然语言指令，后面跟着表单提交实体。这些元素的XML字符数据不应包含换行符（\n和\r字符），而任何换行符操作（如，在用户界面显示）在这里不是特指的。但&amp;lt;instructions/&amp;gt;元素的多个实体可以被包括在内。&lt;br /&gt;
&lt;br /&gt;
===表单类型===&lt;br /&gt;
&lt;br /&gt;
由'jabber:x:data'表单收集或提供的数据可位于许多不同的上下文中。例如，一个需要填写的空表单，一个填好的表单，提交的结果，一个搜索结果，或仅仅是用'jabber:x:data'命名空间封装的一组数据。完整的数据上下文由3个条件提供：&lt;br /&gt;
&lt;br /&gt;
# &amp;quot;wrapper&amp;quot;协议（比如，以&amp;lt;iq/&amp;gt;节直接子元素为根元素的命名空间和受'jabber:x:data' 命名空间限制的&amp;lt;x/&amp;gt;元素的父元素）&lt;br /&gt;
# 在一个事务（如，一个IQ &amp;quot;set&amp;quot;或&amp;quot;result&amp;quot;）或结构化的会话（如，一个消息&amp;lt;thread/&amp;gt;）中表单的位置&lt;br /&gt;
# 表单中&amp;lt;x/&amp;gt;根元素的'type'属性&lt;br /&gt;
&lt;br /&gt;
前2件上下文信息由其他协议提供，而表单类型见下面表格。&lt;br /&gt;
&lt;br /&gt;
:'''表1：表单类型(Form Types)'''&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
! 类型 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
|form || 表单处理实体(form-processing entity)请求表单提交实体(form-submitting entity)去完成表单&lt;br /&gt;
|-&lt;br /&gt;
|submit || 表单提交实体提交数据给表单处理实体。提交信息可以(MAY)包含空表单中没有提供的字段，但表单处理实体必须(MUST)忽略任何无法识别的字段&lt;br /&gt;
|-&lt;br /&gt;
|cancel || 表单提交实体取消向表单处理实体提交数据&lt;br /&gt;
|-&lt;br /&gt;
|result || 表单处理实体返回数据（如查询结果）给表单提交实体，或数据是一个通用的数据集&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
为了维护form类型中获取的数据的上下文，必须(MUST)遵守以下规则:&lt;br /&gt;
&lt;br /&gt;
:* 对于&amp;lt;iq/&amp;gt;节，在类型为&amp;quot;form&amp;quot; 或&amp;quot;submit&amp;quot;的表单中受&amp;quot;wrapper&amp;quot; 命名空间限制的根元素，必须(MUST)以一个类型为&amp;quot;result&amp;quot;的表单的形式返回。受'jabber:x:data'命名空间限制的&amp;lt;x/&amp;gt;元素，必须(MUST)是&amp;quot;wrapper&amp;quot;命名空间根元素的子元素。根据[http://tools.ietf.org/html/rfc3920 XMPP Core] [[XEP-0004#附录G:备注|8]]所定义， 'id' 属性必须(MUST)在IQ结果中被复制。对于类型为&amp;quot;form&amp;quot; 或 &amp;quot;result&amp;quot;的数据表单,&amp;lt;iq/&amp;gt;节应该(SHOULD)是&amp;quot;result&amp;quot;类型。对于类型为&amp;quot;submit&amp;quot; 或&amp;quot;cancel&amp;quot;的数据表单， &amp;lt;iq/&amp;gt;节应该(SHOULD)是&amp;quot;set&amp;quot;类型。&lt;br /&gt;
&lt;br /&gt;
:* 对于&amp;lt;message/&amp;gt;节，如果提供&amp;lt;thread/&amp;gt;的话，应该(SHOULD)在回复中被复制。受'jabber:x:data'命名空间限制的&amp;lt;x/&amp;gt;元素，必须(MUST)是&amp;lt;message/&amp;gt;节的子元素。&lt;br /&gt;
&lt;br /&gt;
===字段元素===&lt;br /&gt;
&lt;br /&gt;
一个&amp;quot;form&amp;quot;，&amp;quot;submit&amp;quot;，或 &amp;quot;result&amp;quot;类型的数据表单应该(SHOULD)包含至少一个&amp;lt;field/&amp;gt;元素。一个&amp;quot;cancel&amp;quot;类型的数据表单，不应该(SHOULD NOT)包含任何&amp;lt;field/&amp;gt;元素。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;field/&amp;gt;元素可以(MAY)包含以下任何子元素:&lt;br /&gt;
&lt;br /&gt;
:'''&amp;lt;desc/&amp;gt;'''&lt;br /&gt;
:该元素的XML字符数据提供了该字段一个自然语言的描述，为了在用户代理中展现（如，作为一个&amp;quot;tool-tip&amp;quot;，帮助按钮，或在字段附近的文本说明）。&amp;lt;desc/&amp;gt;元素不应(SHOULD NOT)包含换行符（\n和\r字符），因为布局是用户代理的责任，任何换行的处理（如，在用户界面中的展现）在这里是未指定的。（注意：提供一个字段的描述，推荐(RECOMMENDED)使用&amp;lt;desc/&amp;gt;元素，而不是一个单独的&amp;quot;fixed&amp;quot;类型的&amp;lt;field/&amp;gt;元素。）&lt;br /&gt;
&lt;br /&gt;
:'''&amp;lt;required/&amp;gt;'''&lt;br /&gt;
:该元素必须(MUST)为空，标记字段为必填字段。&lt;br /&gt;
 &lt;br /&gt;
:'''&amp;lt;value/&amp;gt;'''&lt;br /&gt;
:该元素的XML字符数据在&amp;quot;form&amp;quot;类型数据表单中为字段（根据表单处理实体）定义了默认值，在&amp;quot;submit&amp;quot;类型数据表单中是由表单提交实体提供的数据，在&amp;quot;result&amp;quot;类型数据表单中是数据结果。在&amp;quot;form&amp;quot;类型数据表单中，如果表单处理实体通过&amp;lt;value/&amp;gt;元素提供了一个默认值，表单提交实体就不应该(SHOULD NOT)尝试去执行一个不同的默认值（虽然为了尊重用户的首选项，或预测用户输入也可能(MAY)这么做）。&amp;quot;list-multi&amp;quot;，&amp;quot;jid-multi&amp;quot;，&amp;quot;text-multi&amp;quot;和&amp;quot;hidden&amp;quot;类型的字段也许(MAY)包含多个&amp;lt;value/&amp;gt;元素；所有其它类型的元素不能(MUST NOT)包含多于一个&amp;lt;value/&amp;gt;元素。&lt;br /&gt;
&lt;br /&gt;
:'''&amp;lt;option/&amp;gt;'''&lt;br /&gt;
:在&amp;quot;list-single&amp;quot;或&amp;quot;list-multi&amp;quot;类型字段中的一个选项。&amp;lt;value/&amp;gt;子元素的XML字符定义了选项的值，而'label'属性为选项定义了一个可读的名称。&amp;lt;option/&amp;gt;元素必须(MUST)且只能包含一个&amp;lt;value/&amp;gt;子元素。如果字段类型不是&amp;quot;list-single&amp;quot;或&amp;quot;list-multi&amp;quot;，就一定不能(MUST NOT)包含&amp;lt;option/&amp;gt;元素。&lt;br /&gt;
 &lt;br /&gt;
如果&amp;lt;field/&amp;gt;元素不是&amp;quot;fixed&amp;quot;类型（见下文），它必须(MUST)有一个'var'属性在表单的上下文中唯一的标识字段（如果是&amp;quot;fixed&amp;quot;，可以(MAY)有一个'var'属性）。&amp;lt;field/&amp;gt;元素可以(MAY)有一个'label'属性，为字段定义一个人们易读的名称。对于“form”类型的数据表单，每个&amp;lt;field/&amp;gt;元素应该拥有'type'属性，它定义了字段数据的数据 &amp;quot;type&amp;quot;（如果没有'type'被指定，则默认为&amp;quot;text-single&amp;quot;）。在其他表单类型的上下文中提供的字段，也可以拥有一个'type'属性。对于&amp;quot;submit&amp;quot;类型的数据表单，'type'中包含的属性是可选的，因为表单处理实体被假定知道它处理的表单的数据类型。&lt;br /&gt;
&lt;br /&gt;
如果字段出现在用户页面上（如，问卷中的项或表单结果），在XML中的字段元素的顺序，应该决定出现在用户处的项目的顺序。&lt;br /&gt;
&lt;br /&gt;
===字段类型===&lt;br /&gt;
以下字段类型代表Jabber/XMPP实体之间通用的数据类型。这些字段并打算像数据类型一样被广泛定义，如[http://www.w3.org/TR/xmlschema-2/ XML Schema Part 2] [[XEP-0004#附录G:备注|9]], 也没有定义用户界面元素。&lt;br /&gt;
&lt;br /&gt;
:'''表2:字段类型'''&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
! 类型 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
|布尔型 || 该字段允许一个实体收集或提供一个在两个选项中只能二选一的选择。默认值为&amp;quot;false&amp;quot;。[[XEP-0004#附录G:备注|10]]&lt;br /&gt;
|-&lt;br /&gt;
|固定 || 该字段是用于数据的描述（如，人们易读的&amp;quot;section&amp;quot;头信息）而不是数据的收集或提供。&amp;lt;value/&amp;gt;子元素不应该包含换行符（\n和\r字符）；然而一个应用应该生成多个固定的字段，每个都包含&amp;lt;value/&amp;gt;子元素。&lt;br /&gt;
|-&lt;br /&gt;
|隐藏 || 该字段未展现给表单提交实体，但是和表单一起返回。表单提交实体不能修改隐藏字段的值，但如果这种行为被定义为是“使用协议”时可以这样做。&lt;br /&gt;
|-&lt;br /&gt;
|多jid || 该字段允许一个实体收集或提供多个Jabber ID。每个提供的JID应该是唯一的（比较确定的，包括Nodeprep的应用、Nameprep和Resourceprep profiles of Stringprep，按XMPP Core中说明的），而重复的JID一定会被忽略。*&lt;br /&gt;
|-&lt;br /&gt;
|单jid || 该字段允许一个实体收集或提供单个的Jabber ID。&lt;br /&gt;
|-&lt;br /&gt;
|多选项列表 || 该字段允许一个实体从很多选项中收集或提供一个或多个选项。表单提交实体从表单处理实体提交的选项中选择一个或多个项，而且不能插入新的选项。表单处理实体不能修改从表单处理实体处获取的项目的顺序，因为项目的顺序可能很重要。**&lt;br /&gt;
|-&lt;br /&gt;
|单选项列表|| 该字段允许一个实体从很多选项中收集或提供一个选项。表单提交实体从表单处理实体提交的选项中选择一个项，而且不能插入新的选项。**&lt;br /&gt;
|-&lt;br /&gt;
|多文本|| 该字段允许一个实体收集或提供多行的文本。***&lt;br /&gt;
|-&lt;br /&gt;
|私有文本|| 该字段允许一个实体收集或提供一行或一个词的文本，其应该在界面上遮蔽。（如，星号显示的多个实体）&lt;br /&gt;
|-&lt;br /&gt;
|单文本|| 该字段允许一个实体收集或提供一行或一个词的文本，其应该在界面上显示。这个字段类型是缺省的而且必须假定，当一个表单提交实体收到一个不知道的字段类型时。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注意：为字段类型&amp;quot;jid-single&amp;quot;或&amp;quot;jid-multi&amp;quot;提供的数据必须包含一个或一个以上的有效Jabber ID，有效性是由XMPP Core（参看后面章节的Data Validation）定义的寻址规则决定的。&lt;br /&gt;
&lt;br /&gt;
注意：在list-multi和list-single中的&amp;lt;option/&amp;gt;元素必须是唯一的，唯一性是由‘label’属性的值和&amp;lt;value/&amp;gt;元素中的XML字符数据决定的。（即，2个都必须是唯一的）&lt;br /&gt;
&lt;br /&gt;
注意：为字段类型&amp;quot;text-multi&amp;quot;提供的数据不应该包含任何换行符（\n和\r字符）。而应用程序应该把数据分为多个字符串（基于平台插入的换行符），然后用不同的&amp;lt;value/&amp;gt;元素中的XML字符数据指定每一个字符串。同样的，以&amp;quot;text-multi&amp;quot;字段类型接收了多个&amp;lt;value/&amp;gt;元素的应用程序，应该把value元素中的XML字符数据合并成一个文本块以提交给用户。每一个字符串为平台适时的通过换行符分开。&lt;br /&gt;
&lt;br /&gt;
===表单结果中的多个项目===&lt;br /&gt;
在某些情况下（如，查询请求的结果），传达多个项目是必须的。因此，一个&amp;quot;result&amp;quot;类型的数据表单可能包含2个上面基本语法没有描述的子元素:&lt;br /&gt;
&lt;br /&gt;
#只有一个&amp;lt;reported/&amp;gt;元素，可以理解为一个“表头”描述数据去遵循。 &lt;br /&gt;
#零个或更多&amp;lt;item/&amp;gt;元素，可以理解为包含符合请求的数据（如果有的话）的&amp;quot;table cells&amp;quot;。 &lt;br /&gt;
&lt;br /&gt;
其语法如下：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x xmlns='jabber:x:data' &lt;br /&gt;
   type='result'&amp;gt; &lt;br /&gt;
  &amp;lt;reported&amp;gt; &lt;br /&gt;
    &amp;lt;field var='field-name' label='description' type='{field-type}'/&amp;gt; &lt;br /&gt;
  &amp;lt;/reported&amp;gt; &lt;br /&gt;
  &amp;lt;item&amp;gt; &lt;br /&gt;
    &amp;lt;field var='field-name'&amp;gt; &lt;br /&gt;
      &amp;lt;value&amp;gt;field-value&amp;lt;/value&amp;gt; &lt;br /&gt;
    &amp;lt;/field&amp;gt; &lt;br /&gt;
  &amp;lt;/item&amp;gt; &lt;br /&gt;
  &amp;lt;item&amp;gt; &lt;br /&gt;
    &amp;lt;field var='field-name'&amp;gt; &lt;br /&gt;
      &amp;lt;value&amp;gt;field-value&amp;lt;/value&amp;gt; &lt;br /&gt;
    &amp;lt;/field&amp;gt; &lt;br /&gt;
  &amp;lt;/item&amp;gt; &lt;br /&gt;
  . &lt;br /&gt;
  . &lt;br /&gt;
  . &lt;br /&gt;
&amp;lt;/x&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这些元素每个都必须包含一个或多个&amp;lt;field/&amp;gt;子元素。&amp;lt;reported/&amp;gt;元素为结果项定义数据格式，通过为每个项目指定所期望的字段。为此，除了'var'属性，&amp;lt;field/&amp;gt;元素还应该有'type'属性'label'属性；而且不能包含&amp;lt;value/&amp;gt;元素。在结果集中，每个&amp;lt;item/&amp;gt;元素定义一个项目，而且必须包含在&amp;lt;reported/&amp;gt;元素（虽然&amp;lt;value/&amp;gt;元素中的XML字符数据可能为空）中指定的字段。&lt;br /&gt;
&lt;br /&gt;
==数据有效性==&lt;br /&gt;
&lt;br /&gt;
数据有效性是表单处理实体（通常是一个服务器，服务，或bot）的责任，而不是表单提交实体（通常是一个由用户控制的客户端）。这有助于满足保持客户端实现简单的要求。如果表单处理实体确定提供的数据是无效的，它应该返回一个“不接受”的错误。选择在XMPP &amp;lt;text/&amp;gt;元素中提供文字说明，或识别问题的特殊应用子元素（参考[http://xmpp.org/extensions/xep-0086.html Error Condition Mappings] [[XEP-0004#附录G:备注|11]]中的映射和格式）。&lt;br /&gt;
&lt;br /&gt;
==例子==&lt;br /&gt;
&lt;br /&gt;
对于下面的例子，我们假设存在一个bot hosting服务在Jabber network上，位于&amp;lt;botster.shakespeare.lit&amp;gt;。这个服务允许注册用户创建和配置新的bots，对已经存在的bots查找和交互，等等。我们假定这些交互的发生使用的Ad-Hoc Commands [12]协议，协议被用作表单的&amp;quot;wrapper&amp;quot;协议，受'jabber:x:data'命名空间限制。下面章节中的例子，体现了前文中描述的数据表单协议的大部分特性。&lt;br /&gt;
&lt;br /&gt;
注意：额外的例子可以通过各种“使用协议”的说明书中找到。如XEP-0045:Multi-User Chat和XEP-0055:Jabber Search。&lt;br /&gt;
&lt;br /&gt;
===配置===&lt;br /&gt;
&lt;br /&gt;
:第一步是为用户在主机上创建一个新的bot。我们假设这是通过发送一个“创建”命令给期望的bot来实现的:&lt;br /&gt;
&lt;br /&gt;
:'''例1.用户请求Bot创建'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='romeo@montague.net/home' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='get' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='create' &lt;br /&gt;
           action='execute'/&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:然后主服务返回一个数据表单个用户:&lt;br /&gt;
&lt;br /&gt;
:'''例2.服务返回一个Bot创建表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='romeo@montague.net/home' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands' &lt;br /&gt;
           node='create' &lt;br /&gt;
           sessionid='create:20040408T0128Z' &lt;br /&gt;
           status='executing'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='form'&amp;gt; &lt;br /&gt;
      &amp;lt;title&amp;gt;Bot Configuration&amp;lt;/title&amp;gt; &lt;br /&gt;
      &amp;lt;instructions&amp;gt;Fill out this form to configure your new bot!&amp;lt;/instructions&amp;gt; &lt;br /&gt;
      &amp;lt;field type='hidden' &lt;br /&gt;
             var='FORM_TYPE'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;jabber:bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 1: Bot Info&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' &lt;br /&gt;
             label='The name of your bot' &lt;br /&gt;
             var='botname'/&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-multi' &lt;br /&gt;
             label='Helpful description of your bot' &lt;br /&gt;
             var='description'/&amp;gt; &lt;br /&gt;
      &amp;lt;field type='boolean' &lt;br /&gt;
             label='Public bot?' &lt;br /&gt;
             var='public'&amp;gt; &lt;br /&gt;
        &amp;lt;required/&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-private' &lt;br /&gt;
             label='Password for special access' &lt;br /&gt;
             var='password'/&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 2: Features&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-multi' &lt;br /&gt;
             label='What features will the bot support?' &lt;br /&gt;
             var='features'&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Contests'&amp;gt;&amp;lt;value&amp;gt;contests&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='News'&amp;gt;&amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Polls'&amp;gt;&amp;lt;value&amp;gt;polls&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Reminders'&amp;gt;&amp;lt;value&amp;gt;reminders&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='Search'&amp;gt;&amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 3: Subscriber List&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-single' &lt;br /&gt;
             label='Maximum number of subscribers' &lt;br /&gt;
             var='maxsubs'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;20&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;option label='10'&amp;gt;&amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='20'&amp;gt;&amp;lt;value&amp;gt;20&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='30'&amp;gt;&amp;lt;value&amp;gt;30&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='50'&amp;gt;&amp;lt;value&amp;gt;50&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='100'&amp;gt;&amp;lt;value&amp;gt;100&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
        &amp;lt;option label='None'&amp;gt;&amp;lt;value&amp;gt;none&amp;lt;/value&amp;gt;&amp;lt;/option&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='fixed'&amp;gt;&amp;lt;value&amp;gt;Section 4: Invitations&amp;lt;/value&amp;gt;&amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='jid-multi' &lt;br /&gt;
             label='People to invite' &lt;br /&gt;
             var='invitelist'&amp;gt; &lt;br /&gt;
        &amp;lt;desc&amp;gt;Tell all your friends about your new bot!&amp;lt;/desc&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:然后用户提交配置表单:&lt;br /&gt;
&lt;br /&gt;
:'''例3.用户提交bot创建表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='romeo@montague.net/home' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='set' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands' &lt;br /&gt;
           node='create' &lt;br /&gt;
           sessionid='create:20040408T0128Z'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='submit'&amp;gt; &lt;br /&gt;
      &amp;lt;field type='hidden' var='FORM_TYPE'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;jabber:bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' var='botname'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;The Jabber Google Bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-multi' var='description'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;This bot enables you to send requests to&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;Google and receive the search results right&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;in your Jabber client. It&amp;amp;apos; really cool!&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;It even supports Google News!&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='boolean' var='public'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-private' var='password'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;v3r0na&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-multi' var='features'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-single' var='maxsubs'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;50&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='jid-multi' var='invitelist'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;juliet@capulet.com&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;benvolio@montague.net&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:然后服务返回结果给用户:&lt;br /&gt;
&lt;br /&gt;
:'''例4.服务返回bot创建的结果'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='romeo@montague.net/home' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='create2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands' &lt;br /&gt;
           node='create' &lt;br /&gt;
           sessionid='create:20040408T0128Z' &lt;br /&gt;
           status='completed'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='result'&amp;gt; &lt;br /&gt;
      &amp;lt;field type='hidden' var='FORM_TYPE'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;jabber:bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' var='botname'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;The Jabber Google Bot&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='boolean' var='public'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-private' var='password'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;v3r0na&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-multi' var='features'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;news&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;search&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='list-single' var='maxsubs'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;50&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;field type='jid-multi' var='invitelist'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;juliet@capulet.com&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;benvolio@montague.net&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===搜索===&lt;br /&gt;
&lt;br /&gt;
既然用户已经创建了这个搜索bot,我们假设他所邀请的好友中的一个，决定通过发送一个搜索请求来试一试:&lt;br /&gt;
&lt;br /&gt;
:'''例5.用户请求搜索表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='juliet@capulet.com/chamber' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='get' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search' &lt;br /&gt;
           action='execute'/&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例6.服务返回搜索表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='juliet@capulet.com/chamber' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search1'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search' &lt;br /&gt;
           status='executing'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='form'&amp;gt; &lt;br /&gt;
      &amp;lt;title&amp;gt;Joogle Search&amp;lt;/title&amp;gt; &lt;br /&gt;
      &amp;lt;instructions&amp;gt;Fill out this form to search for information!&amp;lt;/instructions&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' &lt;br /&gt;
             var='search_request'&amp;gt; &lt;br /&gt;
        &amp;lt;required/&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例7.用户提交搜索表单'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='juliet@capulet.com/chamber' &lt;br /&gt;
    to='joogle@botster.shakespeare.lit' &lt;br /&gt;
    type='get' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='submit'&amp;gt; &lt;br /&gt;
      &amp;lt;field type='text-single' var='search_request'&amp;gt; &lt;br /&gt;
        &amp;lt;value&amp;gt;verona&amp;lt;/value&amp;gt; &lt;br /&gt;
      &amp;lt;/field&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例8.服务返回搜索结果'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq from='joogle@botster.shakespeare.lit' &lt;br /&gt;
    to='juliet@capulet.com/chamber' &lt;br /&gt;
    type='result' &lt;br /&gt;
    xml:lang='en' &lt;br /&gt;
    id='search2'&amp;gt; &lt;br /&gt;
  &amp;lt;command xmlns='http://jabber.org/protocol/commands'  &lt;br /&gt;
           node='search' &lt;br /&gt;
           status='completed'&amp;gt; &lt;br /&gt;
    &amp;lt;x xmlns='jabber:x:data' type='result'&amp;gt; &lt;br /&gt;
      &amp;lt;title&amp;gt;Joogle Search: verona&amp;lt;/title&amp;gt; &lt;br /&gt;
      &amp;lt;reported&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'/&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'/&amp;gt; &lt;br /&gt;
      &amp;lt;/reported&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Comune di Verona - Benvenuti nel sito ufficiale&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.comune.verona.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;benvenuto!&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.hellasverona.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Universita degli Studi di Verona - Home Page&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.univr.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Aeroporti del Garda&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.aeroportoverona.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
      &amp;lt;item&amp;gt; &lt;br /&gt;
        &amp;lt;field var='name'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;Veronafiere - fiera di Verona&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
        &amp;lt;field var='url'&amp;gt; &lt;br /&gt;
          &amp;lt;value&amp;gt;http://www.veronafiere.it/&amp;lt;/value&amp;gt; &lt;br /&gt;
        &amp;lt;/field&amp;gt; &lt;br /&gt;
      &amp;lt;/item&amp;gt; &lt;br /&gt;
    &amp;lt;/x&amp;gt; &lt;br /&gt;
  &amp;lt;/command&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==服务发现==&lt;br /&gt;
&lt;br /&gt;
如果一个实体支持包含受'jabber:x:data'命名空间限制的&amp;lt;x/&amp;gt;元素作为&amp;lt;message/&amp;gt;节直接子元素，它必须报告支持包含一个&amp;quot;jabber:x:data&amp;quot;（参看Protocol Namespaces中关于一个或多个永久命名空间的发行）的服务搜索特征，去响应服务搜索信息请求:&lt;br /&gt;
&lt;br /&gt;
:'''例9.服务搜索信息请求'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq type='get' &lt;br /&gt;
    from='romeo@montague.net/orchard' &lt;br /&gt;
    to='juliet@capulet.com/balcony' &lt;br /&gt;
    id='disco1'&amp;gt; &lt;br /&gt;
  &amp;lt;query xmlns='http://jabber.org/protocol/disco#info'/&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:'''例10.服务搜索信息响应'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iq type='result' &lt;br /&gt;
    from='juliet@capulet.com/balcony' &lt;br /&gt;
    to='romeo@montague.net/orchard' &lt;br /&gt;
    id='disco1'&amp;gt; &lt;br /&gt;
  &amp;lt;query xmlns='http://jabber.org/protocol/disco#info'&amp;gt; &lt;br /&gt;
    ... &lt;br /&gt;
    &amp;lt;feature var='jabber:x:data'/&amp;gt; &lt;br /&gt;
    ... &lt;br /&gt;
  &amp;lt;/query&amp;gt; &lt;br /&gt;
&amp;lt;/iq&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果实体支持数据表单，间接的通过在wrapper命名空间中包含数据表单，它不能为'jabber:x:data'命名空间通知支持，因为在wrapper协助中的支持是隐性的。&lt;br /&gt;
&lt;br /&gt;
==安全性考虑==&lt;br /&gt;
&lt;br /&gt;
没有安全问题与上述的规范和XMPP Core中相关章节的描述有关。&lt;br /&gt;
&lt;br /&gt;
==IANA考虑==&lt;br /&gt;
&lt;br /&gt;
这份文档与[http://www.iana.org/ Internet Assigned Numbers Authority (IANA)] [[XEP-0004#附录G:备注|13]]无关。&lt;br /&gt;
&lt;br /&gt;
==XMPP注册考虑==&lt;br /&gt;
&lt;br /&gt;
===协议命名空间===&lt;br /&gt;
&lt;br /&gt;
[http://xmpp.org/registrar/ XMPP Registrar] [[XEP-0004#附录G:备注|14]]在它注册的协议命名空间中包含'jabber:x:data'命名空间。&lt;br /&gt;
&lt;br /&gt;
===参数值===&lt;br /&gt;
&lt;br /&gt;
XMPP注册员维持着一个与'jabber:x:data'命名空间相关的注册参数值。具体定义在[http://xmpp.org/extensions/xep-0068.html Field Standardization for Data Forms] [[XEP-0004#附录G:备注|15]]。注册的地方是&amp;lt;http://xmpp.org/registrar/formtypes.html&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==XML 架构==&lt;br /&gt;
&lt;br /&gt;
该架构是描述性的，不是规范的。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;xs:schema &lt;br /&gt;
    xmlns:xs='http://www.w3.org/2001/XMLSchema' &lt;br /&gt;
    targetNamespace='jabber:x:data' &lt;br /&gt;
    xmlns='jabber:x:data' &lt;br /&gt;
    elementFormDefault='qualified'&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:annotation&amp;gt; &lt;br /&gt;
    &amp;lt;xs:documentation&amp;gt; &lt;br /&gt;
      The protocol documented by this schema is defined in &lt;br /&gt;
      XEP-0004: http://www.xmpp.org/extensions/xep-0004.html &lt;br /&gt;
    &amp;lt;/xs:documentation&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:annotation&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='x'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='instructions'  &lt;br /&gt;
                    minOccurs='0'  &lt;br /&gt;
                    maxOccurs='unbounded'  &lt;br /&gt;
                    type='xs:string'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='title' minOccurs='0' type='xs:string'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='field' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='reported' minOccurs='0' maxOccurs='1'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='type' use='required'&amp;gt; &lt;br /&gt;
        &amp;lt;xs:simpleType&amp;gt; &lt;br /&gt;
          &amp;lt;xs:restriction base='xs:NCName'&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='cancel'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='form'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='result'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='submit'/&amp;gt; &lt;br /&gt;
          &amp;lt;/xs:restriction&amp;gt; &lt;br /&gt;
        &amp;lt;/xs:simpleType&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:attribute&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='field'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='desc' minOccurs='0' type='xs:string'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element name='required' minOccurs='0' type='empty'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='value' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='option' minOccurs='0' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='label' type='xs:string' use='optional'/&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='type' use='optional'&amp;gt; &lt;br /&gt;
        &amp;lt;xs:simpleType&amp;gt; &lt;br /&gt;
          &amp;lt;xs:restriction base='xs:NCName'&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='boolean'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='fixed'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='hidden'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='jid-multi'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='jid-single'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='list-multi'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='list-single'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='text-multi'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='text-private'/&amp;gt; &lt;br /&gt;
            &amp;lt;xs:enumeration value='text-single'/&amp;gt; &lt;br /&gt;
          &amp;lt;/xs:restriction&amp;gt; &lt;br /&gt;
        &amp;lt;/xs:simpleType&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:attribute&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='var' type='xs:string' use='optional'/&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='option'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='value'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
      &amp;lt;xs:attribute name='label' type='xs:string' use='optional'/&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='value' type='xs:string'/&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='reported'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:annotation&amp;gt; &lt;br /&gt;
      &amp;lt;xs:documentation&amp;gt; &lt;br /&gt;
        When contained in a &amp;quot;reported&amp;quot; element, the &amp;quot;field&amp;quot; element &lt;br /&gt;
        SHOULD NOT contain a &amp;quot;value&amp;quot; child. &lt;br /&gt;
      &amp;lt;/xs:documentation&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:annotation&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='field' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:element name='item'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt; &lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt; &lt;br /&gt;
        &amp;lt;xs:element ref='field' maxOccurs='unbounded'/&amp;gt; &lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:element&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;xs:simpleType name='empty'&amp;gt; &lt;br /&gt;
    &amp;lt;xs:restriction base='xs:string'&amp;gt; &lt;br /&gt;
      &amp;lt;xs:enumeration value=''/&amp;gt; &lt;br /&gt;
    &amp;lt;/xs:restriction&amp;gt; &lt;br /&gt;
  &amp;lt;/xs:simpleType&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/xs:schema&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==最终状态的修改==&lt;br /&gt;
&lt;br /&gt;
当本规范已经是最终状态时，下面的实体协议已经做了修改：&lt;br /&gt;
&lt;br /&gt;
* 指定的'var'属性是所有字段类型所必须的，除了&amp;quot;fixed&amp;quot;, 因为'var'属性是可选的。&lt;br /&gt;
&lt;br /&gt;
* 通过服务搜索指定何时去通知支持。&lt;br /&gt;
  &lt;br /&gt;
* 移除引用&amp;lt;presence/&amp;gt;节。&lt;br /&gt;
&lt;br /&gt;
==草稿状态的修改==&lt;br /&gt;
&lt;br /&gt;
当本规范在草稿状态时，下面的实体协议已经做了修改：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;x/&amp;gt;元素可能直接包含在&amp;lt;message/&amp;gt;和&amp;lt;presence/&amp;gt;节中。&lt;br /&gt;
* &amp;lt;x/&amp;gt;元素可能包含一个&amp;lt;title/&amp;gt;子元素，在表单或结果中。&lt;br /&gt;
* &amp;lt;x/&amp;gt;元素必须拥有一个‘类型’属性。&lt;br /&gt;
* &amp;lt;field/&amp;gt;元素可能是类型='jid-single'。&lt;br /&gt;
* 结果可能以&amp;lt;item/&amp;gt;标签的方式返回报告。&lt;br /&gt;
* 结果可能包含一个&amp;lt;reported/&amp;gt;元素的结果集。&lt;br /&gt;
* &amp;lt;reported/&amp;gt;字段可能拥有一个‘类型’属性，提供如何与数据交互的提示（类型='jid-single'是最有用的）。&lt;br /&gt;
&lt;br /&gt;
==附录==&lt;br /&gt;
===附录A:文档信息===&lt;br /&gt;
&lt;br /&gt;
系列：[http://xmpp.org/extensions/ XEP]&lt;br /&gt;
&lt;br /&gt;
序号：0004&lt;br /&gt;
&lt;br /&gt;
发布者：[http://xmpp.org/xsf/ XMPP标准基金会]&lt;br /&gt;
&lt;br /&gt;
状态：[http://www.xmpp.org/extensions/xep-0001.html#states-Final 终结版]&lt;br /&gt;
&lt;br /&gt;
类型：[http://www.xmpp.org/extensions/xep-0001.html#types-Standards%20Track 标准跟踪]&lt;br /&gt;
&lt;br /&gt;
版本：2.9&lt;br /&gt;
&lt;br /&gt;
最后更新：2007-07-13&lt;br /&gt;
&lt;br /&gt;
批准机构：[http://xmpp.org/council/ XMPP理事会]&lt;br /&gt;
&lt;br /&gt;
依赖标准：[[RFC3920|XMPP Core]]&lt;br /&gt;
&lt;br /&gt;
替代标准：无&lt;br /&gt;
&lt;br /&gt;
被替代标准：无&lt;br /&gt;
&lt;br /&gt;
缩略名：x-data&lt;br /&gt;
&lt;br /&gt;
XML架构:&amp;lt;http://www.xmpp.org/schemas/x-data.xsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原文控制： [http://svn.xmpp.org:18080/browse/XMPP/trunk/extensions/xep-0004.xml HTML] [http://svn.xmpp.org:18080//changelog/~rss/XMPP/trunk/extensions/xep-0004.xml/rss.xml RSS]&lt;br /&gt;
&lt;br /&gt;
本文的其它格式： [http://xmpp.org/extensions/xep-0004.xml XML] [http://xmpp.org/extensions/xep-0004.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===附录B:作者信息===&lt;br /&gt;
&lt;br /&gt;
'''Ryan Eatmon'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:reatmon@jabber.org reatmon@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: reatmon@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Joe Hildebrand'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:jhildebr@cisco.com jhildebr@cisco.com]&lt;br /&gt;
&lt;br /&gt;
JabberID: hildjj@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jeremie Miller'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:jer@jabber.org jer@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: jer@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Thomas Muldowney'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:temas@jabber.org temas@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: temas@jabber.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Peter Saint-Andre'''&lt;br /&gt;
&lt;br /&gt;
Email: [mailto:stpeter@jabber.org stpeter@jabber.org]&lt;br /&gt;
&lt;br /&gt;
JabberID: stpeter@jabber.org&lt;br /&gt;
&lt;br /&gt;
URI: https://stpeter.im/&lt;br /&gt;
&lt;br /&gt;
{{Template:XEP附录CDEF}}&lt;br /&gt;
&lt;br /&gt;
===附录G:备注===&lt;br /&gt;
#XEP-0077: In-Band Registration &amp;lt;http://xmpp.org/extensions/xep-0077.html&amp;gt;.&lt;br /&gt;
#XEP-0055: Jabber Search &amp;lt;http://xmpp.org/extensions/xep-0055.html&amp;gt;.&lt;br /&gt;
#XEP-0045: Multi-User Chat &amp;lt;http://xmpp.org/extensions/xep-0045.html&amp;gt;.&lt;br /&gt;
#XEP-0030: Service Discovery &amp;lt;http://xmpp.org/extensions/xep-0030.html&amp;gt;.&lt;br /&gt;
#XForms 1.0 &amp;lt;http://www.w3.org/TR/xforms&amp;gt;.&lt;br /&gt;
#XHTML 1.0 &amp;lt;http://www.w3.org/TR/xhtml1&amp;gt;.&lt;br /&gt;
#Modularization of XHTML &amp;lt;http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218/&amp;gt;.&lt;br /&gt;
#RFC 3920: Extensible Messaging and Presence Protocol (XMPP): Core &amp;lt;http://tools.ietf.org/html/rfc3920&amp;gt;.&lt;br /&gt;
#XML Schema Part 2: Datatypes &amp;lt;http://www.w3.org/TR/xmlschema-2/&amp;gt;.&lt;br /&gt;
#In accordance with Section 3.2.2.1 of XML Schema Part 2: Datatypes, the allowable lexical representations for the xs:boolean datatype are the strings &amp;quot;0&amp;quot; and &amp;quot;false&amp;quot; for the concept 'false' and the strings &amp;quot;1&amp;quot; and &amp;quot;true&amp;quot; for the concept 'true'; implementations MUST support both styles of lexical representation.&lt;br /&gt;
#XEP-0086: Error Condition Mappings &amp;lt;http://xmpp.org/extensions/xep-0086.html&amp;gt;.&lt;br /&gt;
#XEP-0050: Ad-Hoc Commands &amp;lt;http://xmpp.org/extensions/xep-0050.html&amp;gt;.&lt;br /&gt;
#The Internet Assigned Numbers Authority (IANA) is the central coordinator for the assignment of unique parameter values for Internet protocols, such as port numbers and URI schemes. For further information, see &amp;lt;http://www.iana.org/&amp;gt;.&lt;br /&gt;
#The XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see &amp;lt;http://xmpp.org/registrar/&amp;gt;.&lt;br /&gt;
#XEP-0068: Field Data Standardization for Data Forms &amp;lt;http://xmpp.org/extensions/xep-0068.html&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===附录H:修订历史===&lt;br /&gt;
&lt;br /&gt;
注意: &lt;br /&gt;
&lt;br /&gt;
'''版本 2.9 (2007-08-13)'''&lt;br /&gt;
&lt;br /&gt;
Clarified the definition and handling of the list-multi and list-single field types; specified that hidden field values should not be modified unless such behavior is defined for the using protocol; specified that a submission should include all fields provided in the empty form and may include additional fields, but that additional fields must be ignored if not understood by the form-processing entity.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 2.8 (2007-05-21)'''&lt;br /&gt;
&lt;br /&gt;
Removed mentions of presence stanzas; added section on discovering support; added section on substantive changes in Final state.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
'''版本 2.7 (2006-01-25)'''&lt;br /&gt;
&lt;br /&gt;
Incorporated errata: (1) clarified rules regarding inclusion of option and value elements depending on field type; (2) clarified handling of default values; (3) added value elements to list-multi field in Example 2; (4) harmonized spelling of form-processing entity and form-submitting entity.&lt;br /&gt;
&lt;br /&gt;
(psa)&lt;br /&gt;
&lt;br /&gt;
Version 2.6 (2004-10-13)&lt;br /&gt;
Incorporated errata: (1) corrected syntax of &amp;lt;reported/&amp;gt; element (&amp;lt;field/&amp;gt; element should not contain a &amp;lt;value/&amp;gt; child); (2) corrected Example 8.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.5 (2004-05-07)&lt;br /&gt;
Clarified terminology regarding form-processing entities and form-submitting entities; corrected several small errors in the schema.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.4 (2004-05-04)&lt;br /&gt;
Per discussion by the authors and Jabber Council, specified that the 'var' attribute is required for all field types except &amp;quot;fixed&amp;quot;, for which the 'var' attribute is optional.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.3 (2004-03-31)&lt;br /&gt;
Formalization and further editorial revisions.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.2 (2004-01-22)&lt;br /&gt;
Editorial revisions.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.1 (2003-02-16)&lt;br /&gt;
Added schema.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 2.0 (2002-12-09)&lt;br /&gt;
Per a vote of the Jabber Council, changed status to Final.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 1.1 (2002-10-15)&lt;br /&gt;
Call for Experience changes (see Changes in Draft State section). This version voted to Final on 2002-12-09.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 1.0 (2002-04-24)&lt;br /&gt;
Per a vote of the Jabber Council, changed status to Draft.&lt;br /&gt;
&lt;br /&gt;
(psa) &lt;br /&gt;
Version 0.6 (2002-03-15)&lt;br /&gt;
Protocol tweaks based on Standards list discussion.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.5 (2002-02-06)&lt;br /&gt;
Protocol tweaks based on implementation and discussion.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.4 (2001-11-16)&lt;br /&gt;
Major redesign to attempt to clarify the scope of this document and limit what it is trying to solve.&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.3 (2001-07-23)&lt;br /&gt;
Protocol update&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.2 (2001-06-29)&lt;br /&gt;
Protocol update and DocBook version&lt;br /&gt;
&lt;br /&gt;
(rwe) &lt;br /&gt;
Version 0.1 (2001-01-25)&lt;br /&gt;
Initial release&lt;br /&gt;
&lt;br /&gt;
(rwe)&lt;br /&gt;
[http://essaywritingservices.org/index.php essay writing service]&lt;/div&gt;</summary>
		<author><name>Zoey1990</name></author>	</entry>

	</feed>