idnits 2.17.1 draft-ietf-vcarddav-vcardxml-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** The document seems to lack a License Notice according IETF Trust Provisions of 28 Dec 2009, Section 6.b.i or Provisions of 12 Sep 2009 Section 6.b -- however, there's a paragraph with a matching beginning. Boilerplate error? (You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Feb 2009 rather than one of the newer Notices. See https://trustee.ietf.org/license-info/.) Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 185: '...vCard XML parser MUST ignore elements ...' RFC 2119 keyword, line 202: '... origiginal vCard format [I-D.ietf-vcarddav-vcardrev] MUST still be...' RFC 2119 keyword, line 208: '...rary. The order MUST be respected in ...' RFC 2119 keyword, line 210: '... vCard MAY happen....' -- The draft header indicates that this document obsoletes RFC2425, but the abstract doesn't seem to mention this, which it should. -- The draft header indicates that this document obsoletes RFC2426, but the abstract doesn't seem to mention this, which it should. -- The draft header indicates that this document obsoletes RFC4770, but the abstract doesn't seem to mention this, which it should. -- The draft header indicates that this document updates RFC2739, but the abstract doesn't seem to mention this, which it should. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year (Using the creation date from RFC2739, updated by this document, for RFC5378 checks: 1998-08-14) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 14, 2009) is 5308 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-22) exists of draft-ietf-vcarddav-vcardrev-08 Summary: 3 errors (**), 0 flaws (~~), 2 warnings (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group S. Perreault 3 Internet-Draft Viagenie 4 Obsoletes: 2425, 2426, 4770 October 14, 2009 5 (if approved) 6 Updates: 2739 (if approved) 7 Intended status: Standards Track 8 Expires: April 17, 2010 10 vCard XML Schema 11 draft-ietf-vcarddav-vcardxml-00 13 Status of This Memo 15 This Internet-Draft is submitted to IETF in full conformance with the 16 provisions of BCP 78 and BCP 79. 18 Internet-Drafts are working documents of the Internet Engineering 19 Task Force (IETF), its areas, and its working groups. Note that 20 other groups may also distribute working documents as Internet- 21 Drafts. 23 Internet-Drafts are draft documents valid for a maximum of six months 24 and may be updated, replaced, or obsoleted by other documents at any 25 time. It is inappropriate to use Internet-Drafts as reference 26 material or to cite them other than as "work in progress." 28 The list of current Internet-Drafts can be accessed at 29 http://www.ietf.org/ietf/1id-abstracts.txt. 31 The list of Internet-Draft Shadow Directories can be accessed at 32 http://www.ietf.org/shadow.html. 34 This Internet-Draft will expire on April 17, 2010. 36 Copyright Notice 38 Copyright (c) 2009 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents in effect on the date of 43 publication of this document (http://trustee.ietf.org/license-info). 44 Please review these documents carefully, as they describe your rights 45 and restrictions with respect to this document. 47 Abstract 49 This document defines the XML schema of the vCard data format. 51 Table of Contents 53 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 54 2. The Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 3 55 3. Example: Author's XML vCard . . . . . . . . . . . . . . . . . 3 56 4. Design Considerations . . . . . . . . . . . . . . . . . . . . 4 57 4.1. Extensibility . . . . . . . . . . . . . . . . . . . . . . 5 58 4.2. Limitations . . . . . . . . . . . . . . . . . . . . . . . 5 59 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 60 6. Normative References . . . . . . . . . . . . . . . . . . . . . 6 61 Appendix A. Relax NG Schema . . . . . . . . . . . . . . . . . . . 6 62 Appendix B. Change Log (to be removed by RFC Editor prior to 63 publication) . . . . . . . . . . . . . . . . . . . . 10 64 B.1. Changes in -00 . . . . . . . . . . . . . . . . . . . . . . 10 66 1. Introduction 68 vCard [I-D.ietf-vcarddav-vcardrev] is a data format for representing 69 and exchanging information about individuals. It is a text-based 70 format (as opposed to a binary format). This document defines an XML 71 representation for vCard. The underlying data structure is exactly 72 the same, enabling a 1-to-1 mapping between the original vCard format 73 and the XML representation. The XML formatting may be preferred in 74 some contexts where an XML engine is readily available and may be 75 reused instead of writing a stand-alone vCard parser. 77 2. The Schema 79 The schema is expressed in the RELAX NG language 80 [relaxng][relaxng-compact] and is found in Appendix A. 82 3. Example: Author's XML vCard 84 85 86 Simon Perreault 87 88 Perreault 89 Simon 90 91 92 ing. jr. 93 M.Sc. 94 95 96 --0203 97 98 20090808T1430-0500 99 100 1 101 1fr 102 2en 103 104 Viagenie 105 106 107 Suite 625 108 2600 boul. Laurier 109 Quebec 110 QC 111 G1V 4W1 112 Canada 113 114 115 116 tel:+1-418-656-9254;ext=102 117 118 119 120 tel:+1-418-262-6501 121 122 123 124 tel:+1-418-656-9257 125 126 simon.perreault@viagenie.ca 127 geo:46.772673,-71.282945 128 129 http://www.viagenie.ca/simon.perreault/simon.asc 130 131 132 America/Montreal 133 134 136 4. Design Considerations 138 The general idea is to map vCard parameters, properties, and value 139 types to XML elements. For example, the "FN" property is mapped to 140 the "fn" element. That element in turn contains a text element whose 141 content corresponds to the vCard property's value. 143 vCard parameters are also mapped to XML elements. They are contained 144 in property elements. For example, the "TYPE" parameter applied to 145 the "TEL" property would look like the following in XML: 147 148 149 tel:+1-555-555-555 150 152 Properties having structured values (e.g. the N property) are 153 expressed by XML element trees. Element names in that tree (e.g. 154 "surname", "given", etc.) do not have a vCard equivalent since they 155 are identified by position in plain vCard. 157 Line folding is a non-issue in XML. Therefore, the mapping from 158 vCard to XML is done after the unfolding procedure is carried out. 159 Conversely, the mapping from XML to vCard is done before the folding 160 procedure is carried out. 162 4.1. Extensibility 164 The original vCard format is extensible. New properties, parameters, 165 data types and values (collectively known as vCard objects) can be 166 registered from IANA. It is expected that these vCard extensions 167 will also specify extensions to the XML format described in this 168 document. This is not a requirement: a separate document may be used 169 instead. 171 Unregistered extensions (i.e. those starting with "X-" and 172 "VND-...-") can be expressed in XML by making use of XML namespaces. 173 They simply correspond to elements outside of the core namespace. 174 For example: 176 178 1 179 value goes here 180 182 Note that extension elements do not need the "X- or "VND-" prefix in 183 XML. The XML namespace mechanism is sufficient. 185 A vCard XML parser MUST ignore elements that are not part of this 186 specification. 188 In the original vCard format, the VERSION property was mandatory and 189 played a role in extensibility. In XML, this property is absent. 190 Its role is played by the vCard core namespace identifier, which 191 includes the version number. vCard revisions will use a different 192 namespace. 194 Since vCard also has provisions for extending value enumerations, 195 such as the allowed TYPE parameter values, these values are expressed 196 using tags in XML. 198 4.2. Limitations 200 The schema does not validate the cardinality of properties. This is 201 a limitation of the schema definition language. Cardinalities of the 202 origiginal vCard format [I-D.ietf-vcarddav-vcardrev] MUST still be 203 respected. 205 Some constructs (e.g. value enumerations in type parameters) have 206 additional ordering constraints in XML. This is a result of 207 limitations of the schema definition language and the order is 208 arbitrary. The order MUST be respected in XML for the vCard to be 209 valid. However, reordering as part of conversion to or from plain 210 vCard MAY happen. 212 5. Security Considerations 214 TBD 216 6. Normative References 218 [I-D.ietf-vcarddav-vcardrev] Perreault, S. and P. Resnick, "vCard 219 Format Specification", 220 draft-ietf-vcarddav-vcardrev-08 (work 221 in progress), July 2009. 223 [relaxng] Clark, J., "RELAX NG Specification", 224 December 2001. 226 [relaxng-compact] Clark, J., "RELAX NG Compact Syntax", 227 November 2002. 229 Appendix A. Relax NG Schema 231 default namespace = "urn:ietf:params:xml:ns:vcard-4.0" 233 # Value types 234 \text = element text { text } 235 text-list = \text+ 236 uri = element uri { xsd:anyURI } 237 date = 238 element date { 239 xsd:string { pattern = "\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d" } 240 } 241 time = 242 element time { 243 xsd:string { pattern = 244 "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)" 245 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 246 } 247 date-time = 248 element date-time { 249 xsd:string { pattern = 250 "(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?" 251 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 252 } 253 date-and-or-time = date | date-time | time 254 timestamp = 255 element timestamp { 256 xsd:string { pattern = "\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?" } 257 } 259 boolean = element boolean { xsd:boolean } 260 integer = element integer { xsd:integer } 261 float = element float { xsd:float } 262 binary = element binary { xsd:base64Binary } 263 language-tag = 264 element language-tag { 265 xsd:string { pattern = 266 "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})" 267 ~ "(-[a-z]{4})?(-([a-z]{2}|\d{3}))?" 268 ~ "(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))*" 269 ~ "(-[0-9a-wyz](-[0-9a-z]{2,8})+)*(-x(-[0-9a-z]{1,8})+)?|" 270 ~ "x(-[0-9a-z]{1,8})+|[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}" } 271 } 272 data = 273 (element type { 274 xsd:string { pattern = "[A-Za-z\d!#$&.+\-^_]{1,127}/" 275 ~ "[A-Za-z\d!#$&.+\-^_]{1,127}" } 276 }, 277 binary) 278 | uri 280 # Parameters 281 language = element language { language-tag }? 282 pref = 283 element pref { 284 xsd:integer { minInclusive = "1" maxInclusive = "100" } 285 }? 286 pid = 287 element pid { 288 xsd:string { pattern = "\d+(\.\d+)?" } 289 }? 291 # Properties 292 source = element source { pid, pref, uri } 293 name = element name { \text } 294 kind = 295 element kind { 296 element individual { empty } 297 | element group { empty } 298 | element org { empty } 299 | element location { empty } 300 } 301 fn = element fn { language, pid, pref, \text } 302 n = 303 element n { 304 language, 305 element surname { text-list }, 306 element given { text-list }, 307 element prefix { text-list }, 308 element suffix { text-list } 309 } 310 nickname = element nickname { language, pid, pref, text-list } 311 photo = element photo { pid, pref, data } 312 bday = element bday { date-and-or-time | \text } 313 dday = element dday { date-and-or-time | \text } 314 birth = element birth { language, \text } 315 death = element death { language, \text } 316 anniversary = element anniversary { date-and-or-time | \text } 317 sex = element sex { "0" | "1" | "2" | "9" } 318 adr = 319 element adr { 320 language, 321 element geo { uri }?, 322 element tz { \text | uri }?, 323 pid, 324 pref, 325 element pobox { text-list }, 326 element ext { text-list }, 327 element street { text-list }, 328 element locality { text-list }, 329 element region { text-list }, 330 element code { text-list }, 331 element country { text-list } 332 } 333 label = element label { language, pid, pref, \text } 334 tel = 335 element tel { 336 element type { 337 element text { empty }?, 338 element voice { empty }?, 339 element fax { empty }?, 340 element cell { empty }?, 341 element video { empty }?, 342 element pager { empty }? 343 }?, 344 pid, 345 pref, 346 uri 347 } 348 email = element email { pid, pref, \text } 349 impp = element impp { pid, pref, uri } 350 lang = element lang { pid, pref, language-tag } 351 tz = element tz { pid, pref, (\text | uri) } 352 geo = element geo { pid, pref, uri } 353 title = element title { language, pid, pref, \text } 354 role = element role { language, pid, pref, \text } 355 logo = element logo { language, pid, pref, data } 356 org = element org { language, pid, pref, text-list } 357 member = element member { pid, pref, uri } 358 related = 359 element related { 360 element type { 361 element parent { empty } 362 | element child { empty } 363 | element sibling { empty } 364 | element spouse { empty } 365 | element family { empty } 366 | element friend { empty } 367 | element supervisor { empty } 368 | element supervisee { empty } 369 | element assistant { empty } 370 | element colleague { empty } 371 | element agent { empty } 372 | element emergency { empty } 373 }?, 374 pid, 375 pref, 376 (uri | \text) 377 } 378 categories = element categories { pid, pref, \text } 379 note = element note { language, pid, pref, \text } 380 prodid = element prodid { \text } 381 rev = element rev { timestamp } 382 sort-string = element sort-string { \text } 383 sound = element sound { language, pid, pref, data } 384 uid = element uid { uri } 385 clientpidmap = 386 element clientpidmap { 387 element sourceid { xsd:positiveInteger }, 388 uri 389 } 390 url = element url { pid, pref, uri } 391 class = 392 element class { 393 element PUBLIC { empty } 394 | element PRIVATE { empty } 395 | element CONFIDENTIAL { empty } 396 } 397 key = element key { pid, pref, data } 398 fburl = element fburl { pid, pref, uri } 399 caladruri = element caladruri { pid, pref, uri } 400 caluri = element caluri { pid, pref, uri } 402 # Top-level grammar 403 group-property = fn | nickname | photo | adr | label | tel | email | 404 impp | lang | tz | geo | title | role | logo | org | related | 405 categories | note | sound | url | key | fburl | caladruri | caluri 406 any-property = group-property | source | name | kind | n | bday | 407 dday | birth | death | anniversary | sex | member | prodid | 408 rev | sort-string | uid | clientpidmap | class 409 start = 410 element vcard { 411 (any-property 412 | element group { 413 attribute name { text }, 414 group-property* 415 })* 416 } 418 Appendix B. Change Log (to be removed by RFC Editor prior to 419 publication) 421 B.1. Changes in -00 423 o Same as draft-perreault-vcarddav-vcardxml-02. 425 Author's Address 427 Simon Perreault 428 Viagenie 429 2600 boul. Laurier, suite 625 430 Quebec, QC G1V 4W1 431 Canada 433 Phone: +1 418 656 9254 434 EMail: simon.perreault@viagenie.ca 435 URI: http://www.viagenie.ca