idnits 2.17.1 draft-ietf-vcarddav-vcardxml-10.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 (May 20, 2011) is 4724 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-20 ** 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 May 20, 2011 5 Expires: November 21, 2011 7 xCard: vCard XML Representation 8 draft-ietf-vcarddav-vcardxml-10 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 November 21, 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 . . . . . . . . . . . . . . . . . . . . . . . . 11 60 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 61 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 62 10.1. Normative References . . . . . . . . . . . . . . . . . . . 12 63 10.2. Informative References . . . . . . . . . . . . . . . . . . 13 64 Appendix A. Relax NG Schema . . . . . . . . . . . . . . . . . . . 13 65 Appendix B. Change Log (to be removed by RFC Editor prior to 66 publication) . . . . . . . . . . . . . . . . . . . . 21 67 B.1. Changes in -10 . . . . . . . . . . . . . . . . . . . . . . 21 68 B.2. Changes in -09 . . . . . . . . . . . . . . . . . . . . . . 22 69 B.3. Changes in -08 . . . . . . . . . . . . . . . . . . . . . . 22 70 B.4. Changes in -07 . . . . . . . . . . . . . . . . . . . . . . 22 71 B.5. Changes in -06 . . . . . . . . . . . . . . . . . . . . . . 22 72 B.6. Changes in -05 . . . . . . . . . . . . . . . . . . . . . . 22 73 B.7. Changes in -04 . . . . . . . . . . . . . . . . . . . . . . 22 74 B.8. Changes in -03 . . . . . . . . . . . . . . . . . . . . . . 23 75 B.9. Changes in -02 . . . . . . . . . . . . . . . . . . . . . . 23 76 B.10. Changes in -01 . . . . . . . . . . . . . . . . . . . . . . 23 77 B.11. Changes in -00 . . . . . . . . . . . . . . . . . . . . . . 24 79 1. Introduction 81 vCard [I-D.ietf-vcarddav-vcardrev] is a data format for representing 82 and exchanging information about individuals and other entities. It 83 is a text-based format (as opposed to a binary format). This 84 document defines xCard, an XML [W3C.REC-xml-20081126] representation 85 for vCard. The underlying data structure is exactly the same, 86 enabling a 1-to-1 mapping between the original vCard format and the 87 XML representation. The XML formatting may be preferred in some 88 contexts where an XML engine is readily available and may be reused 89 instead of writing a stand-alone vCard parser. 91 Earlier work on an XML format for vCard was started in 1998 by Frank 92 Dawson [I-D.dawson-vcard-xml-dtd]. Sadly it did not take over the 93 world. 95 2. Conventions 97 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 98 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 99 document are to be interpreted as described in [RFC2119]. 101 3. The Schema 103 The schema is expressed in the RELAX NG language 104 [relaxng][relaxng-compact] and is found in Appendix A. 106 4. Example: Author's XML vCard 108 109 110 111 Simon Perreault 112 113 Perreault 114 Simon 115 116 117 ing. jr 118 M.Sc. 119 120 --0203 121 122 20090808T1430-0500 123 124 M 125 126 1 127 fr 128 129 130 2 131 en 132 133 134 work 135 Viagenie 136 137 138 139 work 140 144 145 146 147 2875 boul. Laurier, suite D2-630 148 Quebec 149 QC 150 G1V 2M2 151 Canada 152 153 154 155 156 work 157 voice 158 159 160 tel:+1-418-656-9254;ext=102 161 162 163 164 165 work 166 text 167 voice 168 cell 169 video 170 171 172 tel:+1-418-262-6501 173 174 175 work 176 simon.perreault@viagenie.ca 177 178 179 work 180 geo:46.766336,-71.28955 181 182 183 work 184 http://www.viagenie.ca/simon.perreault/simon.asc 185 186 America/Montreal 187 188 home 189 http://nomis80.org 190 191 192 194 5. Design Considerations 196 The general idea is to map vCard parameters, properties, and value 197 types to XML elements. For example, the "FN" property is mapped to 198 the "fn" element. That element in turn contains a text element whose 199 content corresponds to the vCard property's value. 201 vCard parameters are also mapped to XML elements. They are contained 202 in the element, which is contained in property elements. 203 For example, the "TYPE" parameter applied to the "TEL" property would 204 look like the following in XML: 206 207 208 209 voice 210 video 211 212 213 tel:+1-555-555-555 214 216 Parameters taking a list of values are simply repeated multiple 217 times, once for each value in the list. 219 Properties having structured values (e.g. the "N" property) are 220 expressed by XML element trees. Element names in that tree (e.g. 221 "surname", "given", etc.) do not have a vCard equivalent since they 222 are identified by position in plain vCard. 224 Line folding is a non-issue in XML. Therefore, the mapping from 225 vCard to XML is done after the unfolding procedure is carried out. 226 Conversely, the mapping from XML to vCard is done before the folding 227 procedure is carried out. 229 A top-level element is used as root. It contains one or 230 more element, each representing a complete vCard. The 231 element MUST be present even when only a single vCard is 232 present in an XML document. 234 The group construct (Section 3.2 in [I-D.ietf-vcarddav-vcardrev]) is 235 represented with the element. The "name" attribute contains 236 the group's name. For example: 238 239 240 241 ... 242 ... 243 244 245 ... 246 247 ... 248 249 251 is equivalent to: 253 BEGIN:VCARD 254 VERSION:4.0 255 contact.FN=... 256 contact.EMAIL=... 257 media.PHOTO=... 258 CATEGORIES=... 259 END:VCARD 261 5.1. Extensibility 263 The original vCard format is extensible. New properties, parameters, 264 data types and values (collectively known as vCard objects) can be 265 registered with IANA. It is expected that these vCard extensions 266 will also specify extensions to the XML format described in this 267 document. 269 New XML vCard property and parameter element names MUST be lower- 270 case. This is necessary to ensure that round-tripping between XML 271 and plain-text vCard works correctly. 273 Unregistered extensions (i.e. those starting with "X-" and 274 "VND-...-") are expressed in XML by using elements starting with "x-" 275 and "vnd-...-". Usage of XML namespaces [W3C.REC-xml-names-20091208] 276 for extensibility is RECOMMENDED for extensions that have no 277 equivalent in plain text vCard. Refer to Section 6 for the 278 implications when converting between plain-text vCard and XML. 280 Examples: 282 283 284 1 285 286 value goes here 287 289 291 292 1 293 294 value goes here 295 297 Note that extension elements do not need the "X- or "VND-" prefix in 298 XML. The XML namespace mechanism is sufficient. 300 A vCard XML parser MUST ignore XML elements and attributes for which 301 it doesn't recognize the expanded name. The normal behaviour of 302 ignoring XML processing instructions whose target is not recognized 303 MUST also be followed. 305 In the original vCard format, the "VERSION" property was mandatory 306 and played a role in extensibility. In XML, this property is absent. 307 Its role is played by the vCard core namespace identifier, which 308 includes the version number. vCard revisions will use a different 309 namespace. 311 Parameters containing a list of values are expressed using a list of 312 elements in XML (e.g. the element). 314 5.2. Limitations 316 The schema does not validate the cardinality of properties. This is 317 a limitation of the schema definition language. Cardinalities of the 318 original vCard format [I-D.ietf-vcarddav-vcardrev] MUST still be 319 respected. 321 Some constructs (e.g. value enumerations in type parameters) have 322 additional ordering constraints in XML. This is a result of 323 limitations of the schema definition language and the order is 324 arbitrary. The order MUST be respected in XML for the vCard to be 325 valid. However, reordering as part of conversion to or from plain 326 vCard MAY happen. 328 6. Format Conversions 330 When new properties or "X-" proeprties used, a vCard<->xCard 331 converter might not recognize them, and know what the appropriate 332 default value types are, yet they need to be able to preserve the 333 values. A similar issue arises for unrecognized property parameters. 334 As a result, the following rules are applied when dealing with 335 unrecognized properties and property parameters: 337 o When converting from vCard to xCard: 339 * Any property that does not include a "VALUE" parameter and 340 whose default value type is not know MUST be converted using 341 the value type XML element . The content of that 342 element is the unprocessed value text. 344 * Any unrecognized property parameter MUST be converted using the 345 value type XML element , with its content set to the 346 parameter value text, treated as if it were a text value, or 347 list of text values. 349 * The content of "XML" properties is copied as-is to XML. 351 * Property value escaping is undone. For example, "\n" becomes a 352 NEWLINE character (ASCII decimal 10). 354 * Double-quoting of parameter values, as well as backslash 355 escaping in parameter values, is undone. For example, 356 PARAM="\"foo\",\"bar\"" becomes "foo","bar". 358 o When converting xCard to vCard: 360 * Properties in the vCard 4 namespace: 362 + If the converter knows of a specific plain-text 363 representation for this property, it uses it. For example, 364 the element corresponds to the "ADR" property, which 365 is encoded using comma-separated lists separated by semi- 366 colons. 368 + Otherwise, the property name is taken from the element name, 369 property parameters are taken from the element, 370 and the content of the property is taken from the content of 371 the value element. If the property element has attributes 372 or contains other XML elements, they are dropped. 374 + If a standard property's XML element contains XML elements 375 and attributes for which the converter doesn't recognize the 376 expanded name, they are dropped. Therefore, it is 377 RECOMMENDED to limit extensions to the property level to 378 ensure that all data is preserved intact in round-trip 379 conversions. 381 * Properties in other namespaces are wrapped as-is inside an 382 "XML" property. 384 * Any property value XML elements are converted 385 directly into vCard values. The containing property MUST NOT 386 have a "VALUE" parameter. 388 * Any parameter value XML elements are converted as if 389 they were value type XML elements. 391 * Property value escaping (Section 3.3 of 392 [I-D.ietf-vcarddav-vcardrev]) is carried out. For example, a 393 NEWLINE character (ASCII decimal 10) becomes "\n". 395 * Double-quoting of parameter values, as well as backslash 396 escaping in parameter values, is carried out. For example, 397 "foo","bar" becomes PARAM="\"foo\",\"bar\"". 399 For example, these two vCards are equivalent: 401 402 403 404 J. Doe 405 406 Doe 407 J. 408 409 410 411 412 413 414 image/jpeg 415 416 alien.jpg 417 418 My web page! 420 421 423 BEGIN:VCARD 424 VERSION:4.0 425 FN:J. Doe 426 N:Doe;J.;; 427 X-FILE;MEDIATYPE=image/jpeg:alien.jpg 428 XML:My web page! 430 END:VCARD 432 7. Security Considerations 434 All the security considerations applicable to plain vCard 435 [I-D.ietf-vcarddav-vcardrev] are applicable to this document as well. 437 8. IANA Considerations 439 8.1. Registration of the XML Namespace 441 URI: urn:ietf:params:xml:ns:vcard-4.0 443 Registrant Contact: Simon Perreault 444 XML: None. Namespace URIs do not represent an XML specification. 446 8.2. Media Type 448 This section defines the MIME media type [RFC4288] for use with 449 vCard-in-XML data. 451 To: ietf-types@iana.org 453 Subject: Registration of media type application/vcard+xml 455 Type name: application 457 Subtype name: vcard+xml 459 Required parameters: none 461 Optional parameters: charset as defined for application/xml in 462 [RFC3023]; per [RFC3023], use of the charset parameter with the 463 value "utf-8" is "STRONGLY RECOMMENDED" 465 Encoding considerations: Same as encoding considerations of 466 application/xml as specified in [RFC3023] 468 Security considerations: This media type has all of the security 469 considerations described in [RFC3023], plus those listed in 470 Section 7. 472 Interoperability considerations: This media type provides an 473 alternative syntax to vCard data [I-D.ietf-vcarddav-vcardrev] 474 based on XML. 476 Published specification: This specification. 478 Applications which use this media type: Applications that currently 479 make use of the text/vcard media type can use this as an 480 alternative. In general, applications that maintain or process 481 contact information can use this media type. 483 Additional information: 485 Magic number(s): none 487 File extension(s): XML data should use ".xml" as the file 488 extension. 490 Macintosh file type code(s): none 492 Person & email address to contact for further information: Simon 493 Perreault 495 Intended usage: COMMON 497 Restrictions on usage: none 499 Author: Simon Perreault 501 Change controller: IETF 503 9. Acknowledgements 505 Thanks to the following people for their input: 507 Alexey Melnikov, Barry Leiba, Bjorn Hoehrmann, Cyrus Daboo, Joe 508 Hildebrand, Joseph Smarr, Marc Blanchet, Mike Douglas, Peter Saint- 509 Andre, Robins George, Zahhar Kirillov, Zoltan Ordogh. 511 10. References 513 10.1. Normative References 515 [I-D.ietf-vcarddav-vcardrev] Perreault, S., "vCard Format 516 Specification", 517 draft-ietf-vcarddav-vcardrev-20 (work 518 in progress), May 2011. 520 [RFC2119] Bradner, S., "Key words for use in RFCs 521 to Indicate Requirement Levels", 522 BCP 14, RFC 2119, March 1997. 524 [RFC3023] Murata, M., St. Laurent, S., and D. 525 Kohn, "XML Media Types", RFC 3023, 526 January 2001. 528 [W3C.REC-xml-20081126] Yergeau, F., Maler, E., Paoli, J., 529 Sperberg-McQueen, C., and T. Bray, 530 "Extensible Markup Language (XML) 1.0 531 (Fifth Edition)", World Wide Web 532 Consortium Recommendation REC-xml- 533 20081126, November 2008, . 536 [W3C.REC-xml-names-20091208] Tobin, R., Hollander, D., Thompson, H., 537 Bray, T., and A. Layman, "Namespaces in 538 XML 1.0 (Third Edition)", World Wide 539 Web Consortium Recommendation REC-xml- 540 names-20091208, December 2009, . 544 [relaxng] Clark, J., "RELAX NG Specification", 545 December 2001. 547 [relaxng-compact] Clark, J., "RELAX NG Compact Syntax", 548 November 2002, . 551 10.2. Informative References 553 [I-D.dawson-vcard-xml-dtd] Dawson, F., "The vCard v3.0 XML DTD", 554 draft-dawson-vcard-xml-dtd-03 (work in 555 progress), June 1998. 557 [RFC4288] Freed, N. and J. Klensin, "Media Type 558 Specifications and Registration 559 Procedures", BCP 13, RFC 4288, 560 December 2005. 562 Appendix A. Relax NG Schema 564 default namespace = "urn:ietf:params:xml:ns:vcard-4.0" 566 ### Section 3.3: vCard Format Specification 567 # 568 # 3.3 569 iana-token = xsd:string { pattern = "[a-zA-Z0-9-]+" } 570 x-name = xsd:string { pattern = "x-[a-zA-Z0-9-]+" } 572 ### Section 4: Value types 573 # 574 # 4.1 575 value-text = element text { text } 576 value-text-list = value-text+ 578 # 4.2 579 value-uri = element uri { xsd:anyURI } 581 # 4.3.1 582 value-date = element date { 583 xsd:string { pattern = "\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d" } 584 } 586 # 4.3.2 587 value-time = element time { 588 xsd:string { pattern = "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)" 589 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 590 } 592 # 4.3.3 593 value-date-time = element date-time { 594 xsd:string { pattern = "(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?" 595 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 596 } 598 # 4.3.4 599 value-date-and-or-time = value-date | value-date-time | value-time 601 # 4.3.5 602 value-timestamp = element timestamp { 603 xsd:string { pattern = "\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?" } 604 } 606 # 4.4 607 value-boolean = element boolean { xsd:boolean } 609 # 4.5 610 value-integer = element integer { xsd:integer } 612 # 4.6 613 value-float = element float { xsd:float } 615 # 4.7 616 value-utc-offset = element utc-offset { 617 xsd:string { pattern = "[+\-]\d\d(\d\d)?" } 618 } 620 # 4.8 621 value-language-tag = element language-tag { 622 xsd:string { pattern = "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})" 623 ~ "(-[a-z]{4})?(-([a-z]{2}|\d{3}))?" 624 ~ "(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))*" 625 ~ "(-[0-9a-wyz](-[0-9a-z]{2,8})+)*" 626 ~ "(-x(-[0-9a-z]{1,8})+)?|x(-[0-9a-z]{1,8})+|" 627 ~ "[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}" } 628 } 630 ### Section 5: Parameters 631 # 632 # 5.1 633 param-language = element language { value-language-tag }? 634 # 5.2 635 param-pref = element pref { 636 element integer { 637 xsd:integer { minInclusive = "1" maxInclusive = "100" } 638 } 639 }? 641 # 5.4 642 param-altid = element altid { value-text }? 644 # 5.5 645 param-pid = element pid { 646 element text { xsd:string { pattern = "\d+(\.\d+)?" } }+ 647 }? 649 # 5.6 650 param-type = element type { element text { "work" | "home" }+ }? 652 # 5.7 653 param-mediatype = element mediatype { value-text }? 655 # 5.8 656 param-calscale = element calscale { element text { "gregorian" } }? 658 # 5.9 659 param-sort-as = element sort-as { value-text+ }? 661 # 5.10 662 param-geo = element geo { value-uri }? 664 # 5.11 665 param-tz = element tz { value-text | value-uri }? 667 ### Section 6: Properties 668 # 669 # 6.1.3 670 property-source = element source { 671 element parameters { param-altid, param-pid, param-pref, 672 param-mediatype }, 673 value-uri 674 } 676 # 6.1.4 677 property-kind = element kind { 678 element text { "individual" | "group" | "org" | "location" | 679 x-name | iana-token }* 680 } 682 # 6.2.1 683 property-fn = element fn { 684 element parameters { param-language, param-altid, param-pid, 685 param-pref, param-type }?, 686 value-text 687 } 689 # 6.2.2 690 property-n = element n { 691 element parameters { param-language, param-sort-as, param-altid }?, 692 element surname { text }+, 693 element given { text }+, 694 element additional { text }+, 695 element prefix { text }+, 696 element suffix { text }+ 697 } 699 # 6.2.3 700 property-nickname = element nickname { 701 element parameters { param-language, param-altid, param-pid, 702 param-pref, param-type }?, 703 value-text-list 704 } 706 # 6.2.4 707 property-photo = element photo { 708 element parameters { param-altid, param-pid, param-pref, param-type, 709 param-mediatype }?, 710 value-uri 711 } 713 # 6.2.5 714 property-bday = element bday { 715 element parameters { param-altid, param-calscale }?, 716 (value-date-and-or-time | value-text) 717 } 719 # 6.2.6 720 property-anniversary = element anniversary { 721 element parameters { param-altid, param-calscale }?, 722 (value-date-and-or-time | value-text) 723 } 725 # 6.2.7 726 property-gender = element gender { 727 element sex { "" | "M" | "F" | "O" | "N" | "U" }, 728 element identity { text }? 729 } 731 # 6.3.1 732 param-label = element label { value-text }? 733 property-adr = element adr { 734 element parameters { param-language, param-altid, param-pid, 735 param-pref, param-type, param-geo, param-tz, 736 param-label }?, 737 element pobox { text }+, 738 element ext { text }+, 739 element street { text }+, 740 element locality { text }+, 741 element region { text }+, 742 element code { text }+, 743 element country { text }+ 744 } 746 # 6.4.1 747 property-tel = element tel { 748 element parameters { 749 param-altid, 750 param-pid, 751 param-pref, 752 element type { 753 element text { "work" | "home" | "text" | "voice" 754 | "fax" | "cell" | "video" | "pager" 755 | "textphone" }+ 756 }?, 757 param-mediatype 758 }?, 759 (value-text | value-uri) 760 } 762 # 6.4.2 763 property-email = element email { 764 element parameters { param-altid, param-pid, param-pref, 765 param-type }?, 766 value-text 767 } 769 # 6.4.3 770 property-impp = element impp { 771 element parameters { param-altid, param-pid, param-pref, 772 param-type, param-mediatype }?, 773 value-uri 774 } 776 # 6.4.4 777 property-lang = element lang { 778 element parameters { param-altid, param-pid, param-pref, 779 param-type }?, 780 value-language-tag 781 } 783 # 6.5.1 784 property-tz = element tz { 785 element parameters { param-altid, param-pid, param-pref, 786 param-type, param-mediatype }?, 787 (value-text | value-uri | value-utc-offset) 788 } 790 # 6.5.2 791 property-geo = element geo { 792 element parameters { param-altid, param-pid, param-pref, 793 param-type, param-mediatype }?, 794 value-uri 795 } 797 # 6.6.1 798 property-title = element title { 799 element parameters { param-language, param-altid, param-pid, 800 param-pref, param-type }?, 801 value-text 802 } 804 # 6.6.2 805 property-role = element role { 806 element parameters { param-language, param-altid, param-pid, 807 param-pref, param-type }?, 808 value-text 809 } 811 # 6.6.3 812 property-logo = element logo { 813 element parameters { param-language, param-altid, param-pid, 814 param-pref, param-type, param-mediatype }?, 815 value-uri 816 } 818 # 6.6.4 819 property-org = element org { 820 element parameters { param-language, param-altid, param-pid, 821 param-pref, param-type, param-sort-as }?, 822 value-text-list 823 } 825 # 6.6.5 826 property-member = element member { 827 element parameters { param-altid, param-pid, param-pref, 828 param-mediatype }?, 829 value-uri 830 } 832 # 6.6.6 833 property-related = element related { 834 element parameters { 835 param-altid, 836 param-pid, 837 param-pref, 838 element type { 839 element text { 840 "work" | "home" | "contact" | "acquaintance" | 841 "friend" | "met" | "co-worker" | "colleague" | "co-resident" | 842 "neighbor" | "child" | "parent" | "sibling" | "spouse" | 843 "kin" | "muse" | "crush" | "date" | "sweetheart" | "me" | 844 "agent" | "emergency" 845 }+ 846 }?, 847 param-mediatype 848 }?, 849 (value-uri | value-text) 850 } 852 # 6.7.1 853 property-categories = element categories { 854 element parameters { param-altid, param-pid, param-pref, 855 param-type }?, 856 value-text-list 857 } 859 # 6.7.2 860 property-note = element note { 861 element parameters { param-language, param-altid, param-pid, 862 param-pref, param-type }?, 863 value-text 864 } 866 # 6.7.3 867 property-prodid = element prodid { value-text } 869 # 6.7.4 870 property-rev = element rev { value-timestamp } 872 # 6.7.5 873 property-sound = element sound { 874 element parameters { param-language, param-altid, param-pid, 875 param-pref, param-type, param-mediatype }?, 876 value-uri 877 } 879 # 6.7.6 880 property-uid = element uid { value-uri } 882 # 6.7.7 883 property-clientpidmap = element clientpidmap { 884 element sourceid { xsd:positiveInteger }, 885 value-uri 886 } 888 # 6.7.8 889 property-url = element url { 890 element parameters { param-altid, param-pid, param-pref, 891 param-type, param-mediatype }?, 892 value-uri 893 } 895 # 6.8.1 896 property-key = element key { 897 element parameters { param-altid, param-pid, param-pref, 898 param-type, param-mediatype }?, 899 (value-uri | value-text) 900 } 902 # 6.9.1 903 property-fburl = element fburl { 904 element parameters { param-altid, param-pid, param-pref, 905 param-type, param-mediatype }?, 906 value-uri 907 } 909 # 6.9.2 910 property-caladruri = element caladruri { 911 element parameters { param-altid, param-pid, param-pref, 912 param-type, param-mediatype }?, 913 value-uri 914 } 916 # 6.9.3 917 property-caluri = element caluri { 918 element parameters { param-altid, param-pid, param-pref, 919 param-type, param-mediatype }?, 920 value-uri 921 } 923 # Top-level grammar 924 property = property-adr | property-anniversary | property-bday 925 | property-caladruri | property-caluri | property-categories 926 | property-clientpidmap | property-email | property-fburl 927 | property-fn | property-geo | property-impp | property-key 928 | property-kind | property-lang | property-logo 929 | property-member | property-n | property-nickname 930 | property-note | property-org | property-photo 931 | property-prodid | property-related | property-rev 932 | property-role | property-gender | property-sound 933 | property-source | property-tel | property-title 934 | property-tz | property-uid | property-url 935 start = element vcards { 936 element vcard { 937 (property 938 | element group { 939 attribute name { text }, 940 property* 941 })+ 942 }+ 943 } 945 Appendix B. Change Log (to be removed by RFC Editor prior to 946 publication) 948 B.1. Changes in -10 950 o Fixed bugs in examples. 952 o New XML elements MUST be lower-case. 954 o Adjusted case conversion rules for unknown parameters. 956 o Added utc-offset as possible value type to tz property. 958 o Added "agent" and "emergency" related values. 960 o Added x-name and iana-token in kind values. 962 o Added cross-references to vcardrev sections. 964 o Add element for round-tripping. 966 o Tweak sex grammar. 968 o "Structured" properties don't need elements. 970 o Fixed wrong example. 972 B.2. Changes in -09 974 o Added "Conventions" section with reference to RFC2119. 976 o Fixed bad XML in example. 978 o Updated MIME type registration following feedback from 979 ietf-types@iana.org. 981 B.3. Changes in -08 983 o Synchronized with draft-ietf-vcarddav-vcardrev-17. 985 o Added some references. 987 o Fixed bad XML in example. 989 o Added element around pid param value. 991 B.4. Changes in -07 993 o Synchronized with draft-ietf-vcarddav-vcardrev-16. 995 o Fixed bad XML in example. 997 o Fixed which now takes a value-text-list. 999 o All parameters now use value elements. This affects type, 1000 calscale, and pref. 1002 B.5. Changes in -06 1004 o Synchronized with draft-ietf-vcarddav-vcardrev-15. 1006 B.6. Changes in -05 1008 o Synchronized with draft-ietf-vcarddav-vcardrev-13. 1010 B.7. Changes in -04 1012 o Synchronized with draft-ietf-vcarddav-vcardrev-12. 1014 o Added application/vcard+xml media type. 1016 o Added rules for backslash escaping and quoting when converting. 1018 o Added description of element. 1020 o Described group construct in XML. 1022 B.8. Changes in -03 1024 o Created "Format Conversions" section. 1026 o Turned more parameter values into plain text. 1028 o Removed need for empty value elements in components. 1030 o Wrapped value of , , and in value elements. 1032 B.9. Changes in -02 1034 o Synchronized with draft-ietf-vcarddav-vcardrev-10. 1036 o Turned parameter values into plain text. 1038 o Moved the "XML" property to vCard base. 1040 o Changed title to avoid confusion with XML Schema. 1042 o Added prefixes "value-", "param-", and "property-" in schema. 1044 o Better language for specifying what a parser must ignore. 1046 B.10. Changes in -01 1048 o Synchronized with draft-ietf-vcarddav-vcardrev-09. 1050 o Added the element to allow multiple vCards in a single 1051 XML file. 1053 o Created the container element. 1055 o Use text value for enumeration in element. 1057 o Created the "XML" vCard property. 1059 o Added IANA considerations section. 1061 o Added security considerations section. 1063 B.11. Changes in -00 1065 o Same as draft-perreault-vcarddav-vcardxml-02. 1067 Author's Address 1069 Simon Perreault 1070 Viagenie 1071 2600 boul. Laurier, suite 625 1072 Quebec, QC G1V 4W1 1073 Canada 1075 Phone: +1 418 656 9254 1076 EMail: simon.perreault@viagenie.ca 1077 URI: http://www.viagenie.ca