idnits 2.17.1 draft-ietf-vcarddav-vcardxml-08.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Sep 2009 rather than the newer Notice from 28 Dec 2009. (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 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 223: '... element MUST be present even ...' RFC 2119 keyword, line 264: '... RECOMMENDED for extensions that hav...' RFC 2119 keyword, line 287: '...vCard XML parser MUST ignore XML eleme...' RFC 2119 keyword, line 290: '... MUST also be followed....' RFC 2119 keyword, line 305: '... original vCard format [I-D.ietf-vcarddav-vcardrev] MUST still be...' (3 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (April 6, 2011) is 4768 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) == Unused Reference: 'RFC4288' is defined on line 518, but no explicit reference was found in the text == Outdated reference: A later version (-22) exists of draft-ietf-vcarddav-vcardrev-17 -- Obsolete informational reference (is this intentional?): RFC 4288 (Obsoleted by RFC 6838) Summary: 2 errors (**), 0 flaws (~~), 3 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 6, 2011 5 Expires: October 8, 2011 7 vCard XML Representation 8 draft-ietf-vcarddav-vcardxml-08 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 to IETF 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), its areas, and its working groups. Note that 21 other groups may also distribute working documents as Internet- 22 Drafts. 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 The list of current Internet-Drafts can be accessed at 30 http://www.ietf.org/ietf/1id-abstracts.txt. 32 The list of Internet-Draft Shadow Directories can be accessed at 33 http://www.ietf.org/shadow.html. 35 This Internet-Draft will expire on October 8, 2011. 37 Copyright Notice 39 Copyright (c) 2011 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 55 2. The Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 3 56 3. Example: Author's XML vCard . . . . . . . . . . . . . . . . . 3 57 4. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 58 4.1. Extensibility . . . . . . . . . . . . . . . . . . . . . . 6 59 4.2. Limitations . . . . . . . . . . . . . . . . . . . . . . . 7 60 5. Format Conversions . . . . . . . . . . . . . . . . . . . . . . 8 61 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 62 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 63 7.1. Registration of the XML Namespace . . . . . . . . . . . . 10 64 7.2. Media Type . . . . . . . . . . . . . . . . . . . . . . . . 10 65 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11 66 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 67 9.1. Normative References . . . . . . . . . . . . . . . . . . . 11 68 9.2. Informative References . . . . . . . . . . . . . . . . . . 12 69 Appendix A. Relax NG Schema . . . . . . . . . . . . . . . . . . . 12 70 Appendix B. Change Log (to be removed by RFC Editor prior to 71 publication) . . . . . . . . . . . . . . . . . . . . 17 72 B.1. Changes in -08 . . . . . . . . . . . . . . . . . . . . . . 17 73 B.2. Changes in -07 . . . . . . . . . . . . . . . . . . . . . . 18 74 B.3. Changes in -06 . . . . . . . . . . . . . . . . . . . . . . 18 75 B.4. Changes in -05 . . . . . . . . . . . . . . . . . . . . . . 18 76 B.5. Changes in -04 . . . . . . . . . . . . . . . . . . . . . . 18 77 B.6. Changes in -03 . . . . . . . . . . . . . . . . . . . . . . 18 78 B.7. Changes in -02 . . . . . . . . . . . . . . . . . . . . . . 19 79 B.8. Changes in -01 . . . . . . . . . . . . . . . . . . . . . . 19 80 B.9. Changes in -00 . . . . . . . . . . . . . . . . . . . . . . 19 82 1. Introduction 84 vCard [I-D.ietf-vcarddav-vcardrev] is a data format for representing 85 and exchanging information about individuals and other entities. It 86 is a text-based format (as opposed to a binary format). This 87 document defines an XML representation for vCard. The underlying 88 data structure is exactly the same, enabling a 1-to-1 mapping between 89 the original vCard format and the XML representation. The XML 90 formatting may be preferred in some contexts where an XML engine is 91 readily available and may be reused instead of writing a stand-alone 92 vCard parser. 94 Earlier work on an XML format for vCard was started in 1998 by Frank 95 Dawson [I-D.dawson-vcard-xml-dtd]. Sadly it did not take over the 96 world. 98 2. The Schema 100 The schema is expressed in the RELAX NG language 101 [relaxng][relaxng-compact] and is found in Appendix A. 103 3. Example: Author's XML vCard 105 106 107 108 Simon Perreault 109 110 Perreault 111 Simon 112 113 114 115 ing. jr. 116 M.Sc. 117 118 119 --0203 120 121 20090808T1430-0500 122 123 M 124 125 1 126 fr 127 128 129 2 130 en 131 132 133 work 134 Viagenie 135 136 137 138 work 139 141 142 143 144 2875 boul. Laurier, suite D2-630 145 Quebec 146 QC 147 G1V 2M2 148 Canada 149 150 151 152 153 work 154 voice 155 156 157 tel:+1-418-656-9254;ext=102 158 159 160 161 162 work 163 text 164 voice 165 cell 166 video 167 168 169 tel:+1-418-262-6501 170 171 172 work 173 simon.perreault@viagenie.ca 174 175 176 work 177 geo:46.766336,-71.28955 179 180 181 work 182 http://www.viagenie.ca/simon.perreault/simon.asc 183 184 America/Montreal 185 186 188 4. Design Considerations 190 The general idea is to map vCard parameters, properties, and value 191 types to XML elements. For example, the "FN" property is mapped to 192 the "fn" element. That element in turn contains a text element whose 193 content corresponds to the vCard property's value. 195 vCard parameters are also mapped to XML elements. They are contained 196 in the element, which is contained in property elements. 197 For example, the "TYPE" parameter applied to the "TEL" property would 198 look like the following in XML: 200 201 202 voice 203 video 204 205 tel:+1-555-555-555 206 208 Parameters taking a list of values are simply repeated multiple 209 times, once for each value in the list. 211 Properties having structured values (e.g. the "N" property) are 212 expressed by XML element trees. Element names in that tree (e.g. 213 "surname", "given", etc.) do not have a vCard equivalent since they 214 are identified by position in plain vCard. 216 Line folding is a non-issue in XML. Therefore, the mapping from 217 vCard to XML is done after the unfolding procedure is carried out. 218 Conversely, the mapping from XML to vCard is done before the folding 219 procedure is carried out. 221 A top-level element is used as root. It contains one or 222 more element, each representing a complete vCard. The 223 element MUST be present even when only a single vCard is 224 present in an XML document. 226 The group construct (Section 3.2 in [I-D.ietf-vcarddav-vcardrev]) is 227 represented with the element. The "name" attribute contains 228 the group's name. For example: 230 231 232 233 ... 234 ... 235 236 237 ... 238 239 ... 240 241 243 is equivalent to: 245 BEGIN:VCARD 246 VERSION:4.0 247 contact.FN=... 248 contact.EMAIL=... 249 media.PHOTO=... 250 CATEGORIES=... 251 END:VCARD 253 4.1. Extensibility 255 The original vCard format is extensible. New properties, parameters, 256 data types and values (collectively known as vCard objects) can be 257 registered with IANA. It is expected that these vCard extensions 258 will also specify extensions to the XML format described in this 259 document. 261 Unregistered extensions (i.e. those starting with "X-" and 262 "VND-...-") are expressed in XML by using elements starting with "x-" 263 and "vnd-...-". Usage of XML namespaces for extensibility is 264 RECOMMENDED for extensions that have no equivalent in plain text 265 vCard. Refer to Section 5 for the implications when converting 266 between plain-text vCard and XML. 268 Examples: 270 271 272 1 273 value goes here 274 276 278 279 1 280 281 value goes here 282 284 Note that extension elements do not need the "X- or "VND-" prefix in 285 XML. The XML namespace mechanism is sufficient. 287 A vCard XML parser MUST ignore XML elements and attributes for which 288 it doesn't recognize the expanded name. The normal behaviour of 289 ignoring XML processing instructions whose target is not recognized 290 MUST also be followed. 292 In the original vCard format, the "VERSION" property was mandatory 293 and played a role in extensibility. In XML, this property is absent. 294 Its role is played by the vCard core namespace identifier, which 295 includes the version number. vCard revisions will use a different 296 namespace. 298 Parameters containing a list of values are expressed using a list of 299 elements in XML (e.g. the element). 301 4.2. Limitations 303 The schema does not validate the cardinality of properties. This is 304 a limitation of the schema definition language. Cardinalities of the 305 original vCard format [I-D.ietf-vcarddav-vcardrev] MUST still be 306 respected. 308 Some constructs (e.g. value enumerations in type parameters) have 309 additional ordering constraints in XML. This is a result of 310 limitations of the schema definition language and the order is 311 arbitrary. The order MUST be respected in XML for the vCard to be 312 valid. However, reordering as part of conversion to or from plain 313 vCard MAY happen. 315 5. Format Conversions 317 When converting from XML vCard (this specification) to plain-text 318 vCard [I-D.ietf-vcarddav-vcardrev], the following rules apply: 320 o Properties in the vCard 4 namespace: 322 * If the converter knows of a specific plain-text representation 323 for this property, it uses it. For example, the element 324 corresponds to the "ADR" property, which is encoded using 325 comma-separated lists separated by semi-colons. 327 * Otherwise, the property name is taken from the element name, 328 property parameters are taken from the element, 329 and the content of the property is taken from the content of 330 the value element. If the property element has attributes or 331 contains other XML elements, they are dropped. 333 * If a standard property's XML element contains XML elements and 334 attributes for which the converter doesn't recognize the 335 expanded name, they are dropped. Therefore, it is RECOMMENDED 336 to limit extensions to the property level to ensure that all 337 data is preserved intact in round-trip conversions. 339 o Properties in other namespaces are wrapped as-is inside an "XML" 340 property. 342 o Property value escaping (Section 3.3 of 343 [I-D.ietf-vcarddav-vcardrev]) is carried out. For example, a 344 NEWLINE character (ASCII decimal 10) becomes "\n". 346 o Double-quoting of parameter values, as well as backslash escaping 347 in parameter values, is carried out. For example, 348 "foo","bar" becomes PARAM="\"foo\",\"bar\"". 350 When converting from plain-text vCard [I-D.ietf-vcarddav-vcardrev] to 351 XML vCard (this specification), the following rules apply: 353 o The content of "XML" properties is copied as-is to XML. 355 o Properties for which the converter knows of a specific XML 356 representation use it. For example, the "ADR" property is 357 represented using the element and related sub-elements. 359 o Other properties are converted to XML in the following way: 361 * The XML namespace of the property element is set to the vCard 4 362 namespace. 364 * The name of the property element is set to the lowercased name 365 of the property. 367 * If the property has parameters, they get translated as-is 368 (without lowercasing of parameter names, removal of backslash 369 escaping, and removal of quoting) into sub-elements of the 370 element 372 * The property element contains a single element whose 373 content is copied as-is from the property's value. 375 o Property value escaping is undone. For example, "\n" becomes a 376 NEWLINE character (ASCII decimal 10). 378 o Double-quoting of parameter values, as well as backslash escaping 379 in parameter values, is undone. For example, 380 PARAM="\"foo\",\"bar\"" becomes "foo","bar". 382 For example, these two vCards are equivalent: 384 385 386 387 J. Doe 388 389 Doe 390 J. 391 392 393 394 395 396 image/jpeg 397 alien.jpg 398 399 My web page! 401 402 404 BEGIN:VCARD 405 VERSION:4.0 406 FN:J. Doe 407 N:Doe;J.;; 408 X-FILE;TYPE=image/jpeg:alien.jpg 409 XML:My web page! 412 END:VCARD 414 6. Security Considerations 416 All the security considerations applicable to plain vCard 417 [I-D.ietf-vcarddav-vcardrev] are applicable to this document as well. 419 7. IANA Considerations 421 7.1. Registration of the XML Namespace 423 URI: urn:ietf:params:xml:ns:vcard-4.0 425 Registrant Contact: Simon Perreault 427 XML: None. Namespace URIs do not represent an XML specification. 429 7.2. Media Type 431 This section defines the MIME media type for use with vCard-in-XML 432 data. 434 To: ietf-types@iana.org 436 Subject: Registration of media type application/vcard+xml 438 Type name: application 440 Subtype name: vcard+xml 442 Required parameters: none 444 Optional parameters: none 446 Encoding considerations: Same as for application/xml. 448 Security considerations: See Section 6. 450 Interoperability considerations: This media type provides an 451 alternative syntax to vCard data [I-D.ietf-vcarddav-vcardrev] 452 based on XML. 454 Published specification: This specification. 456 Applications which use this media type: Applications that currently 457 make use of the text/vcard media type can use this as an 458 alternative. 460 Additional information: 462 Magic number(s): none 464 File extension(s): XML data should use ".xml" as the file 465 extension. 467 Macintosh file type code(s): none 469 Person & email address to contact for further information: Simon 470 Perreault 472 Intended usage: COMMON 474 Restrictions on usage: none 476 Author: Simon Perreault 478 Change controller: IETF 480 8. Acknowledgements 482 Thanks to the following people for their input: 484 Alexey Melnikov, Barry Leiba, Cyrus Daboo, Joe Hildebrand, Joseph 485 Smarr, Marc Blanchet, Peter Saint-Andre, Robins George, Zahhar 486 Kirillov, Zoltan Ordogh. 488 9. References 490 9.1. Normative References 492 [I-D.ietf-vcarddav-vcardrev] Perreault, S., "vCard Format 493 Specification", 494 draft-ietf-vcarddav-vcardrev-17 (work 495 in progress), April 2011. 497 [W3C.REC-xml-20081126] Yergeau, F., Maler, E., Paoli, J., 498 Sperberg-McQueen, C., and T. Bray, 499 "Extensible Markup Language (XML) 1.0 500 (Fifth Edition)", World Wide Web 501 Consortium Recommendation REC-xml- 502 20081126, November 2008, . 505 [relaxng] Clark, J., "RELAX NG Specification", 506 December 2001. 508 [relaxng-compact] Clark, J., "RELAX NG Compact Syntax", 509 November 2002, . 512 9.2. Informative References 514 [I-D.dawson-vcard-xml-dtd] Dawson, F., "The vCard v3.0 XML DTD", 515 draft-dawson-vcard-xml-dtd-03 (work in 516 progress), June 1998. 518 [RFC4288] Freed, N. and J. Klensin, "Media Type 519 Specifications and Registration 520 Procedures", BCP 13, RFC 4288, 521 December 2005. 523 Appendix A. Relax NG Schema 525 default namespace = "urn:ietf:params:xml:ns:vcard-4.0" 527 # Value types 528 value-text = element text { text } 529 value-text-list = value-text+ 530 value-uri = element uri { xsd:anyURI } 531 value-date = element date { 532 xsd:string { pattern = "\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d" } 533 } 534 value-time = element time { 535 xsd:string { pattern = "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)" 536 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 537 } 538 value-date-time = element date-time { 539 xsd:string { pattern = "(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?" 540 ~ "(Z|[+\-]\d\d(\d\d)?)?" } 541 } 542 value-date-and-or-time = value-date | value-date-time | value-time 543 value-timestamp = element timestamp { 544 xsd:string { pattern = "\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?" } 545 } 546 value-boolean = element boolean { xsd:boolean } 547 value-integer = element integer { xsd:integer } 548 value-float = element float { xsd:float } 549 value-language-tag = element language-tag { 550 xsd:string { pattern = "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})" 551 ~ "(-[a-z]{4})?(-([a-z]{2}|\d{3}))?" 552 ~ "(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))*" 553 ~ "(-[0-9a-wyz](-[0-9a-z]{2,8})+)*" 554 ~ "(-x(-[0-9a-z]{1,8})+)?|x(-[0-9a-z]{1,8})+|" 555 ~ "[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}" } 557 } 559 # Parameters 560 param-language = element language { value-language-tag }? 561 param-pref = element pref { 562 element integer { 563 xsd:integer { minInclusive = "1" maxInclusive = "100" } 564 } 565 }? 566 param-altid = element altid { value-text }? 567 param-pid = element pid { 568 element text { xsd:string { pattern = "\d+(\.\d+)?" } }+ 569 }? 570 param-type = element type { element text { "work" | "home" }+ }? 571 param-mediatype = element mediatype { value-text }? 572 param-calscale = element calscale { element text { "gregorian" } }? 573 param-sort-as = element sort-as { value-text+ }? 574 param-geo = element geo { value-uri }? 575 param-tz = element tz { value-text | value-uri }? 576 param-label = element label { value-text }? 578 # Properties 579 property-source = element source { 580 element parameters { param-altid, param-pid, param-pref, 581 param-mediatype }, 582 value-uri 583 } 584 property-kind = element kind { 585 element text { "individual" | "group" | "org" | "location" }* 586 } 587 property-fn = element fn { 588 element parameters { param-language, param-altid, param-pid, 589 param-pref, param-type }?, 590 value-text 591 } 592 property-n = element n { 593 element parameters { param-language, param-sort-as, param-altid }?, 594 element surname { value-text-list? }, 595 element given { value-text-list? }, 596 element additional { value-text-list? }, 597 element prefix { value-text-list? }, 598 element suffix { value-text-list? } 599 } 600 property-nickname = element nickname { 601 element parameters { param-language, param-altid, param-pid, 602 param-pref, param-type }?, 603 value-text-list 604 } 606 property-photo = element photo { 607 element parameters { param-altid, param-pid, param-pref, param-type, 608 param-mediatype }?, 609 value-uri 610 } 611 property-bday = element bday { 612 element parameters { param-altid, param-calscale }?, 613 (value-date-and-or-time | value-text) 614 } 615 property-anniversary = element anniversary { 616 element parameters { param-altid, param-calscale }?, 617 (value-date-and-or-time | value-text) 618 } 619 property-gender = element gender { 620 element sex { 621 element text { "M" | "F" | "O" | "N" | "U" }? 622 }, 623 element identity { value-text-list? } 624 } 625 property-adr = element adr { 626 element parameters { param-language, param-altid, param-pid, 627 param-pref, param-type, param-geo, param-tz, 628 param-label }?, 629 element pobox { value-text-list? }, 630 element ext { value-text-list? }, 631 element street { value-text-list? }, 632 element locality { value-text-list? }, 633 element region { value-text-list? }, 634 element code { value-text-list? }, 635 element country { value-text-list? } 636 } 637 property-tel = element tel { 638 element parameters { 639 param-altid, 640 param-pid, 641 param-pref, 642 element type { 643 element text { "work" | "home" | "text" | "voice" 644 | "fax" | "cell" | "video" | "pager" 645 | "textphone" }+ 646 }?, 647 param-mediatype 648 }?, 649 (value-text | value-uri) 650 } 651 property-email = element email { 652 element parameters { param-altid, param-pid, param-pref, 653 param-type }?, 655 value-text 656 } 657 property-impp = element impp { 658 element parameters { param-altid, param-pid, param-pref, 659 param-type, param-mediatype }?, 660 value-uri 661 } 662 property-lang = element lang { 663 element parameters { param-altid, param-pid, param-pref, 664 param-type }?, 665 value-language-tag 666 } 667 property-tz = element tz { 668 element parameters { param-altid, param-pid, param-pref, 669 param-type, param-mediatype }?, 670 (value-text | value-uri) 671 } 672 property-geo = element geo { 673 element parameters { param-altid, param-pid, param-pref, 674 param-type, param-mediatype }?, 675 value-uri 676 } 677 property-title = element title { 678 element parameters { param-language, param-altid, param-pid, 679 param-pref, param-type }?, 680 value-text 681 } 682 property-role = element role { 683 element parameters { param-language, param-altid, param-pid, 684 param-pref, param-type }?, 685 value-text 686 } 687 property-logo = element logo { 688 element parameters { param-language, param-altid, param-pid, 689 param-pref, param-type, param-mediatype }?, 690 value-uri 691 } 692 property-org = element org { 693 element parameters { param-language, param-altid, param-pid, 694 param-pref, param-type, param-sort-as }?, 695 value-text-list 696 } 697 property-member = element member { 698 element parameters { param-altid, param-pid, param-pref, 699 param-mediatype }?, 700 value-uri 701 } 702 property-related = element related { 703 element parameters { 704 param-altid, 705 param-pid, 706 param-pref, 707 element type { 708 element text { 709 "work" | "home" | "contact" | "acquaintance" | 710 "friend" | "met" | "co-worker" | "colleague" | "co-resident" | 711 "neighbor" | "child" | "parent" | "sibling" | "spouse" | 712 "kin" | "muse" | "crush" | "date" | "sweetheart" | "me" 713 }+ 714 }?, 715 param-mediatype 716 }?, 717 (value-uri | value-text) 718 } 719 property-categories = element categories { 720 element parameters { param-altid, param-pid, param-pref, 721 param-type }?, 722 value-text-list 723 } 724 property-note = element note { 725 element parameters { param-language, param-altid, param-pid, 726 param-pref, param-type }?, 727 value-text 728 } 729 property-prodid = element prodid { value-text } 730 property-rev = element rev { value-timestamp } 731 property-sound = element sound { 732 element parameters { param-language, param-altid, param-pid, 733 param-pref, param-type, param-mediatype }?, 734 value-uri 735 } 736 property-uid = element uid { value-uri } 737 property-clientpidmap = element clientpidmap { 738 element sourceid { xsd:positiveInteger }, 739 value-uri 740 } 741 property-url = element url { 742 element parameters { param-altid, param-pid, param-pref, 743 param-type, param-mediatype }?, 744 value-uri 745 } 746 property-key = element key { 747 element parameters { param-altid, param-pid, param-pref, 748 param-type, param-mediatype }?, 749 (value-uri | value-text) 750 } 752 property-fburl = element fburl { 753 element parameters { param-altid, param-pid, param-pref, 754 param-type, param-mediatype }?, 755 value-uri 756 } 757 property-caladruri = element caladruri { 758 element parameters { param-altid, param-pid, param-pref, 759 param-type, param-mediatype }?, 760 value-uri 761 } 762 property-caluri = element caluri { 763 element parameters { param-altid, param-pid, param-pref, 764 param-type, param-mediatype }?, 765 value-uri 766 } 768 # Top-level grammar 769 property = property-adr | property-anniversary | property-bday 770 | property-caladruri | property-caluri | property-categories 771 | property-clientpidmap | property-email | property-fburl 772 | property-fn | property-geo | property-impp | property-key 773 | property-kind | property-lang | property-logo 774 | property-member | property-n | property-nickname 775 | property-note | property-org | property-photo 776 | property-prodid | property-related | property-rev 777 | property-role | property-gender | property-sound 778 | property-source | property-tel | property-title 779 | property-tz | property-uid | property-url 780 start = element vcards { 781 element vcard { 782 (property 783 | element group { 784 attribute name { text }, 785 property* 786 })+ 787 }+ 788 } 790 Appendix B. Change Log (to be removed by RFC Editor prior to 791 publication) 793 B.1. Changes in -08 795 o Synchronized with draft-ietf-vcarddav-vcardrev-17. 797 o Added some references. 799 o Fixed bad XML in example. 801 o Added element around pid param value. 803 B.2. Changes in -07 805 o Synchronized with draft-ietf-vcarddav-vcardrev-16. 807 o Fixed bad XML in example. 809 o Fixed which now takes a value-text-list. 811 o All parameters now use value elements. This affects type, 812 calscale, and pref. 814 B.3. Changes in -06 816 o Synchronized with draft-ietf-vcarddav-vcardrev-15. 818 B.4. Changes in -05 820 o Synchronized with draft-ietf-vcarddav-vcardrev-13. 822 B.5. Changes in -04 824 o Synchronized with draft-ietf-vcarddav-vcardrev-12. 826 o Added application/vcard+xml media type. 828 o Added rules for backslash escaping and quoting when converting. 830 o Added description of element. 832 o Described group construct in XML. 834 B.6. Changes in -03 836 o Created "Format Conversions" section. 838 o Turned more parameter values into plain text. 840 o Removed need for empty value elements in components. 842 o Wrapped value of , , and in value elements. 844 B.7. Changes in -02 846 o Synchronized with draft-ietf-vcarddav-vcardrev-10. 848 o Turned parameter values into plain text. 850 o Moved the "XML" property to vCard base. 852 o Changed title to avoid confusion with XML Schema. 854 o Added prefixes "value-", "param-", and "property-" in schema. 856 o Better language for specifying what a parser must ignore. 858 B.8. Changes in -01 860 o Synchronized with draft-ietf-vcarddav-vcardrev-09. 862 o Added the element to allow multiple vCards in a single 863 XML file. 865 o Created the container element. 867 o Use text value for enumeration in element. 869 o Created the "XML" vCard property. 871 o Added IANA considerations section. 873 o Added security considerations section. 875 B.9. Changes in -00 877 o Same as draft-perreault-vcarddav-vcardxml-02. 879 Author's Address 881 Simon Perreault 882 Viagenie 883 2600 boul. Laurier, suite 625 884 Quebec, QC G1V 4W1 885 Canada 887 Phone: +1 418 656 9254 888 EMail: simon.perreault@viagenie.ca 889 URI: http://www.viagenie.ca