XEP-0054

来自Jabber/XMPP中文翻译计划
(版本间的差异)
跳转到: 导航, 搜索
(URI查询类型)
 
(未显示1个用户的17个中间版本)
第10行: 第10行:
 
作者: Peter Saint-Andre
 
作者: Peter Saint-Andre
  
版权: © 1999 - 2010 XMPP标准化基金会(XSF). 参见[[XEP-0054#附录C:法律通告|法律通告]].
+
版权: ? 1999 - 2010 XMPP标准化基金会(XSF). 参见[[XEP-0054#附录C:法律通告|法律通告]].
  
 
状态: 活跃的
 
状态: 活跃的
第40行: 第40行:
 
===检索用户的电子身份===
 
===检索用户的电子身份===
  
用户可能会获取他(她)自己的vCard电子身份,通过发送以下XML表单给他(她)自己的JID(不能(MUST NOT)包含to属性):
+
用户通过发送不含'to'地址并且包含以'vcard-temp'命名空间为限制的<vCard/>子元素的IQ-get节来检索他(她)自己的vCard电子身份。
  
'''例子1. vCard获取请求'''
+
'''例子1. vCard检索请求'''
  
 
<source lang="xml">
 
<source lang="xml">
第52行: 第52行:
 
</source>
 
</source>
  
服务器应该返回vCard给用户
+
如果用户拥有vCard,则服务器必须(MUST)返回IQ-result。
  
 
'''例子2. 服务器返回vCard'''
 
'''例子2. 服务器返回vCard'''
第110行: 第110行:
 
</source>
 
</source>
  
如果不存在 vCard , 服务必须 MUST 返回一个节错误 (它应该 SHOULD 是 <item-not-found/>) 或一个包含空的 <vCard/> 元素的 IQ-result.
+
如果不存在 vCard , 服务必须 MUST 返回一个节错误 (它应该 (SHOULD) 是 <item-not-found/>) 或一个包含空的 <vCard/> 元素的 IQ-result.
  
 
例子 3. 没有vCard(条目没找到)
 
例子 3. 没有vCard(条目没找到)
第137行: 第137行:
 
===更新用户的vCard===
 
===更新用户的vCard===
  
用户可能发布或者更新他(她)的vCard,通过发送类型为set,不带to地址的IQ节点,并且符合前个用例的格式。
+
用户通过发送类型为'set',不带'to'地址的IQ节来发布或者更新他(她)的vCard,,并且符合前个用例的格式。
  
 
'''例子5. vCard更新请求'''
 
'''例子5. vCard更新请求'''
第192行: 第192行:
 
</source>
 
</source>
  
然后服务器返回IQ结果(或者IQ错误)
+
然后服务器返回IQ-result(或者IQ-error)
  
 
'''例子6. 服务器返回成功'''
 
'''例子6. 服务器返回成功'''
第202行: 第202行:
 
</source>
 
</source>
  
注意,上述的IQ-Set包含了唯一变化的元素(<DESC/>元素)。目前没有可以只更新一部分vCard的方法,为了更新任何一部分的vCard,必须发送完整的vCard到服务器。
+
注意,上述的IQ-Set只有一个元素发生了变化(<DESC/>元素)。目前没有可以局部更新vCard的方法,为了更新任何一部分的vCard,必须发送完整的vCard到服务器。
  
 
如果用户企图执行一个关于其他用户的vCard的IQ set(即,把to地址设为不是发送者的纯JID),那么服务必须(MUST)返回一个节错误,应该为 <forbidden/> 或 <not-allowed/>.
 
如果用户企图执行一个关于其他用户的vCard的IQ set(即,把to地址设为不是发送者的纯JID),那么服务必须(MUST)返回一个节错误,应该为 <forbidden/> 或 <not-allowed/>.
第302行: 第302行:
 
</iq>
 
</iq>
 
</source>
 
</source>
 +
 +
这个信息也可以通过 [http://xmpp.org/extensions/xep-0115.html 实体能力] [[XEP-0054#附录G:备注|7]] 为那些共享出席信息的实体封装.
  
 
==安全事项==
 
==安全事项==
第309行: 第311行:
 
==IANA事项==
 
==IANA事项==
  
本文档不需要IANA事项。
+
本文档与[http://www.iana.org/ 互联网编号分配授权机构] [[XEP-0054#附录G:备注|8]]无关。
  
 
==XMPP注册事项==
 
==XMPP注册事项==
第348行: 第350行:
 
</source>
 
</source>
  
==实现注意==
+
==实现注意事项==
  
 
注意以下事项:
 
注意以下事项:
第354行: 第356行:
 
* 这个被包含的元素的正确大小写是<vCard/>(XML元素名称是大小写敏感的)。
 
* 这个被包含的元素的正确大小写是<vCard/>(XML元素名称是大小写敏感的)。
  
* 所有在<vCard/>中的元素必须(MUST)是在CAPS中(即使和draft-dawson-vcard-xml-dtd-01中的不一致)
+
* 所有在<vCard/>中的元素必须(MUST)是大写的(即使和draft-dawson-vcard-xml-dtd-01中的不一致)
  
 
* 国家的简称是<CTRY/>元素,不是<COUNTRY/>元素(即使和draft-dawson-vcard-xml-dtd-01不一致)。
 
* 国家的简称是<CTRY/>元素,不是<COUNTRY/>元素(即使和draft-dawson-vcard-xml-dtd-01不一致)。
  
* 电话号码必须(MUST)包含<NUMBER>元素,而不包含在CDATA中的<TEL/>元素
+
* 电话号码必须(MUST)包含在<NUMBER>元素里,而不是包含在CDATA中的<TEL/>元素里
  
 
* 如果<TEL/>元素没有包含电话号码,那么空的<NUMBER/>也必须被包含。
 
* 如果<TEL/>元素没有包含电话号码,那么空的<NUMBER/>也必须被包含。
  
* Email地址必须(MUST)包含在<USERID>元素,而不是CDATA中的<EMAIL/>元素
+
* Email地址必须(MUST)包含在<USERID>元素里,而不是CDATA中的<EMAIL/>元素
  
* 一些Jabber实现会添加version属性到<vCard/>元素,属性值为2.0或者3.0。DTD是不正确的,draft-dawson-vcard-xml-dtd-01中的例子明确的展示了通过version属性表示版本信息。而不是DTD定义的<VERSION/>元素。然而,为了符合draft-dawson-vcard-xml-dtd-01,版本信息应该被设置为了3.0,不是2.0。
+
* 一些Jabber实现会添加version属性到<vCard/>元素,属性值为2.0或者3.0。DTD是不正确的,draft-dawson-vcard-xml-dtd-01中的例子明确的指出通过version属性表示版本信息,而不是DTD中定义的<VERSION/>元素。然而,为了符合draft-dawson-vcard-xml-dtd-01,版本信息应该被设置为3.0,不是2.0。
  
 
==DTD==
 
==DTD==
  
下面的DTD修改了draft-dawson-vcard-xml-dtd-01中的有关version的部分。除此外,其他唯一修改的地方就是添加JABBERID和DESC元素。
+
下面的DTD包含了轻微修改过的draft-dawson-vcard-xml-dtd-01版本。除此外,其他唯一修改的地方就是添加JABBERID和DESC元素。
  
 
<source lang="xml">
 
<source lang="xml">
第688行: 第690行:
 
</source>
 
</source>
  
==备注==
+
==附录==
 +
===附录A:文档信息===
  
# RFC 2426: vCard MIME Directory Profile <http://tools.ietf.org/html/rfc2426>.
+
Source Control: HTML  RSS
# This document is archived at <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-01.txt>.
+
This document in other formats: XML  PDF
# This document is archived at <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-02.txt>.
+
# This document is archived at <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-03.txt>.
+
# RFC 3920: Extensible Messaging and Presence Protocol (XMPP): Core <http://tools.ietf.org/html/rfc3920>.
+
# 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 <http://www.iana.org/>.
+
# 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 <http://www.xmpp.org/registrar/>.
+
# XEP-0147: XMPP URI Query Components <http://www.xmpp.org/extensions/xep-0147.html>.
+
  
==修订历史==
+
系列:[http://xmpp.org/extensions/ XEP]
  
Version 1.1 (2003-03-26)
+
序号:0054
  
Clarified certain historical inaccuracies and added links to archived versions of Frank Dawson's Internet-Drafts. (psa)
+
发布者:[http://xmpp.org/xsf/ XMPP标准基金会]
  
Version 1.0 (2003-01-09)
+
状态:[http://xmpp.org/extensions/xep-0001.html#states-Active 活跃的]
  
Updated status to Active per vote of the Jabber Council. (psa)
+
类型:[http://xmpp.org/extensions/xep-0001.html#types-Historical 历史的]
  
Version 0.2 (2002-11-06)
+
版本:1.2
  
Many small fixes; added implementation notes. (psa)
+
最后更新:2008-07-16
  
Version 0.1 (2002-10-31)
+
批准机构:[http://xmpp.org/council/ XMPP理事会]
  
Initial version. (psa)
+
依赖标准: XMPP Core
  
结束
+
替代标准:无
  
'''文档信息'''
+
被替代标准:无
  
系列: [[XMPP扩展|XEP]]
+
缩略名:vcard-temp
  
编号:0054
+
原文控制: [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]
  
发布者:[[XMPP标准基金会]]
+
本文的其它格式: [http://xmpp.org/extensions/xep-0054.xml XML] [http://xmpp.org/extensions/xep-0054.pdf PDF]
  
状态:激活
+
===附录B:作者信息===
  
类型: 历史性的
+
'''Peter Saint-Andre'''
  
版本:1.1
+
Email: [mailto:stpeter@jabber.org stpeter@jabber.org]
  
最后更新日期:2003-03-26\\
+
JabberID: stpeter@jabber.org
  
批准机构:[[XMPP理事会]]
+
URI: https://stpeter.im/
  
依赖于:[[RFC3920|XMPP Core]]
+
{{Template:XEP附录CDEF}}
  
上文:
+
===附录G:备注===
  
下文:
+
# RFC 2426: vCard MIME Directory Profile <http://tools.ietf.org/html/rfc2426>.
 +
# 本文被归档于 <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-01.txt>.
 +
# 本文被归档于 <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-02.txt>.
 +
# 本文被归档于 <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-03.txt>.
 +
# RFC 3920: 可扩展的消息和出席信息协议 (XMPP): Core <http://tools.ietf.org/html/rfc3920>.
 +
# XEP-0030: Service Discovery <http://xmpp.org/extensions/xep-0030.html>.
 +
# XEP-0115: Entity Capabilities <http://xmpp.org/extensions/xep-0115.html>.
 +
# 互联网编号分配机构(IANA) 是用于互联网协议的唯一性参数值分配的核心协调者, 例如号码和URI计划. 更多信息, 见 <http://www.iana.org/>.
 +
# XMPP登记员XMPP Registrar 维护着一个保留的协议名字空间以及用于由XMPP标准基金会批准的XMPP扩展协议的上下文参数的注册项的列表. 更多信息, 见 <http://xmpp.org/registrar/>.
 +
# XEP-0147: XMPP URI Query Components <http://xmpp.org/extensions/xep-0147.html>.
  
简称:vcard-temp
+
===附录H:修订历史===
  
Wiki页: <http://wiki.jabber.org/index.php/vcard-temp (XEP-0054)>
+
注意: 本协议的旧版本可能在 http://xmpp.org/extensions/attic/ 还可用
  
'''作者信息'''
+
'''版本 1.2 (2008-07-16)'''
  
'''Peter Saint-Andre'''
+
更多完全定义的错误情景; 增加了确定支持的章节.
  
:JID: [xmpp:stpeter@jabber.org stpeter@jabber.org]
+
(psa)
  
:URI: <https://stpeter.im/>
+
'''版本 1.1 (2003-03-26)'''
  
 +
澄清了特定历史的不准确并增加了连接到 Frank Dawson's 的互联网草案的归档版本.
  
'''法律通告'''
+
(psa)
  
'''版权'''
+
'''版本 1.0 (2003-01-09)'''
  
XMPP扩展协议的版权(1999-2008)归XMPP标准化基金会(XSF)所有.
+
通过Jabber理事会投票更新状态为活跃.
  
'''权限'''
+
(psa)
  
特此授权,费用全免,对任何获得本协议副本的人,对使用本协议没有限制,包括不限制在软件程序中实现本协议,不限制在网络服务中布署本协议,不限制拷贝,修改,合并,发行,翻译,分发,转授,或销售本协议的副本,被允许使用本协议做了以上工作的人士,应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中.除非单独的许可,被重新分发的修改工作,不得含有关于作者,标题,编号,或出版者的规格的误导性资料,并不得宣称修改工作是由本文的作者,作者所属的任何组织或项目,或XMPP标准基金会签注。
+
'''版本 0.2 (2002-11-06)'''
  
'''免责声明'''
+
很多小修改; 增加了实现注意事项.
  
注意:本协议是提供的“原样”的基础,没有担保或任何形式的条件,明示或暗示,包括,但不限于任何担保或关于名称,非侵权性,适销性或适合作某一特定目的的条件.在任何情况XMPP标准基金会或作者不对此协议承担任何责任索赔,损害赔偿,或其他责任,无论是在一项行动的合同,侵权,或否则,所产生的,运出,或在他涉嫌与规格或执行,部署或以其它方式使用本协议. ##
+
(psa)
  
'''责任限制'''
+
'''版本 0.1 (2002-10-31)'''
  
在任何情况下以及没有任何法律规定时,不论是侵权行为(包括疏忽),合同或其它方面,除非根据适用法律的要求(如蓄意和有严重疏忽行为)或同意以书面形式,XMPP标准基金会或任何作者不对本协议承担所造成的损失,包括任何直接,间接,特殊,偶发,或相应的损害赔偿的任何字符利用所产生的或不能使用的规格(包括但不限于善意的损失,停止作业,电脑失灵或故障,或任何和所有其他商业损害或损失) ,即使XMPP标准基金会或作者已被告知此类损害的可能性。
+
初始版本.
  
'''知识产权的一致性'''
+
(psa)
  
XMPP扩展协议完全遵守XSF的知识产权策略(可在<http://www.xmpp.org/extensions/ipr-policy.shtml>找到副本或写信给XSF, P.O. Box 1641, Denver, CO 80201 USA).
+
----
 
+
结束
'''讨论地点'''
+
 
+
首选的讨论的地方是标准讨论邮件列表: <http://mail.jabber.org/mailman/listinfo/standards>.
+
 
+
勘误表发送到[mailto:editor@xmpp.org editor@xmpp.org]
+
 
+
'''XMPP 相关信息'''
+
 
+
XMPP 是由XSF(XMPP标准化基金会)按互联网标准程序贡献的,和 IETF的RFC 2026兼容的规范,包括 XMPP核心(RFC 3920)和 XMPP IM(RFC 3921).在本文中定义的任何协议,都是在互联网标准程序之外开发的,是扩展XMPP,而不是改变、发展和修改 XMPP本身。
+
 
+
'''一致性术语'''
+
 
+
本文中以下关键词的含义如 RFC 2119 所述: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".
+

2012年9月29日 (六) 08:17的最后版本


本文的英文原文来自XEP-0054

XEP-0054:电子名片

摘要: 本文档提供了目前在Jabber社区中使用的vCard-XML格式的典型文档.

作者: Peter Saint-Andre

版权: ? 1999 - 2010 XMPP标准化基金会(XSF). 参见法律通告.

状态: 活跃的

类型: 历史的

版本: 1.2

最后更新日期: 2008-07-16

注意: 这个历史性的标准提供了目前在Jabber/XMPP社区中使用的一个协议.本文不是XMPP标准化基金会标准跟踪过程中的标准跟踪协议,无论如何,将来它可能被转化为标准跟踪,也可能被一个更新的协议取代.

目录

绪论

这份vCard-XML格式的说明文档在Jabber社区内正被使用。未来的说明文档将会推荐一个标准协议来取代这份文档。

对于用户来说,基础的功能是存储和获取用户的电子身份,该信息是用XML表示的,数据的存储取决于所有现存的Jabber服务器的实现。这可以通过发送类型为“set”(存储)或者“get”(获取)的<iq/>到Jabber服务器来完成,该<iq/>节点包含了<vCard/>子节点并用“vcard-temp”命名空间限定,<vCard/>包含实际的vCard-XML格式的元素,这在vCard-XML DTD中定义。然后其他用户就可以查看某人的vcard信息了。

历史

vCard是一种现存的、广泛使用的,用户个人信息存储的标准,有点像是电子名片。vCard的格式在RFC 2426 1中定义。

在1998年和1999年,Frank Dawson提交了4个修订的Internet草案描述了用XML表示的vCard格式。起初,当Jabberd开源项目在寻找一种存储个人信息的方法时,jabberd开发者最近一次修订版本是draft-dawson-vcard-xml-dtd-01 2。他也在1998年11月15日提交了第二次修订版 3 和在1999年6月22提交了第三次修订版 4

不幸的是,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社区实现。

用例

检索用户的电子身份

用户通过发送不含'to'地址并且包含以'vcard-temp'命名空间为限制的<vCard/>子元素的IQ-get节来检索他(她)自己的vCard电子身份。

例子1. vCard检索请求

<iq from='stpeter@jabber.org/roundabout'
    id='v1'
    type='get'>
  <vCard xmlns='vcard-temp'/>
</iq>

如果用户拥有vCard,则服务器必须(MUST)返回IQ-result。

例子2. 服务器返回vCard

<iq id='v1'
    to='stpeter@jabber.org/roundabout'
    type='result'>
  <vCard xmlns='vcard-temp'>
    <FN>Peter Saint-Andre</FN>
    <N>
      <FAMILY>Saint-Andre</FAMILY>
      <GIVEN>Peter</GIVEN>
      <MIDDLE/>
    </N>
    <NICKNAME>stpeter</NICKNAME>
    <URL>http://www.xmpp.org/xsf/people/stpeter.shtml</URL>
    <BDAY>1966-08-06</BDAY>
    <ORG>
      <ORGNAME>XMPP Standards Foundation</ORGNAME>
      <ORGUNIT/>
    </ORG>
    <TITLE>Executive Director</TITLE>
    <ROLE>Patron Saint</ROLE>
    <TEL><WORK/><VOICE/><NUMBER>303-308-3282</NUMBER></TEL>
    <TEL><WORK/><FAX/><NUMBER/></TEL>
    <TEL><WORK/><MSG/><NUMBER/></TEL>
    <ADR>
      <WORK/>
      <EXTADD>Suite 600</EXTADD>
      <STREET>1899 Wynkoop Street</STREET>
      <LOCALITY>Denver</LOCALITY>
      <REGION>CO</REGION>
      <PCODE>80202</PCODE>
      <CTRY>USA</CTRY>
    </ADR>
    <TEL><HOME/><VOICE/><NUMBER>303-555-1212</NUMBER></TEL>
    <TEL><HOME/><FAX/><NUMBER/></TEL>
    <TEL><HOME/><MSG/><NUMBER/></TEL>
    <ADR>
      <HOME/>
      <EXTADD/>
      <STREET/>
      <LOCALITY>Denver</LOCALITY>
      <REGION>CO</REGION>
      <PCODE>80209</PCODE>
      <CTRY>USA</CTRY>
    </ADR>
    <EMAIL><INTERNET/><PREF/><USERID>stpeter@jabber.org</USERID></EMAIL>
    <JABBERID>stpeter@jabber.org</JABBERID>
    <DESC>
      More information about me is located on my 
      personal website: http://www.saint-andre.com/
    </DESC>
  </vCard>
</iq>

如果不存在 vCard , 服务必须 MUST 返回一个节错误 (它应该 (SHOULD) 是 <item-not-found/>) 或一个包含空的 <vCard/> 元素的 IQ-result.

例子 3. 没有vCard(条目没找到)

<iq id='v1'
    to='stpeter@jabber.org/roundabout'
    type='error'>
  <vCard xmlns='vcard-temp'/>
  <error type='cancel'>
    <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

例子 4. 没有vCard(空元素)

<iq id='v1'
    to='stpeter@jabber.org/roundabout'
    type='result'>
  <vCard xmlns='vcard-temp'/>
</iq>

更新用户的vCard

用户通过发送类型为'set',不带'to'地址的IQ节来发布或者更新他(她)的vCard,,并且符合前个用例的格式。

例子5. vCard更新请求

<iq id='v2' type='set'>
  <vCard xmlns='vcard-temp'>
    <FN>Peter Saint-Andre</FN>
    <N>
      <FAMILY>Saint-Andre</FAMILY>
      <GIVEN>Peter</GIVEN>
      <MIDDLE/>
    </N>
    <NICKNAME>stpeter</NICKNAME>
    <URL>http://www.xmpp.org/xsf/people/stpeter.shtml</URL>
    <BDAY>1966-08-06</BDAY>
    <ORG>
      <ORGNAME>XMPP Standards Foundation</ORGNAME>
      <ORGUNIT/>
    </ORG>
    <TITLE>Executive Director</TITLE>
    <ROLE>Patron Saint</ROLE>
    <TEL><WORK/><VOICE/><NUMBER>303-308-3282</NUMBER></TEL>
    <TEL><WORK/><FAX/><NUMBER/></TEL>
    <TEL><WORK/><MSG/><NUMBER/></TEL>
    <ADR>
      <WORK/>
      <EXTADD>Suite 600</EXTADD>
      <STREET>1899 Wynkoop Street</STREET>
      <LOCALITY>Denver</LOCALITY>
      <REGION>CO</REGION>
      <PCODE>80202</PCODE>
      <CTRY>USA</CTRY>
    </ADR>
    <TEL><HOME/><VOICE/><NUMBER>303-555-1212</NUMBER></TEL>
    <TEL><HOME/><FAX/><NUMBER/></TEL>
    <TEL><HOME/><MSG/><NUMBER/></TEL>
    <ADR>
      <HOME/>
      <EXTADD/>
      <STREET/>
      <LOCALITY>Denver</LOCALITY>
      <REGION>CO</REGION>
      <PCODE>80209</PCODE>
      <CTRY>USA</CTRY>
    </ADR>
    <EMAIL><INTERNET/><PREF/><USERID>stpeter@jabber.org</USERID></EMAIL>
    <JABBERID>stpeter@jabber.org</JABBERID>
    <DESC>
      Check out my blog at https://stpeter.im/
    </DESC>
  </vCard>
</iq>

然后服务器返回IQ-result(或者IQ-error)

例子6. 服务器返回成功

<iq id='v2'
    to='stpeter@jabber.org/roundabout'
    type='result'/>

注意,上述的IQ-Set只有一个元素发生了变化(<DESC/>元素)。目前没有可以局部更新vCard的方法,为了更新任何一部分的vCard,必须发送完整的vCard到服务器。

如果用户企图执行一个关于其他用户的vCard的IQ set(即,把to地址设为不是发送者的纯JID),那么服务必须(MUST)返回一个节错误,应该为 <forbidden/> 或 <not-allowed/>.

例子 7. 实体试图修改别人的vCard

<iq id='v2'
    to='stpeter@jabber.org/roundabout'
    type='error'>
  <error type='auth'>
    <forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

查看另一个用户的vCard

用户可能要查看另一个用户的vCard,通过发送类型为get的IQ到另一个用户的纯JID

例子8. 请求另一个用户的vCard

<iq from='stpeter@jabber.org/roundabout'
    id='v3'
    to='jer@jabber.org'
    type='get'>
  <vCard xmlns='vcard-temp'/>
</iq>

根据XMPP Core 5,一个兼容的服务器必须(MUST)代表(被请求者)响应请求并且不将IQ转发到被请求者的已连接的资源。

例子9. 接收另一个用户的vCard

<iq from='jer@jabber.org' 
    to='stpeter@jabber.org/roundabout' 
    type='result'
    id='v3'>
  <vCard xmlns='vcard-temp'>
    <FN>JeremieMiller</FN>
    <N>
      <GIVEN>Jeremie</GIVEN>
      <FAMILY>Miller</FAMILY>
      <MIDDLE/>
    </N>
    <NICKNAME>jer</NICKNAME>
    <EMAIL><INTERNET/><PREF/><USERID>jeremie@jabber.org</USERID></EMAIL>
    <JABBERID>jer@jabber.org</JABBERID>
  </vCard>
</iq>

如果不存在 vCard 或该用户不存在, 服务必须 MUST 返回一个节错误, 它应该 SHOULD 是 <service-unavailable/> 或 <item-not-found/>.

例子 10. 无vCard

<iq id='v3'
    to='stpeter@jabber.org/roundabout'
    type='error'>
  <vCard xmlns='vcard-temp'/>
  <error type='cancel'>
    <service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

注意:vCard的使用不受限于自然人用户帐号。比如,XMPP服务器可以有自己的vCard,该vCard可以被服务器主机上的组织,物理位置,相关的联系地址定义。

确定支持

如果一个实体支持 vcard-temp 协议, 它必须 MUST 报告这一点,通过在对服务发现 6信息请求disco#info的回应中包含一个服务发现特性 "vcard-temp" (关于发行一个或多个名字空间,参见协议名字空间):

例子 11. 服务发现信息请求

<iq type='get'
    from='juliet@capulet.lit/balcony'
    to='capulet.lit'
    id='disco1'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

例子 12. 服务发现信息应答

<iq type='result'
    from='capulet.lit'
    to='juliet@capulet.lit/balcony'
    id='disco1'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    ...
    <feature var='vcard-temp'/>
    ...
  </query>
</iq>

这个信息也可以通过 实体能力 7 为那些共享出席信息的实体封装.

安全事项

发送到Jabber服务器的vCard信息是在整个世界范围内可读的;因此,用户应该谨慎地决定更新哪些信息。(比如,街道地址,个人电话,email地址)。

IANA事项

本文档与互联网编号分配授权机构 8无关。

XMPP注册事项

协议名字空间

XMPP Registrar 9在它的协议名字空间注册项中包含了'vcard-temp'(参考<http://www.xmpp.org/registrar/namespaces.html>)。

URI查询类型

作为由XMPP URI Query Components 10授权的机构,XMPP登记处维护着一个用于 XMPP URIs 的查询和键-值对的注册项(见<http://www.xmpp.org/registrar/querytypes.html>)。

vCard的查询类型是作为vCard相关的动作被注册的。

例子13. vCard 动作:IRI/URI

xmpp:romeo@montague.net?vcard

例子14. vCard动作:结果节

<iq to='romeo@montague.net' type='get'>
  <vCard xmlns='vcard-temp'/>
</iq>

下面的提交注册了vCard查询类型。

<querytype>
  <name>vcard</name>
  <proto>vcard-temp</proto>
  <desc>enables retrieval of an entity's vCard data</desc>
  <doc>XEP-0054</doc>
</querytype>

实现注意事项

注意以下事项:

  • 这个被包含的元素的正确大小写是<vCard/>(XML元素名称是大小写敏感的)。
  • 所有在<vCard/>中的元素必须(MUST)是大写的(即使和draft-dawson-vcard-xml-dtd-01中的不一致)
  • 国家的简称是<CTRY/>元素,不是<COUNTRY/>元素(即使和draft-dawson-vcard-xml-dtd-01不一致)。
  • 电话号码必须(MUST)包含在<NUMBER>元素里,而不是包含在CDATA中的<TEL/>元素里
  • 如果<TEL/>元素没有包含电话号码,那么空的<NUMBER/>也必须被包含。
  • Email地址必须(MUST)包含在<USERID>元素里,而不是CDATA中的<EMAIL/>元素
  • 一些Jabber实现会添加version属性到<vCard/>元素,属性值为2.0或者3.0。DTD是不正确的,draft-dawson-vcard-xml-dtd-01中的例子明确的指出通过version属性表示版本信息,而不是DTD中定义的<VERSION/>元素。然而,为了符合draft-dawson-vcard-xml-dtd-01,版本信息应该被设置为3.0,不是2.0。

DTD

下面的DTD包含了轻微修改过的draft-dawson-vcard-xml-dtd-01版本。除此外,其他唯一修改的地方就是添加JABBERID和DESC元素。

<?xml version="1.0" encoding="UTF-8"?>
 
<!--
Copyright (C) The Internet Society (2000). All Rights Reserved.
 
This document and translations of it may be copied and
furnished to others, and derivative works that comment
on or otherwise explain it or assist in its implmentation 
may be prepared, copied, published and distributed, in whole
or in part, without restriction of any kind, provided that
the above copyright notice and this paragraph are included
on all such copies and derivative works.
 
However, this document itself may not be modified in any
way, such as by removing the copyright notice or references
to the Internet Society or other Internet organizations,
except as needed for the purpose of developing Internet
standards in which case the procedures for copyrights
defined in the Internet Standards process MUST be followed,
or as required to translate it into languages other than English.
 
The limited permissions granted above are perpetual and will
not be revoked by the Internet Society or its successors or
assigns.
 
This document and the information contained herein is provided
on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE
USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR
ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.
-->
 
<!-- ==== -->
 
<!-- NOTE: the following root element is not used in the
           modified vcard-temp DTD published by the Jabber 
           project (now XMPP Standards Foundation) and is
           included here only for historical purposes; 
           implementations that comply with vcard-temp must
           specify the root element as vCard, not xCard. -->
 
<!-- Root element and container for one
  or more vCard objects -->
<!ELEMENT xCard (vCard)+>
 
<!-- Individual vCard container -->
<!ELEMENT vCard (
  (VERSION, FN, N),
  (NICKNAME?,
  PHOTO?, 
  BDAY?, 
  ADR?, 
  LABEL?, 
  TEL?, 
  EMAIL?,
  JABBERID?,
  MAILER?, 
  TZ?, 
  GEO?, 
  TITLE?, 
  ROLE?,  
  LOGO?, 
  AGENT?, 
  ORG?, 
  CATEGORIES?, 
  NOTE?, 
  PRODID?, 
  REV?, 
  SORT-STRING?, 
  SOUND?, 
  UID?, 
  URL?, 
  CLASS?, 
  KEY?,
  DESC?
)*)>
 
  <!-- vCard specification version property. 
    This MUST be 2.0, if the document conforms to RFC 2426. -->
  <!ELEMENT VERSION (#PCDATA)>
 
  <!-- Formatted or display name property. -->
  <!ELEMENT FN (#PCDATA)>
 
  <!-- Structured name property. Name components with multiple
    values must be specified as a comma separated
	list of values. -->
  <!ELEMENT N ( FAMILY?, GIVEN?, MIDDLE?, PREFIX?, SUFFIX?)>
 
    <!ELEMENT FAMILY (#PCDATA)>
    <!ELEMENT GIVEN (#PCDATA)>
    <!ELEMENT MIDDLE (#PCDATA)>
    <!ELEMENT PREFIX (#PCDATA)>
    <!ELEMENT SUFFIX (#PCDATA)>
 
  <!-- Nickname property. Multiple nicknames must be
    specified as a comma separated list value. -->
  <!ELEMENT NICKNAME (#PCDATA)>
 
  <!-- Photograph property. Value is either a BASE64 encoded
    binary value or a URI to the external content. -->
  <!ELEMENT PHOTO ((TYPE, BINVAL) | EXTVAL)>
 
  <!-- Birthday property. Value must be an ISO 8601 formatted
    date or date/time value. -->
  <!ELEMENT BDAY (#PCDATA)>
 
  <!-- Structured address property. Address components with
    multiple values must be specified as a comma separated list
    of values. -->
  <!ELEMENT ADR (
    HOME?, 
    WORK?, 
    POSTAL?, 
    PARCEL?, 
    (DOM | INTL)?, 
    PREF?, 
    POBOX?, 
    EXTADD?, 
    STREET?, 
    LOCALITY?, 
    REGION?, 
    PCODE?, 
    CTRY?
  )>
 
    <!ELEMENT POBOX (#PCDATA)>
    <!ELEMENT EXTADD (#PCDATA)>
    <!ELEMENT STREET (#PCDATA)>
    <!ELEMENT LOCALITY (#PCDATA)>
    <!ELEMENT REGION (#PCDATA)>
    <!ELEMENT PCODE (#PCDATA)>
    <!ELEMENT CTRY (#PCDATA)>
 
  <!-- Address label property. -->
  <!ELEMENT LABEL (
    HOME?, 
    WORK?, 
    POSTAL?, 
    PARCEL?, 
    (DOM | INTL)?, 
    PREF?, 
    LINE+
  )>
 
    <!-- Individual label lines. -->
    <!ELEMENT LINE (#PCDATA)>
 
  <!-- Telephone number property. -->
  <!ELEMENT TEL (
    HOME?, 
    WORK?, 
    VOICE?, 
    FAX?, 
    PAGER?, 
    MSG?, 
    CELL?, 
    VIDEO?, 
    BBS?, 
    MODEM?, 
    ISDN?, 
    PCS?, 
    PREF?, 
    NUMBER
  )>
 
    <!-- Phone number value. -->
    <!ELEMENT NUMBER (#PCDATA)>
 
  <!-- Email address property. Default type is INTERNET. -->
  <!ELEMENT EMAIL (
    HOME?, 
    WORK?, 
    INTERNET?, 
    PREF?, 
    X400?, 
    USERID
  )>
 
    <!ELEMENT USERID (#PCDATA)>
 
  <!-- NOTE: the following element was added by the Jabber
             project (now XMPP Standards Foundation) to
             handle Jabber IDs; the value must be in the
             form of user@host -->
 
  <!ELEMENT JABBERID (#PCDATA)>
 
  <!-- Mailer (e.g., Mail User Agent Type) property. -->
  <!ELEMENT MAILER (#PCDATA)>
 
  <!-- Time zone's Standard Time UTC offset. Value must be an
    ISO 8601 formatted UTC offset. -->
  <!ELEMENT TZ (#PCDATA)>
 
  <!-- Geographical position. Values are the decimal degress of
    LATitude and LONgitude. The value should be specified to 
    six decimal places.-->
  <!ELEMENT GEO (LAT, LON)>
 
    <!-- Latitude value. -->
    <!ELEMENT LAT (#PCDATA)>
 
    <!-- Longitude value. -->
    <!ELEMENT LON (#PCDATA)>
 
  <!-- Title property. -->
  <!ELEMENT TITLE (#PCDATA)>
 
  <!-- Role property. -->
  <!ELEMENT ROLE (#PCDATA)>
 
  <!-- Organization logo property. -->
  <!ELEMENT LOGO ((TYPE, BINVAL) | EXTVAL)>
 
  <!-- Administrative agent property. -->
  <!ELEMENT AGENT (vCard | EXTVAL)>
 
  <!-- Organizational name and units property. -->
  <!ELEMENT ORG (ORGNAME, ORGUNIT*)>
 
    <!ELEMENT ORGNAME (#PCDATA)>
 
    <!ELEMENT ORGUNIT (#PCDATA)>
 
  <!-- Application specific categories property. -->
  <!ELEMENT CATEGORIES (KEYWORD+)>
 
    <!ELEMENT KEYWORD (#PCDATA)>
 
  <!-- Commentary note property. -->
  <!ELEMENT NOTE (#PCDATA)>
 
  <!-- Identifier of product that generated the vCard property. -->
  <!ELEMENT PRODID (#PCDATA)>
 
  <!-- Last revised property. The value must be an 
       ISO 8601 formatted UTC date/time. -->
  <!ELEMENT REV (#PCDATA)>
 
  <!-- Sort string property. -->
  <!ELEMENT SORT-STRING (#PCDATA)>
 
  <!-- Formatted name pronunciation property. The value is 
       either a textual phonetic pronunciation, a BASE64 
       encoded binary digital audio pronunciation or a URI to
       an external binary digital audio pronunciation.-->	
  <!ELEMENT SOUND (PHONETIC | BINVAL | EXTVAL)>
 
    <!-- Textual phonetic pronunciation. -->
    <!ELEMENT PHONETIC (#PCDATA)>
 
  <!-- Unique identifier property. -->
  <!ELEMENT UID (#PCDATA)>
 
  <!-- Directory URL property. -->
  <!ELEMENT URL (#PCDATA)>
 
  <!-- NOTE: the following element was added by the Jabber
             project (now XMPP Standards Foundation) to
             handle free-form descriptive text. -->
 
  <!ELEMENT DESC (#PCDATA)>
 
  <!-- Privacy classification property. -->
  <!ELEMENT CLASS (PUBLIC | PRIVATE | CONFIDENTIAL)>
 
    <!ELEMENT PUBLIC EMPTY>
 
    <!ELEMENT PRIVATE EMPTY>
 
    <!ELEMENT CONFIDENTIAL EMPTY>
 
  <!-- Authentication credential or encryption  key property. -->
  <!ELEMENT KEY (TYPE?, CRED)>
 
    <!ELEMENT CRED (#PCDATA)>
 
<!-- ==== -->
 
<!-- Common elements. -->
 
<!-- Addressing type indicators. -->
<!ELEMENT HOME EMPTY>
<!ELEMENT WORK EMPTY>
<!ELEMENT POSTAL EMPTY>
<!ELEMENT PARCEL EMPTY>
<!ELEMENT DOM EMPTY>
<!ELEMENT INTL EMPTY>
<!ELEMENT PREF EMPTY>
<!ELEMENT VOICE EMPTY>
<!ELEMENT FAX EMPTY>
<!ELEMENT PAGER EMPTY>
<!ELEMENT MSG EMPTY>
<!ELEMENT CELL EMPTY>
<!ELEMENT VIDEO EMPTY>
<!ELEMENT BBS EMPTY>
<!ELEMENT MODEM EMPTY>
<!ELEMENT ISDN EMPTY>
<!ELEMENT PCS EMPTY>
<!ELEMENT INTERNET EMPTY>
<!ELEMENT X400 EMPTY>
 
<!-- Format type parameter. -->
<!ELEMENT TYPE (#PCDATA)>
 
<!-- Base64 encoded binary value. -->
<!ELEMENT BINVAL (#PCDATA)>
 
<!-- URI to external binary value -->
<!ELEMENT EXTVAL (#PCDATA)>
 
<!-- ==== -->

附录

附录A:文档信息

Source Control: HTML RSS This document in other formats: XML PDF

系列:XEP

序号:0054

发布者:XMPP标准基金会

状态:活跃的

类型:历史的

版本:1.2

最后更新:2008-07-16

批准机构:XMPP理事会

依赖标准: XMPP Core

替代标准:无

被替代标准:无

缩略名:vcard-temp

原文控制: HTML RSS

本文的其它格式: XML PDF

附录B:作者信息

Peter Saint-Andre

Email: stpeter@jabber.org

JabberID: stpeter@jabber.org

URI: https://stpeter.im/

附录C:法律通告

版权

XMPP扩展协议的版权(1999-2008)归XMPP标准化基金会(XSF)所有.

权限

特此授权,费用全免,对任何获得本协议副本的人,对使用本协议没有限制,包括不限制在软件程序中实现本协议,不限制在网络服务中布署本协议,不限制拷贝,修改,合并,发行,翻译,分发,转授,或销售本协议的副本,被允许使用本协议做了以上工作的人士,应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中.除非单独的许可,被重新分发的修改工作,不得含有关于作者,标题,编号,或出版者的规格的误导性资料,并不得宣称修改工作是由本文的作者,作者所属的任何组织或项目,或XMPP标准基金会签注。

免责声明'

## 特别注意:本协议是提供的“原样”的基础,没有担保或任何形式的条件,明示或暗示,包括,但不限于任何担保或关于名称,非侵权性,适销性或适合作某一特定目的的条件. ##

责任限制

在任何情况下以及没有任何法律规定时,不论是侵权行为(包括疏忽),合同或其它方面,除非根据适用法律的要求(如蓄意和有严重疏忽行为)或以书面形式同意,XMPP标准基金会或任何作者不对本协议所造成的损失承担责任,包括任何直接,间接,特殊,偶发,或任何从本协议出,入,连接的字符产生的或实现,布署或其他对本协议的使用导致的相应的损害赔偿(包括但不限于善意的损失,停止作业,电脑失灵或故障,或任何和所有其他商业损害或损失) ,即使XMPP标准基金会或作者已被告知此类损害的可能性。

知识产权的一致性

XMPP扩展协议完全遵守XSF的知识产权策略(可在<http://www.xmpp.org/extensions/ipr-policy.shtml>找到副本或写信给XMPP标准基金会, 1899 Wynkoop Street, Suite 600, Denver, CO 80202 USA).

附录D:和XMPP的关系

可扩展的消息和出席信息协议 (XMPP) 定义于 XMPP Core (RFC 3920) 和 XMPP IM (RFC 3921) 规范里,由 XMPP标准基金会贡献到由依据RFC 2026成立的互联网工程人物组管理的互联网标准流程 Internet Standards Process. 本文定义的任何协议已在互联网标准流程之外开发,并且被理解为 XMPP 的扩展而不是一个XMPP本身的演化, 开发, 或修改.

附录E:讨论地点

主要的XMPP扩展协议讨论地点是 <standards@xmpp.org> 讨论列表.

在 xmpp.org 的其它讨论列表中的讨论可能也有合适的; 所有的列表见 <http://xmpp.org/about/discuss.shtml> .

勘误表可以发送邮件到 <editor@xmpp.org>.

附录F:需求一致性

以下用于本文的需求关键字的解释见于 RFC 2119: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".


附录G:备注

  1. RFC 2426: vCard MIME Directory Profile <http://tools.ietf.org/html/rfc2426>.
  2. 本文被归档于 <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-01.txt>.
  3. 本文被归档于 <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-02.txt>.
  4. 本文被归档于 <http://www.watersprings.org/pub/id/draft-dawson-vcard-xml-dtd-03.txt>.
  5. RFC 3920: 可扩展的消息和出席信息协议 (XMPP): Core <http://tools.ietf.org/html/rfc3920>.
  6. XEP-0030: Service Discovery <http://xmpp.org/extensions/xep-0030.html>.
  7. XEP-0115: Entity Capabilities <http://xmpp.org/extensions/xep-0115.html>.
  8. 互联网编号分配机构(IANA) 是用于互联网协议的唯一性参数值分配的核心协调者, 例如号码和URI计划. 更多信息, 见 <http://www.iana.org/>.
  9. XMPP登记员XMPP Registrar 维护着一个保留的协议名字空间以及用于由XMPP标准基金会批准的XMPP扩展协议的上下文参数的注册项的列表. 更多信息, 见 <http://xmpp.org/registrar/>.
  10. XEP-0147: XMPP URI Query Components <http://xmpp.org/extensions/xep-0147.html>.

附录H:修订历史

注意: 本协议的旧版本可能在 http://xmpp.org/extensions/attic/ 还可用

版本 1.2 (2008-07-16)

更多完全定义的错误情景; 增加了确定支持的章节.

(psa)

版本 1.1 (2003-03-26)

澄清了特定历史的不准确并增加了连接到 Frank Dawson's 的互联网草案的归档版本.

(psa)

版本 1.0 (2003-01-09)

通过Jabber理事会投票更新状态为活跃.

(psa)

版本 0.2 (2002-11-06)

很多小修改; 增加了实现注意事项.

(psa)

版本 0.1 (2002-10-31)

初始版本.

(psa)


结束

个人工具