記錄聯系方式對所有商務應用程序都非常重要,通過有效的 XML 結構來捕獲這些信息可以簡化此類數據的處理。
聯系信息變化可能很大,因此應該選擇 XML 。比如,有些公司和個人可能有多個地址、電話號碼和電子郵件帳戶。在 XML 結構中很容易聲明多個此類信息片段。
vCard 結構經常在 Internet 上用於表示聯系信息,它獨立於平台,很容易生成和導入不同的應用程序。它支持 XML 結構的某些靈活性,但實際上是一種基於文本的簡單格式,使用聲明性字段和擴展來提供信息。不同於 XML,vCard 格式是扁平文本,就是說不能直接向各種元素增加信息。電話號碼是一個很好的例子,它不一定和某個地址關聯,而僅僅作為記錄中的另一個電話號碼。
W3 聯盟提出一種 vCard 格式的 XML,它采用 RDF XML 標准,以便於格式化和交換聯系信息。采用 RDF 框架可以在聲明過程中保留一些結構化信息。比如,RDF 標准支持使用包、序列和替代來描述數據。包支持多次聲明一個對象(比如多種角色),並且可以在序列不重要時使用包。序列用於定義對象的次序,比如機構中人員角色的層次結構。替代允許從列表中選擇一項,比如多個電子郵件地址。
清單 6 顯示了虛擬人物 Charles Perston 的 vCard。
清單 6. Charles Perston 的 vCard
BEGIN:VCARD
VERSION:3.0
N:Perston;Charles;;;
FN:Charles Perston
ORG:Perston Technology;
EMAIL;type=INTERNET;type=WORK;type=pref:null@perston.co.uk
TEL;type=WORK;type=pref:01234 567890
item1.ADR;type=WORK;type=pref:;;Perston House;Perston;Perstonshire;P1 0NS;UK
item1.X-ABADR:gb
X-ABUID:5AE47BB6-4E0F-4558-980C-BD3066FA6154\:ABPerson
END:VCARD
采用 vCard XML 標准,可用清單 7 中的結構表示同樣的信息。
清單 7. 使用 vCard XML 標准表示 Charles Perston
<vCard:vCard xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
xmlns:foaf="http://xmlns.com/foaf/0.1/" vCard:version="3.0"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" vCard:class="PUBLIC"
xmlns:vCard="x-urn:cpan:ascope:xml-generator-vcard#">
<vCard:fn>Charles Perston</vCard:fn>
<vCard:n>
<vCard:family>Perston</vCard:family>
<vCard:given>Charles</vCard:given>
</vCard:n>
<vCard:adr vCard:del.type="pref;work">
<vCard:street>Perston House</vCard:street>
<vCard:locality>Perston</vCard:locality>
<vCard:region>Perstonshire</vCard:region>
<vCard:pcode>P1 0NS</vCard:pcode>
<vCard:country>UK</vCard:country>
</vCard:adr>
<vCard:email vCard:email.type="internet;pref;work">null@perston.co.uk
</vCard:email>
<vCard:org>
<vCard:orgnam>Perston Technology</vCard:orgnam>
</vCard:org>
</vCard:vCard>
XML 格式更長,但容易理解所看的內容以及各部分之間的關系。這種格式可以了解更詳細的信息和細節。比方說,很容易在地址中找到需要的國家,在標准 vCard 輸出中該信息是比較隱含的。
再比如,很容易使用 XPath 或者 SAX 事件提取國家的列表,以便了解位於不同地區的聯系人的數目。