idnits 2.17.1 draft-ietf-vcarddav-vcardxml-09.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. 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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (April 9, 2011) is 4763 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-19 ** Obsolete normative reference: RFC 3023 (Obsoleted by RFC 7303) -- Obsolete informational reference (is this intentional?): RFC 4288 (Obsoleted by RFC 6838) Summary: 1 error (**), 0 flaws (~~), 2 warnings (==), 3 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 Intended status: Standards Track April 9, 2011 5 Expires: October 11, 2011 7 vCard XML Representation 8 draft-ietf-vcarddav-vcardxml-09 10 Abstract 12 This document defines the XML schema of the vCard data format. 14 Status of This Memo 16 This Internet-Draft is submitted in full conformance with the 17 provisions of BCP 78 and BCP 79. 19 Internet-Drafts are working documents of the Internet Engineering 20 Task Force (IETF). Note that other groups may also distribute 21 working documents as Internet-Drafts. The list of current Internet- 22 Drafts is at http://datatracker.ietf.org/drafts/current/. 24 Internet-Drafts are draft documents valid for a maximum of six months 25 and may be updated, replaced, or obsoleted by other documents at any 26 time. It is inappropriate to use Internet-Drafts as reference 27 material or to cite them other than as "work in progress." 29 This Internet-Draft will expire on October 11, 2011. 31 Copyright Notice 33 Copyright (c) 2011 IETF Trust and the persons identified as the 34 document authors. All rights reserved. 36 This document is subject to BCP 78 and the IETF Trust's Legal 37 Provisions Relating to IETF Documents 38 (http://trustee.ietf.org/license-info) in effect on the date of 39 publication of this document. Please review these documents 40 carefully, as they describe your rights and restrictions with respect 41 to this document. Code Components extracted from this document must 42 include Simplified BSD License text as described in Section 4.e of 43 the Trust Legal Provisions and are provided without warranty as 44 described in the Simplified BSD License. 46 Table of Contents 48 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 49 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 50 3. The Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 3 51 4. Example: Author's XML vCard . . . . . . . . . . . . . . . . . 3 52 5. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 53 5.1. Extensibility . . . . . . . . . . . . . . . . . . . . . . 6 54 5.2. Limitations . . . . . . . . . . . . . . . . . . . . . . . 7 55 6. Format Conversions . . . . . . . . . . . . . . . . . . . . . . 8 56 7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 57 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 58 8.1. Registration of the XML Namespace . . . . . . . . . . . . 10 59 8.2. Media Type . . . . . . . . . . . . . . . . . . . . . . . . 10 60 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11 61 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 62 10.1. Normative References . . . . . . . . . . . . . . . . . . . 11 63 10.2. Informative References . . . . . . . . . . . . . . . . . . 12 64 Appendix A. Relax NG Schema . . . . . . . . . . . . . . . . . . . 12 65 Appendix B. Change Log (to be removed by RFC Editor prior to 66 publication) . . . . . . . . . . . . . . . . . . . . 18 67 B.1. Changes in -09 . . . . . . . . . . . . . . . . . . . . . . 18 68 B.2. Changes in -08 . . . . . . . . . . . . . . . . . . . . . . 18 69 B.3. Changes in -07 . . . . . . . . . . . . . . . . . . . . . . 18 70 B.4. Changes in -06 . . . . . . . . . . . . . . . . . . . . . . 19 71 B.5. Changes in -05 . . . . . . . . . . . . . . . . . . . . . . 19 72 B.6. Changes in -04 . . . . . . . . . . . . . . . . . . . . . . 19 73 B.7. Changes in -03 . . . . . . . . . . . . . . . . . . . . . . 19 74 B.8. Changes in -02 . . . . . . . . . . . . . . . . . . . . . . 19 75 B.9. Changes in -01 . . . . . . . . . . . . . . . . . . . . . . 20 76 B.10. Changes in -00 . . . . . . . . . . . . . . . . . . . . . . 20 78 1. Introduction 80 vCard [I-D.ietf-vcarddav-vcardrev] is a data format for representing 81 and exchanging information about individuals and other entities. It 82 is a text-based format (as opposed to a binary format). This 83 document defines an XML [W3C.REC-xml-20081126] representation for 84 vCard. The underlying data structure is exactly the same, enabling a 85 1-to-1 mapping between the original vCard format and the XML 86 representation. The XML formatting may be preferred in some contexts 87 where an XML engine is readily available and may be reused instead of 88 writing a stand-alone vCard parser. 90 Earlier work on an XML format for vCard was started in 1998 by Frank 91 Dawson [I-D.dawson-vcard-xml-dtd]. Sadly it did not take over the 92 world. 94 2. Conventions 96 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 97 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 98 document are to be interpreted as described in [RFC2119]. 100 3. The Schema 102 The schema is expressed in the RELAX NG language 103 [relaxng][relaxng-compact] and is found in Appendix A. 105 4. Example: Author's XML vCard 107 108 109 110 Simon Perreault 111 112 Perreault 113 Simon 114 115 116 117 ing. jr. 118 M.Sc. 119 120 121 --0203 122 123 20090808T1430-0500 124 125 M 126 127 1 128 fr 129 130 131 2 132 en 133 134 135 work 136 Viagenie 137 138 139 140 work 141 143 144 145 146 2875 boul. Laurier, suite D2-630 147 Quebec 148 QC 149 G1V 2M2 150 Canada 151 152 153 154 155 work 156 voice 157 158 159 tel:+1-418-656-9254;ext=102 160 161 162 163 164 work 165 text 166 voice 167 cell 168 video 169 170 171 tel:+1-418-262-6501 172 173 174 work 175 simon.perreault@viagenie.ca 176 177 178 work 179 geo:46.766336,-71.28955 180 181 182 work 183 http://www.viagenie.ca/simon.perreault/simon.asc 184 185 America/Montreal 186 187 189 5. Design Considerations 191 The general idea is to map vCard parameters, properties, and value 192 types to XML elements. For example, the "FN" property is mapped to 193 the "fn" element. That element in turn contains a text element whose 194 content corresponds to the vCard property's value. 196 vCard parameters are also mapped to XML elements. They are contained 197 in the element, which is contained in property elements. 198 For example, the "TYPE" parameter applied to the "TEL" property would 199 look like the following in XML: 201 202 203 voice 204 video 205 206 tel:+1-555-555-555 207 209 Parameters taking a list of values are simply repeated multiple 210 times, once for each value in the list. 212 Properties having structured values (e.g. the "N" property) are 213 expressed by XML element trees. Element names in that tree (e.g. 214 "surname", "given", etc.) do not have a vCard equivalent since they 215 are identified by position in plain vCard. 217 Line folding is a non-issue in XML. Therefore, the mapping from 218 vCard to XML is done after the unfolding procedure is carried out. 219 Conversely, the mapping from XML to vCard is done before the folding 220 procedure is carried out. 222 A top-level element is used as root. It contains one or 223 more element, each representing a complete vCard. The 224 element MUST be present even when only a single vCard is 225 present in an XML document. 227 The group construct (Section 3.2 in [I-D.ietf-vcarddav-vcardrev]) is 228 represented with the element. The "name" attribute contains 229 the group's name. For example: 231 232 233 234 ... 235 ... 236 237 238 ... 239 240 ... 241 242 244 is equivalent to: 246 BEGIN:VCARD 247 VERSION:4.0 248 contact.FN=... 249 contact.EMAIL=... 250 media.PHOTO=... 251 CATEGORIES=... 252 END:VCARD 254 5.1. Extensibility 256 The original vCard format is extensible. New properties, parameters, 257 data types and values (collectively known as vCard objects) can be 258 registered with IANA. It is expected that these vCard extensions 259 will also specify extensions to the XML format described in this 260 document. 262 Unregistered extensions (i.e. those starting with "X-" and 263 "VND-...-") are expressed in XML by using elements starting with "x-" 264 and "vnd-...-". Usage of XML namespaces [W3C.REC-xml-names-20091208] 265 for extensibility is RECOMMENDED for extensions that have no 266 equivalent in plain text vCard. Refer to Section 6 for the 267 implications when converting between plain-text vCard and XML. 269 Examples: 271 272 273 1 274 275 value goes here 276 278 280 281 1 282 283 value goes here 284 286 Note that extension elements do not need the "X- or "VND-" prefix in 287 XML. The XML namespace mechanism is sufficient. 289 A vCard XML parser MUST ignore XML elements and attributes for which 290 it doesn't recognize the expanded name. The normal behaviour of 291 ignoring XML processing instructions whose target is not recognized 292 MUST also be followed. 294 In the original vCard format, the "VERSION" property was mandatory 295 and played a role in extensibility. In XML, this property is absent. 296 Its role is played by the vCard core namespace identifier, which 297 includes the version number. vCard revisions will use a different 298 namespace. 300 Parameters containing a list of values are expressed using a list of 301 elements in XML (e.g. the element). 303 5.2. Limitations 305 The schema does not validate the cardinality of properties. This is 306 a limitation of the schema definition language. Cardinalities of the 307 original vCard format [I-D.ietf-vcarddav-vcardrev] MUST still be 308 respected. 310 Some constructs (e.g. value enumerations in type parameters) have 311 additional ordering constraints in XML. This is a result of 312 limitations of the schema definition language and the order is 313 arbitrary. The order MUST be respected in XML for the vCard to be 314 valid. However, reordering as part of conversion to or from plain 315 vCard MAY happen. 317 6. Format Conversions 319 When converting from XML vCard (this specification) to plain-text 320 vCard [I-D.ietf-vcarddav-vcardrev], the following rules apply: 322 o Properties in the vCard 4 namespace: 324 * If the converter knows of a specific plain-text representation 325 for this property, it uses it. For example, the element 326 corresponds to the "ADR" property, which is encoded using 327 comma-separated lists separated by semi-colons. 329 * Otherwise, the property name is taken from the element name, 330 property parameters are taken from the element, 331 and the content of the property is taken from the content of 332 the value element. If the property element has attributes or 333 contains other XML elements, they are dropped. 335 * If a standard property's XML element contains XML elements and 336 attributes for which the converter doesn't recognize the 337 expanded name, they are dropped. Therefore, it is RECOMMENDED 338 to limit extensions to the property level to ensure that all 339 data is preserved intact in round-trip conversions. 341 o Properties in other namespaces are wrapped as-is inside an "XML" 342 property. 344 o Property value escaping (Section 3.3 of 345 [I-D.ietf-vcarddav-vcardrev]) is carried out. For example, a 346 NEWLINE character (ASCII decimal 10) becomes "\n". 348 o Double-quoting of parameter values, as well as backslash escaping 349 in parameter values, is carried out. For example, 350 "foo","bar" becomes PARAM="\"foo\",\"bar\"". 352 When converting from plain-text vCard [I-D.ietf-vcarddav-vcardrev] to 353 XML vCard (this specification), the following rules apply: 355 o The content of "XML" properties is copied as-is to XML. 357 o Properties for which the converter knows of a specific XML 358 representation use it. For example, the "ADR" property is 359 represented using the element and related sub-elements. 361 o Other properties are converted to XML in the following way: 363 * The XML namespace of the property element is set to the vCard 4 364 namespace. 366 * The name of the property element is set to the lowercased name 367 of the property. 369 * If the property has parameters, they get translated as-is 370 (without lowercasing of parameter names, removal of backslash 371 escaping, and removal of quoting) into sub-elements of the 372 element 374 * The property element contains a single element whose 375 content is copied as-is from the property's value. 377 o Property value escaping is undone. For example, "\n" becomes a 378 NEWLINE character (ASCII decimal 10). 380 o Double-quoting of parameter values, as well as backslash escaping 381 in parameter values, is undone. For example, 382 PARAM="\"foo\",\"bar\"" becomes "foo","bar". 384 For example, these two vCards are equivalent: 386 387 388 389 J. Doe 390 391 Doe 392 J. 393 394 395 396 397 398 image/jpeg 399 alien.jpg 400 401 My web page! 403 404 406 BEGIN:VCARD 407 VERSION:4.0 408 FN:J. Doe 409 N:Doe;J.;; 410 X-FILE;TYPE=image/jpeg:alien.jpg 411 XML:My web page! 414 END:VCARD 416 7. Security Considerations 418 All the security considerations applicable to plain vCard 419 [I-D.ietf-vcarddav-vcardrev] are applicable to this document as well. 421 8. IANA Considerations 423 8.1. Registration of the XML Namespace 425 URI: urn:ietf:params:xml:ns:vcard-4.0 427 Registrant Contact: Simon Perreault 429 XML: None. Namespace URIs do not represent an XML specification. 431 8.2. Media Type 433 This section defines the MIME media type [RFC4288] for use with 434 vCard-in-XML data. 436 To: ietf-types@iana.org 438 Subject: Registration of media type application/vcard+xml 440 Type name: application 442 Subtype name: vcard+xml 444 Required parameters: none 446 Optional parameters: charset as defined for application/xml in 447 [RFC3023]; per [RFC3023], use of the charset parameter with the 448 value "utf-8" is "STRONGLY RECOMMENDED" 450 Encoding considerations: Same as encoding considerations of 451 application/xml as specified in [RFC3023] 453 Security considerations: See Section 7. 455 Interoperability considerations: This media type provides an 456 alternative syntax to vCard data [I-D.ietf-vcarddav-vcardrev] 457 based on XML. 459 Published specification: This specification. 461 Applications which use this media type: Applications that currently 462 make use of the text/vcard media type can use this as an 463 alternative. In general, applications that maintain or process 464 contact information can use this media type. 466 Additional information: 468 Magic number(s): none 470 File extension(s): XML data should use ".xml" as the file 471 extension. 473 Macintosh file type code(s): none 475 Person & email address to contact for further information: Simon 476 Perreault 478 Intended usage: COMMON 480 Restrictions on usage: none 482 Author: Simon Perreault 484 Change controller: IETF 486 9. Acknowledgements 488 Thanks to the following people for their input: 490 Alexey Melnikov, Barry Leiba, Bjorn Hoehrmann, Cyrus Daboo, Joe 491 Hildebrand, Joseph Smarr, Marc Blanchet, Mike Douglas, Peter Saint- 492 Andre, Robins George, Zahhar Kirillov, Zoltan Ordogh. 494 10. References 496 10.1. Normative References 498 [I-D.ietf-vcarddav-vcardrev] Perreault, S., "vCard Format 499 Specification", 500 draft-ietf-vcarddav-vcardrev-19 (work 501 in progress), April 2011. 503 [RFC2119] Bradner, S., "Key words for use in RFCs 504 to Indicate Requirement Levels", 505 BCP 14, RFC 2119, March 1997. 507 [RFC3023] Murata, M., St. Laurent, S., and D. 508 Kohn, "XML Media Types", RFC 3023, 509 January 2001. 511 [W3C.REC-xml-20081126] Yergeau, F., Maler, E., Paoli, J., 512 Sperberg-McQueen, C., and T. Bray, 513 "Extensible Markup Language (XML) 1.0 514 (Fifth Edition)", World Wide Web 515 Consortium Recommendation REC-xml- 516 20081126, November 2008, . 519 [W3C.REC-xml-names-20091208] Tobin, R., Hollander, D., Thompson, H., 520 Bray, T., and A. Layman, "Namespaces in 521 XML 1.0 (Third Edition)", World Wide 522 Web Consortium Recommendation REC-xml- 523 names-20091208, December 2009, . 527 [relaxng] Clark, J., "RELAX NG Specification", 528 December 2001. 530 [relaxng-compact] Clark, J., "RELAX NG Compact Syntax", 531 November 2002, . 534 10.2. Informative References 536 [I-D.dawson-vcard-xml-dtd] Dawson, F., "The vCard v3.0 XML DTD", 537 draft-dawson-vcard-xml-dtd-03 (work in 538 progress), June 1998. 540 [RFC4288] Freed, N. and J. Klensin, "Media Type 541 Specifications and Registration 542 Procedures", BCP 13, RFC 4288, 543 December 2005. 545 Appendix A. Relax NG Schema 547 default namespace = "urn:ietf:params:xml:ns:vcard-4.0" 549 # Value types 550 value-text = element text { text } 551 value-text-list = value-text+ 552 value-uri = element uri { xsd:anyURI } 553 value-date = element date { 554 xsd:string { pattern = "\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d" } 556 } 557 value-time = element time { 558 xsd:string { pattern = "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)" 559 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 560 } 561 value-date-time = element date-time { 562 xsd:string { pattern = "(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?" 563 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 564 } 565 value-date-and-or-time = value-date | value-date-time | value-time 566 value-timestamp = element timestamp { 567 xsd:string { pattern = "\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?" } 568 } 569 value-boolean = element boolean { xsd:boolean } 570 value-integer = element integer { xsd:integer } 571 value-float = element float { xsd:float } 572 value-language-tag = element language-tag { 573 xsd:string { pattern = "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})" 574 ~ "(-[a-z]{4})?(-([a-z]{2}|\d{3}))?" 575 ~ "(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))*" 576 ~ "(-[0-9a-wyz](-[0-9a-z]{2,8})+)*" 577 ~ "(-x(-[0-9a-z]{1,8})+)?|x(-[0-9a-z]{1,8})+|" 578 ~ "[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}" } 579 } 581 # Parameters 582 param-language = element language { value-language-tag }? 583 param-pref = element pref { 584 element integer { 585 xsd:integer { minInclusive = "1" maxInclusive = "100" } 586 } 587 }? 588 param-altid = element altid { value-text }? 589 param-pid = element pid { 590 element text { xsd:string { pattern = "\d+(\.\d+)?" } }+ 591 }? 592 param-type = element type { element text { "work" | "home" }+ }? 593 param-mediatype = element mediatype { value-text }? 594 param-calscale = element calscale { element text { "gregorian" } }? 595 param-sort-as = element sort-as { value-text+ }? 596 param-geo = element geo { value-uri }? 597 param-tz = element tz { value-text | value-uri }? 598 param-label = element label { value-text }? 600 # Properties 601 property-source = element source { 602 element parameters { param-altid, param-pid, param-pref, 603 param-mediatype }, 605 value-uri 606 } 607 property-kind = element kind { 608 element text { "individual" | "group" | "org" | "location" }* 609 } 610 property-fn = element fn { 611 element parameters { param-language, param-altid, param-pid, 612 param-pref, param-type }?, 613 value-text 614 } 615 property-n = element n { 616 element parameters { param-language, param-sort-as, param-altid }?, 617 element surname { value-text-list? }, 618 element given { value-text-list? }, 619 element additional { value-text-list? }, 620 element prefix { value-text-list? }, 621 element suffix { value-text-list? } 622 } 623 property-nickname = element nickname { 624 element parameters { param-language, param-altid, param-pid, 625 param-pref, param-type }?, 626 value-text-list 627 } 628 property-photo = element photo { 629 element parameters { param-altid, param-pid, param-pref, param-type, 630 param-mediatype }?, 631 value-uri 632 } 633 property-bday = element bday { 634 element parameters { param-altid, param-calscale }?, 635 (value-date-and-or-time | value-text) 636 } 637 property-anniversary = element anniversary { 638 element parameters { param-altid, param-calscale }?, 639 (value-date-and-or-time | value-text) 640 } 641 property-gender = element gender { 642 element sex { 643 element text { "M" | "F" | "O" | "N" | "U" }? 644 }, 645 element identity { value-text-list? } 646 } 647 property-adr = element adr { 648 element parameters { param-language, param-altid, param-pid, 649 param-pref, param-type, param-geo, param-tz, 650 param-label }?, 651 element pobox { value-text-list? }, 652 element ext { value-text-list? }, 653 element street { value-text-list? }, 654 element locality { value-text-list? }, 655 element region { value-text-list? }, 656 element code { value-text-list? }, 657 element country { value-text-list? } 658 } 659 property-tel = element tel { 660 element parameters { 661 param-altid, 662 param-pid, 663 param-pref, 664 element type { 665 element text { "work" | "home" | "text" | "voice" 666 | "fax" | "cell" | "video" | "pager" 667 | "textphone" }+ 668 }?, 669 param-mediatype 670 }?, 671 (value-text | value-uri) 672 } 673 property-email = element email { 674 element parameters { param-altid, param-pid, param-pref, 675 param-type }?, 676 value-text 677 } 678 property-impp = element impp { 679 element parameters { param-altid, param-pid, param-pref, 680 param-type, param-mediatype }?, 681 value-uri 682 } 683 property-lang = element lang { 684 element parameters { param-altid, param-pid, param-pref, 685 param-type }?, 686 value-language-tag 687 } 688 property-tz = element tz { 689 element parameters { param-altid, param-pid, param-pref, 690 param-type, param-mediatype }?, 691 (value-text | value-uri) 692 } 693 property-geo = element geo { 694 element parameters { param-altid, param-pid, param-pref, 695 param-type, param-mediatype }?, 696 value-uri 697 } 698 property-title = element title { 699 element parameters { param-language, param-altid, param-pid, 700 param-pref, param-type }?, 702 value-text 703 } 704 property-role = element role { 705 element parameters { param-language, param-altid, param-pid, 706 param-pref, param-type }?, 707 value-text 708 } 709 property-logo = element logo { 710 element parameters { param-language, param-altid, param-pid, 711 param-pref, param-type, param-mediatype }?, 712 value-uri 713 } 714 property-org = element org { 715 element parameters { param-language, param-altid, param-pid, 716 param-pref, param-type, param-sort-as }?, 717 value-text-list 718 } 719 property-member = element member { 720 element parameters { param-altid, param-pid, param-pref, 721 param-mediatype }?, 722 value-uri 723 } 724 property-related = element related { 725 element parameters { 726 param-altid, 727 param-pid, 728 param-pref, 729 element type { 730 element text { 731 "work" | "home" | "contact" | "acquaintance" | 732 "friend" | "met" | "co-worker" | "colleague" | "co-resident" | 733 "neighbor" | "child" | "parent" | "sibling" | "spouse" | 734 "kin" | "muse" | "crush" | "date" | "sweetheart" | "me" 735 }+ 736 }?, 737 param-mediatype 738 }?, 739 (value-uri | value-text) 740 } 741 property-categories = element categories { 742 element parameters { param-altid, param-pid, param-pref, 743 param-type }?, 744 value-text-list 745 } 746 property-note = element note { 747 element parameters { param-language, param-altid, param-pid, 748 param-pref, param-type }?, 749 value-text 751 } 752 property-prodid = element prodid { value-text } 753 property-rev = element rev { value-timestamp } 754 property-sound = element sound { 755 element parameters { param-language, param-altid, param-pid, 756 param-pref, param-type, param-mediatype }?, 757 value-uri 758 } 759 property-uid = element uid { value-uri } 760 property-clientpidmap = element clientpidmap { 761 element sourceid { xsd:positiveInteger }, 762 value-uri 763 } 764 property-url = element url { 765 element parameters { param-altid, param-pid, param-pref, 766 param-type, param-mediatype }?, 767 value-uri 768 } 769 property-key = element key { 770 element parameters { param-altid, param-pid, param-pref, 771 param-type, param-mediatype }?, 772 (value-uri | value-text) 773 } 774 property-fburl = element fburl { 775 element parameters { param-altid, param-pid, param-pref, 776 param-type, param-mediatype }?, 777 value-uri 778 } 779 property-caladruri = element caladruri { 780 element parameters { param-altid, param-pid, param-pref, 781 param-type, param-mediatype }?, 782 value-uri 783 } 784 property-caluri = element caluri { 785 element parameters { param-altid, param-pid, param-pref, 786 param-type, param-mediatype }?, 787 value-uri 788 } 790 # Top-level grammar 791 property = property-adr | property-anniversary | property-bday 792 | property-caladruri | property-caluri | property-categories 793 | property-clientpidmap | property-email | property-fburl 794 | property-fn | property-geo | property-impp | property-key 795 | property-kind | property-lang | property-logo 796 | property-member | property-n | property-nickname 797 | property-note | property-org | property-photo 798 | property-prodid | property-related | property-rev 799 | property-role | property-gender | property-sound 800 | property-source | property-tel | property-title 801 | property-tz | property-uid | property-url 802 start = element vcards { 803 element vcard { 804 (property 805 | element group { 806 attribute name { text }, 807 property* 808 })+ 809 }+ 810 } 812 Appendix B. Change Log (to be removed by RFC Editor prior to 813 publication) 815 B.1. Changes in -09 817 o Added "Conventions" section with reference to RFC2119. 819 o Fixed bad XML in example. 821 o Updated MIME type registration following feedback from 822 ietf-types@iana.org. 824 B.2. Changes in -08 826 o Synchronized with draft-ietf-vcarddav-vcardrev-17. 828 o Added some references. 830 o Fixed bad XML in example. 832 o Added element around pid param value. 834 B.3. Changes in -07 836 o Synchronized with draft-ietf-vcarddav-vcardrev-16. 838 o Fixed bad XML in example. 840 o Fixed which now takes a value-text-list. 842 o All parameters now use value elements. This affects type, 843 calscale, and pref. 845 B.4. Changes in -06 847 o Synchronized with draft-ietf-vcarddav-vcardrev-15. 849 B.5. Changes in -05 851 o Synchronized with draft-ietf-vcarddav-vcardrev-13. 853 B.6. Changes in -04 855 o Synchronized with draft-ietf-vcarddav-vcardrev-12. 857 o Added application/vcard+xml media type. 859 o Added rules for backslash escaping and quoting when converting. 861 o Added description of element. 863 o Described group construct in XML. 865 B.7. Changes in -03 867 o Created "Format Conversions" section. 869 o Turned more parameter values into plain text. 871 o Removed need for empty value elements in components. 873 o Wrapped value of , , and in value elements. 875 B.8. Changes in -02 877 o Synchronized with draft-ietf-vcarddav-vcardrev-10. 879 o Turned parameter values into plain text. 881 o Moved the "XML" property to vCard base. 883 o Changed title to avoid confusion with XML Schema. 885 o Added prefixes "value-", "param-", and "property-" in schema. 887 o Better language for specifying what a parser must ignore. 889 B.9. Changes in -01 891 o Synchronized with draft-ietf-vcarddav-vcardrev-09. 893 o Added the element to allow multiple vCards in a single 894 XML file. 896 o Created the container element. 898 o Use text value for enumeration in element. 900 o Created the "XML" vCard property. 902 o Added IANA considerations section. 904 o Added security considerations section. 906 B.10. Changes in -00 908 o Same as draft-perreault-vcarddav-vcardxml-02. 910 Author's Address 912 Simon Perreault 913 Viagenie 914 2600 boul. Laurier, suite 625 915 Quebec, QC G1V 4W1 916 Canada 918 Phone: +1 418 656 9254 919 EMail: simon.perreault@viagenie.ca 920 URI: http://www.viagenie.ca