7Internet Engineering Task Force (IETF) C. Daboo
8Request for Comments: 6321 Apple, Inc.
9Category: Standards Track M. Douglass
16 xCal: The XML Format for iCalendar
20 This specification defines "xCal", an XML format for iCalendar data.
24 This is an Internet Standards Track document.
26 This document is a product of the Internet Engineering Task Force
27 (IETF). It represents the consensus of the IETF community. It has
28 received public review and has been approved for publication by the
29 Internet Engineering Steering Group (IESG). Further information on
30 Internet Standards is available in Section 2 of RFC 5741.
32 Information about the current status of this document, any errata,
33 and how to provide feedback on it may be obtained at
34 http://www.rfc-editor.org/info/rfc6321.
38 Copyright (c) 2011 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
43 (http://trustee.ietf.org/license-info) in effect on the date of
44 publication of this document. Please review these documents
45 carefully, as they describe your rights and restrictions with respect
46 to this document. Code Components extracted from this document must
47 include Simplified BSD License text as described in Section 4.e of
48 the Trust Legal Provisions and are provided without warranty as
49 described in the Simplified BSD License.
58Daboo, et al. Standards Track [Page 1]
60RFC 6321 xCal August 2011
65 1. Introduction ....................................................3
66 2. Conventions Used in This Document ...............................4
67 3. Converting from iCalendar to xCal ...............................4
68 3.1. Pre-Processing .............................................4
69 3.2. iCalendar Stream (RFC 5545, Section 3.4) ...................5
70 3.3. Components (RFC 5545, Section 3.6) .........................6
71 3.4. Properties (RFC 5545, Sections 3.7 and 3.8) ................6
72 3.4.1. Special Cases for Properties ........................8
73 3.4.1.1. Multi-Valued Properties ....................8
74 3.4.1.2. GEO Property ...............................9
75 3.4.1.3. REQUEST-STATUS Property ....................9
76 3.5. Parameters (RFC 5545, Section 3.2) ........................10
77 3.5.1. VALUE Parameter ....................................11
78 3.6. Values (RFC 5545, Section 3.3) ............................11
79 3.6.1. Binary (RFC 5545, Section 3.3.1) ...................12
80 3.6.2. Boolean (RFC 5545, Section 3.3.2) .................12
81 3.6.3. Calendar User Address (RFC 5545, Section 3.3.3) ....12
82 3.6.4. Date (RFC 5545, Section 3.3.4) .....................12
83 3.6.5. Date-Time (RFC 5545, Section 3.3.5) ................13
84 3.6.6. Duration (RFC 5545, Section 3.3.6) .................13
85 3.6.7. Float (RFC 5545, Section 3.3.7) ....................13
86 3.6.8. Integer (RFC 5545, Section 3.3.8) ..................14
87 3.6.9. Period of Time (RFC 5545, Section 3.3.9) ...........14
88 3.6.10. Recurrence Rule (RFC 5545, Section 3.3.10) ........14
89 3.6.11. Text (RFC 5545, Section 3.3.11) ...................15
90 3.6.12. Time (RFC 5545, Section 3.3.12) ...................15
91 3.6.13. URI (RFC 5545, Section 3.3.13) ....................15
92 3.6.14. UTC Offset (RFC 5545, Section 3.3.14) .............16
93 3.7. Extensions ................................................16
94 4. Converting from xCal into iCalendar ............................16
95 4.1. Converting XML Extensions into iCalendar ..................16
96 4.2. The XML Property for iCalendar ............................17
97 5. Handling Unrecognized Properties or Parameters .................18
98 6. Security Considerations ........................................19
99 7. IANA Considerations ............................................20
100 7.1. Namespace Registration ....................................20
101 7.2. Media Type ................................................20
102 7.3. iCalendar Property Registrations ..........................21
103 8. Acknowledgments ................................................22
104 9. References .....................................................22
105 9.1. Normative References ......................................22
106 9.2. Informative References ....................................22
114Daboo, et al. Standards Track [Page 2]
116RFC 6321 xCal August 2011
119 Appendix A. RELAX NG Schema .......................................23
120 Appendix B. Examples ..............................................49
121 B.1. Example 1 ..................................................49
122 B.1.1. iCalendar Data .........................................49
123 B.1.2. XML Data ...............................................49
124 B.2. Example 2 ..................................................50
125 B.2.1. iCalendar Data .........................................50
126 B.2.2. XML Data ...............................................51
130 The iCalendar data format [RFC5545] is a widely deployed interchange
131 format for calendaring and scheduling data. While many applications
132 and services consume and generate calendar data, iCalendar is a
133 specialized format that requires its own parser/generator. In
134 contrast, XML-based formats are widely used for interoperability
135 between applications, and the many tools that generate, parse, and
136 manipulate XML make it easier to work with than iCalendar.
138 The purpose of this specification is to define "xCal", an XML format
139 for iCalendar data. xCal is defined as a straightforward mapping into
140 XML from iCalendar, so that iCalendar data can be converted to XML,
141 and then back to iCalendar, without losing any semantic meaning in
142 the data. Anyone creating xCal calendar data according to this
143 specification will know that their data can be converted to a valid
144 iCalendar representation as well.
146 Key design considerations are:
148 Round-tripping (converting an iCalendar instance to xCal and back)
149 will give the same semantic result as the starting point. That
150 is, all components, properties, and property parameters are
151 guaranteed to be preserved, with the exception of those that have
154 xCal preserves the semantics of the iCalendar data. While a
155 simple consumer can easily browse the calendar data in xCal, a
156 full understanding of iCalendar is still required in order to
157 modify and/or fully comprehend the calendar data.
159 xCal has the ability to handle many extensions to the underlying
160 iCalendar specification without requiring an update to this
170Daboo, et al. Standards Track [Page 3]
172RFC 6321 xCal August 2011
1752. Conventions Used in This Document
177 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
178 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
179 document are to be interpreted as described in [RFC2119].
181 When XML element types in the namespace
182 "urn:ietf:params:xml:ns:icalendar-2.0" are referenced in this
183 document outside of the context of an XML fragment, the string "IC:"
184 will be prefixed to the element types.
186 Some examples in this document contain "partial" XML documents used
187 for illustrative purposes. In these examples, three periods "..."
188 are used to indicate a portion of the document that has been removed
1913. Converting from iCalendar to xCal
193 This section describes how iCalendar data is converted to xCal using
194 a simple mapping between the iCalendar data model and XML elements.
198 iCalendar uses a line folding mechanism to limit lines of data to a
199 maximum line length (typically 72 characters) to ensure maximum
200 likelihood of preserving data integrity as it is transported via
201 various means (e.g., email) -- see Section 3.1 of [RFC5545]. Prior
202 to converting iCalendar data into xCal, all folded lines MUST be
205 iCalendar data uses an "escape" character sequence for text values
206 and property parameter values. When such text elements are converted
207 into xCal, the escaping MUST be removed.
209 iCalendar uses a base64 encoding for binary data. However, it does
210 not restrict the encoding from being applied to non-binary value
211 types. So, the following rules MUST be applied when processing a
212 property with the "ENCODING" property parameter set to "BASE64":
214 o If the property value type is "BINARY", the base64 encoding MUST
217 o If the value type is not "BINARY", the "ENCODING" property
218 parameter MUST be removed, and the value MUST be base64 decoded.
220 When base64 encoding and decoding are used, they MUST conform to
221 Section 4 of [RFC4648], which is the base64 method used in [RFC5545].
226Daboo, et al. Standards Track [Page 4]
228RFC 6321 xCal August 2011
231 One key difference in the formatting of values used in iCalendar and
232 xCal is that, in xCal, the specification uses date/time and UTC
233 offset values aligned with the syntax of
234 [W3C.REC-xmlschema-2-20041028] to aid with XML processing.
2363.2. iCalendar Stream (RFC 5545, Section 3.4)
238 At the top level of the iCalendar object model is an "iCalendar
239 stream". This object encompasses multiple "iCalendar objects". In
240 xCal, the entire stream is contained in the root IC:icalendar XML
243 An iCalendar stream can contain one or more iCalendar objects. Each
244 iCalendar object, delimited by "BEGIN:VCALENDAR" and "END:VCALENDAR",
245 is enclosed by the IC:vcalendar XML element.
249 <?xml version="1.0" encoding="utf-8"?>
250 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
256 iCalendar objects are comprised of a set of "components",
257 "properties", "parameters", and "values". A "component" can contain
258 other "components" or "properties". A "property" has a value and a
259 set of zero or more "parameters".
261 In xCal, component elements, for example, IC:vevent and IC:vtodo, are
262 contained within an IC:components XML element. Within the component
263 element, another IC:components element could appear (representing
264 components nested within components) or the IC:properties XML element
265 could appear. IC:properties is used to encapsulate iCalendar
268 Each iCalendar property will be mapped to its own XML element as
269 described below. Within each of these elements, there is zero or one
270 IC:parameters XML element used to encapsulate any iCalendar property
271 parameters. Additionally there will be one or more XML elements
272 representing the value of the iCalendar property.
282Daboo, et al. Standards Track [Page 5]
284RFC 6321 xCal August 2011
289 <?xml version="1.0" encoding="utf-8"?>
290 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
301 +------------------+--------------+------------------+
302 | Item | XML element | XML Definition |
303 +------------------+--------------+------------------+
304 | iCalendar Stream | IC:icalendar | Appendix A # 3.4 |
305 | VCALENDAR | IC:vcalendar | Appendix A # 3.6 |
306 +------------------+--------------+------------------+
3083.3. Components (RFC 5545, Section 3.6)
310 Each calendar component in the "VCALENDAR" object, delimited by
311 "BEGIN" and "END", will be converted to an enclosing XML element with
312 the same name, but in lowercase. As an example, the table below
313 shows iCalendar-to-xCal mappings for current iCalendar components.
314 Any new iCalendar components added in the future will be converted in
317 +-----------+--------------+--------------------+
318 | Component | XML element | XML Definition |
319 +-----------+--------------+--------------------+
320 | VEVENT | IC:vevent | Appendix A # 3.6.1 |
321 | VTODO | IC:vtodo | Appendix A # 3.6.2 |
322 | VJOURNAL | IC:vjournal | Appendix A # 3.6.3 |
323 | VFREEBUSY | IC:vfreebusy | Appendix A # 3.6.4 |
324 | VTIMEZONE | IC:vtimezone | Appendix A # 3.6.5 |
325 | STANDARD | IC:standard | Appendix A # 3.6.5 |
326 | DAYLIGHT | IC:daylight | Appendix A # 3.6.5 |
327 | VALARM | IC:valarm | Appendix A # 3.6.6 |
328 +-----------+--------------+--------------------+
3303.4. Properties (RFC 5545, Sections 3.7 and 3.8)
332 iCalendar properties, whether they apply to the "VCALENDAR" object or
333 to a component, are handled in a consistent way in the xCal format.
338Daboo, et al. Standards Track [Page 6]
340RFC 6321 xCal August 2011
343 iCalendar properties are enclosed in the XML element IC:properties.
345 Each individual iCalendar property is represented in xCal by an
346 element of the same name as the iCalendar property, but in lowercase.
347 For example, the "CALSCALE" property is represented in xCal by the
352 <?xml version="1.0" encoding="utf-8"?>
353 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
356 <calscale>...</calscale>
357 <version>...</version>
366 Each property can contain an IC:parameters XML element encapsulating
367 any iCalendar property parameters associated with the iCalendar
370 Each property will contain one or more "value" XML elements as
371 described below representing the value of the iCalendar property.
373 As an example, the table below shows iCalendar-to-xCal mappings for
374 current iCalendar properties. Any new iCalendar properties added in
375 the future will be converted in the same way.
377 +------------------+---------------------+-----------------------+
378 | Property | XML element | XML Definition |
379 +------------------+---------------------+-----------------------+
380 | CALSCALE | IC:calscale | Appendix A # 3.7.1 |
381 | METHOD | IC:method | Appendix A # 3.7.2 |
382 | PRODID | IC:prodid | Appendix A # 3.7.3 |
383 | VERSION | IC:version | Appendix A # 3.7.4 |
384 | ATTACH | IC:attach | Appendix A # 3.8.1.1 |
385 | CATEGORIES | IC:categories | Appendix A # 3.8.1.2 |
386 | CLASS | IC:class | Appendix A # 3.8.1.3 |
387 | COMMENT | IC:comment | Appendix A # 3.8.1.4 |
388 | DESCRIPTION | IC:description | Appendix A # 3.8.1.5 |
389 | GEO | IC:geo | Appendix A # 3.8.1.6 |
390 | LOCATION | IC:location | Appendix A # 3.8.1.7 |
394Daboo, et al. Standards Track [Page 7]
396RFC 6321 xCal August 2011
399 | PERCENT-COMPLETE | IC:percent-complete | Appendix A # 3.8.1.8 |
400 | PRIORITY | IC:priority | Appendix A # 3.8.1.9 |
401 | RESOURCES | IC:resources | Appendix A # 3.8.1.10 |
402 | STATUS | IC:status | Appendix A # 3.8.1.11 |
403 | SUMMARY | IC:summary | Appendix A # 3.8.1.12 |
404 | COMPLETED | IC:completed | Appendix A # 3.8.2.1 |
405 | DTEND | IC:dtend | Appendix A # 3.8.2.2 |
406 | DUE | IC:due | Appendix A # 3.8.2.3 |
407 | DTSTART | IC:dtstart | Appendix A # 3.8.2.4 |
408 | DURATION | IC:duration | Appendix A # 3.8.2.5 |
409 | FREEBUSY | IC:freebusy | Appendix A # 3.8.2.6 |
410 | TRANSP | IC:transp | Appendix A # 3.8.2.7 |
411 | TZID | IC:tzid | Appendix A # 3.8.3.1 |
412 | TZNAME | IC:tzname | Appendix A # 3.8.3.2 |
413 | TZOFFSETFROM | IC:tzoffsetfrom | Appendix A # 3.8.3.3 |
414 | TZOFFSETTO | IC:tzoffsetto | Appendix A # 3.8.3.4 |
415 | TZURL | IC:tzurl | Appendix A # 3.8.3.5 |
416 | ATTENDEE | IC:attendee | Appendix A # 3.8.4.1 |
417 | CONTACT | IC:contact | Appendix A # 3.8.4.2 |
418 | ORGANIZER | IC:organizer | Appendix A # 3.8.4.3 |
419 | RECURRENCE-ID | IC:recurrence-id | Appendix A # 3.8.4.4 |
420 | RELATED-TO | IC:related-to | Appendix A # 3.8.4.5 |
421 | URL | IC:url | Appendix A # 3.8.4.6 |
422 | UID | IC:uid | Appendix A # 3.8.4.7 |
423 | EXDATE | IC:exdate | Appendix A # 3.8.5.1 |
424 | RDATE | IC:rdate | Appendix A # 3.8.5.2 |
425 | RRULE | IC:rrule | Appendix A # 3.8.5.3 |
426 | ACTION | IC:action | Appendix A # 3.8.6.1 |
427 | REPEAT | IC:repeat | Appendix A # 3.8.6.2 |
428 | TRIGGER | IC:trigger | Appendix A # 3.8.6.3 |
429 | CREATED | IC:created | Appendix A # 3.8.7.1 |
430 | DTSTAMP | IC:dtstamp | Appendix A # 3.8.7.2 |
431 | LAST-MODIFIED | IC:last-modified | Appendix A # 3.8.7.3 |
432 | SEQUENCE | IC:sequence | Appendix A # 3.8.7.4 |
433 | REQUEST-STATUS | IC:request-status | Appendix A # 3.8.8.3 |
434 +------------------+---------------------+-----------------------+
4363.4.1. Special Cases for Properties
438 This section describes some properties that have special handling
439 when converting to xCal.
4413.4.1.1. Multi-Valued Properties
443 The following iCalendar properties can have values that consist of a
444 list of "standard" iCalendar values separated by a specific
445 delimiter. In xCal, these properties are represented by an XML
446 element that contains multiple "value" elements (Section 3.6).
450Daboo, et al. Standards Track [Page 8]
452RFC 6321 xCal August 2011
455 +------------+---------------+-----------------------+
456 | Property | XML element | XML Definition |
457 +------------+---------------+-----------------------+
458 | CATEGORIES | IC:categories | Appendix A # 3.8.1.2 |
459 | RESOURCES | IC:resources | Appendix A # 3.8.1.10 |
460 | FREEBUSY | IC:freebusy | Appendix A # 3.8.2.6 |
461 | EXDATE | IC:exdate | Appendix A # 3.8.5.1 |
462 | RDATE | IC:rdate | Appendix A # 3.8.5.2 |
463 +------------+---------------+-----------------------+
467 In iCalendar, the "GEO" property value is defined as a semicolon-
468 separated list of two "FLOAT" values; the first representing latitude
469 and the second longitude.
471 In xCal, the value for the IC:geo element is represented by two XML
472 elements. These are an IC:latitude element and an IC:longitude
473 element, each of which contains float values. See Appendix A #
478 <?xml version="1.0" encoding="utf-8"?>
479 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
482 <latitude>37.386013</latitude>
483 <longitude>-122.082932</longitude>
4883.4.1.3. REQUEST-STATUS Property
490 In iCalendar, the "REQUEST-STATUS" property value is defined as a
491 semicolon-separated list of two or three "TEXT" values. The first
492 represents a code, the second a description, and the third any
495 In xCal, the value for the IC:request-status element is represented
496 by two or three XML elements. These are an IC:code element, an IC:
497 description element, and an IC:data element, each of which contains
498 the corresponding "TEXT" values. If there is no additional data in
499 the iCalendar value, the IC:data element (which would be empty)
500 SHOULD NOT be present. See Appendix A # 3.8.8.3.
506Daboo, et al. Standards Track [Page 9]
508RFC 6321 xCal August 2011
513 <?xml version="1.0" encoding="utf-8"?>
514 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
518 <description>Success</description>
5233.5. Parameters (RFC 5545, Section 3.2)
525 iCalendar property parameters are enclosed in the XML element IC:
526 parameters, which occurs in each property XML element. If there are
527 no iCalendar property parameters, the IC:parameters element (which
528 would be empty) SHOULD NOT be present.
530 Each individual iCalendar property parameter is represented in xCal
531 by an element of the same name as the iCalendar property parameter,
532 but in lowercase. For example, the "PARTSTAT" property parameter is
533 represented in xCal by the IC:partstat element.
537 <?xml version="1.0" encoding="utf-8"?>
538 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
545 <partstat><text>NEEDS-ACTION</text></partstat>
554 Each XML parameter element contains one or more child XML elements
555 representing iCalendar value types.
562Daboo, et al. Standards Track [Page 10]
564RFC 6321 xCal August 2011
567 As an example, the table below shows iCalendar-to-xCal mappings for
568 current iCalendar parameters. Any new iCalendar parameters added in
569 the future will be converted in the same way.
571 +----------------+-------------------+---------------------+
572 | Parameter | XML element | XML Definition |
573 +----------------+-------------------+---------------------+
574 | ALTREP | IC:altrep | Appendix A # 3.2.1 |
575 | CN | IC:cn | Appendix A # 3.2.2 |
576 | CUTYPE | IC:cutype | Appendix A # 3.2.3 |
577 | DELEGATED-FROM | IC:delegated-from | Appendix A # 3.2.4 |
578 | DELEGATED-TO | IC:delegated-to | Appendix A # 3.2.5 |
579 | DIR | IC:dir | Appendix A # 3.2.6 |
580 | ENCODING | IC:encoding | Appendix A # 3.2.7 |
581 | FMTTYPE | IC:fmttype | Appendix A # 3.2.8 |
582 | FBTYPE | IC:fbtype | Appendix A # 3.2.9 |
583 | LANGUAGE | IC:language | Appendix A # 3.2.10 |
584 | MEMBER | IC:member | Appendix A # 3.2.11 |
585 | PARTSTAT | IC:partstat | Appendix A # 3.2.12 |
586 | RANGE | IC:range | Appendix A # 3.2.13 |
587 | RELATED | IC:related | Appendix A # 3.2.14 |
588 | RELTYPE | IC:reltype | Appendix A # 3.2.15 |
589 | ROLE | IC:role | Appendix A # 3.2.16 |
590 | RSVP | IC:rsvp | Appendix A # 3.2.17 |
591 | SENT-BY | IC:sent-by | Appendix A # 3.2.18 |
592 | TZID | IC:tzid | Appendix A # 3.2.19 |
593 +----------------+-------------------+---------------------+
5953.5.1. VALUE Parameter
597 iCalendar defines a "VALUE" property parameter (Section 3.2.20 of
598 [RFC5545]). This property parameter is not mapped to an xCal XML
599 element. Instead, the value type is handled by having different XML
600 elements for each value, and these appear inside of property
601 elements. Thus, when converting from iCalendar to xCal, any "VALUE"
602 property parameters are skipped. When converting from xCal into
603 iCalendar, the appropriate "VALUE" property parameter MUST be
604 included in the iCalendar property if the value type is not the
605 default value type for that property.
6073.6. Values (RFC 5545, Section 3.3)
609 In the typical case, iCalendar value types are mapped into XML
610 elements with a matching name in all lowercase. In the case of the
611 value for a recurrence rule (see below), iCalendar defines
612 "structured" values, and these are mapped into separate child
613 elements for each value element.
618Daboo, et al. Standards Track [Page 11]
620RFC 6321 xCal August 2011
6233.6.1. Binary (RFC 5545, Section 3.3.1)
625 Description: iCalendar "BINARY" property values are represented by
626 the IC:binary XML element. The content of the element is base64
627 encoded data, conforming to Section 4 of [RFC4648], which is the
628 base64 method used in [RFC5545]. Whitespace MAY be inserted into
629 the data at any point to "wrap" the data to reasonable line
630 lengths. When converting back to iCalendar, the whitespace MUST
633 XML Definition: Appendix A # 3.3.1
637 <binary>SGVsbG8gV29ybGQh</binary>
6393.6.2. Boolean (RFC 5545, Section 3.3.2)
641 Description: iCalendar "BOOLEAN" property values are represented by
642 the IC:boolean XML element. The content of the element is a
645 XML Definition: Appendix A # 3.3.2
649 <boolean>true</boolean>
6513.6.3. Calendar User Address (RFC 5545, Section 3.3.3)
653 Description: iCalendar "CAL-ADDRESS" property values are represented
654 by the IC:cal-address XML element. The content of the element is
657 XML Definition: Appendix A # 3.3.3
661 <cal-address>mailto:cyrus@example.com</cal-address>
6633.6.4. Date (RFC 5545, Section 3.3.4)
665 Description: iCalendar "DATE" property values are represented by the
666 IC:date XML element. The content of the element is the same date
667 value specified by [RFC5545], with the exception that the date
668 components are separated by "-" characters, for consistency with
669 [W3C.REC-xmlschema-2-20041028].
674Daboo, et al. Standards Track [Page 12]
676RFC 6321 xCal August 2011
679 XML Definition: Appendix A # 3.3.4
683 <date>2011-05-17</date>
6853.6.5. Date-Time (RFC 5545, Section 3.3.5)
687 Description: iCalendar "DATE-TIME" property values are represented
688 by the IC:date-time XML element. The content of the element is
689 the same date-time value specified by [RFC5545], with the
690 exception that the date components are separated by "-"
691 characters, and the time components are separated by ":"
692 characters, for consistency with [W3C.REC-xmlschema-2-20041028].
693 Note that while [W3C.REC-xmlschema-2-20041028] allows for a UTC
694 offset to be included in date/time values, xCal does not use that,
695 and instead follows the iCalendar behavior of using time zone
696 definitions via the "TZID" property parameter.
698 XML Definition: Appendix A # 3.3.5
702 <date-time>2011-05-17T12:00:00</date-time>
7043.6.6. Duration (RFC 5545, Section 3.3.6)
706 Description: iCalendar "DURATION" property values are represented by
707 the IC:duration XML element. The content of the element is the
708 same duration value specified by [RFC5545].
710 XML Definition: Appendix A # 3.3.6
714 <duration>P1D</duration>
7163.6.7. Float (RFC 5545, Section 3.3.7)
718 Description: iCalendar "FLOAT" property values are represented by
719 the IC:float XML element. The content of the element is a text
720 representation of a floating point number.
722 XML Definition: Appendix A # 3.3.7
730Daboo, et al. Standards Track [Page 13]
732RFC 6321 xCal August 2011
7353.6.8. Integer (RFC 5545, Section 3.3.8)
737 Description: iCalendar "INTEGER" property values are represented by
738 the IC:integer XML element. The content of the element is a text
739 representation of an integer number.
741 XML Definition: Appendix A # 3.3.8
745 <integer>50</integer>
746 <integer>-100</integer>
7483.6.9. Period of Time (RFC 5545, Section 3.3.9)
750 Description: iCalendar "PERIOD" property values are represented by
751 the IC:period XML element. The content of the element is child
752 elements representing the start, end, or duration components of
755 XML Definition: Appendix A # 3.3.9
760 <start>2011-05-17T12:00:00</start>
761 <duration>P1H</duration>
7643.6.10. Recurrence Rule (RFC 5545, Section 3.3.10)
766 Description: iCalendar "RECUR" property values are represented by
767 the IC:recur XML element. The content of the element is child
768 elements representing the various components of a recurrence rule.
770 XML Definition: Appendix A # 3.3.10
778 <bymonth>10</bymonth>
786Daboo, et al. Standards Track [Page 14]
788RFC 6321 xCal August 2011
7913.6.11. Text (RFC 5545, Section 3.3.11)
793 Description: iCalendar "TEXT" property values are represented by the
794 IC:text XML element. The content of the element is simple text.
796 XML Definition: Appendix A # 3.3.11
800 <text>Hello World!</text>
8023.6.12. Time (RFC 5545, Section 3.3.12)
804 Description: iCalendar "TIME" property values are represented by the
805 IC:time XML element. The content of the element is the same time
806 value specified by [RFC5545], with the exception that the time
807 components are separated by ":" characters, for consistency with
808 [W3C.REC-xmlschema-2-20041028]. Note that while
809 [W3C.REC-xmlschema-2-20041028] allows for a UTC offset to be
810 included in date/time values, xCal does not use that, and instead
811 follows the iCalendar behavior of using time zone definitions via
812 the "TZID" property parameter.
814 XML Definition: Appendix A # 3.3.12
818 <time>12:00:00</time>
8203.6.13. URI (RFC 5545, Section 3.3.13)
822 Description: iCalendar "URI" property values are represented by the
823 IC:uri XML element. The content of the element is a URI.
825 XML Definition: Appendix A # 3.3.13
829 <uri>http://calendar.example.com</uri>
842Daboo, et al. Standards Track [Page 15]
844RFC 6321 xCal August 2011
8473.6.14. UTC Offset (RFC 5545, Section 3.3.14)
849 Description: iCalendar "UTC-OFFSET" property values are represented
850 by the IC:utc-offset XML element. The content of the element is
851 the same UTC offset value specified by [RFC5545], with the
852 exception that the hour, minute, and second components are
853 separated by a ":" character, for consistency with
854 [W3C.REC-xmlschema-2-20041028].
856 XML Definition: Appendix A # 3.3.14
860 <utc-offset>-05:00</utc-offset>
864 iCalendar extension properties and property parameters (those with an
865 "X-" prefix in their name) are handled in the same way as other
866 properties and property parameters: the property or property
867 parameter is represented by an XML element with the same name, but in
868 lowercase, e.g., the "X-FOO" property in iCalendar turns into the IC:
869 x-foo element in xCal. However, see Section 5 for how to deal with
870 default values for unrecognized extension properties or property
8734. Converting from xCal into iCalendar
875 When converting component, property, and property parameter values,
876 the names SHOULD be converted to uppercase. Although iCalendar names
877 are case insensitive, common practice is to keep them all uppercase
878 following the actual definitions in [RFC5545].
880 BACKSLASH character encoding and line folding MUST be applied to the
881 resulting iCalendar data as required by [RFC5545].
883 Non-binary value types MUST NOT be base64 encoded.
8854.1. Converting XML Extensions into iCalendar
887 XML extensions are converted back to iCalendar in one of two ways,
888 depending on whether the extensions are in the iCalendar XML
889 namespace or in an external namespace.
891 Extensions that are part of the iCalendar XML namespace MUST have
892 element names that begin with "x-", and will be converted back to the
893 equivalent extension property in iCalendar. For example, the "x-foo"
894 element will convert to the "X-FOO" iCalendar property.
898Daboo, et al. Standards Track [Page 16]
900RFC 6321 xCal August 2011
903 Extensions that are in a namespace other than the iCalendar XML
904 namespace SHOULD be preserved in the iCalendar representation using
905 the "XML" iCalendar property described in Section 4.2. Only those
906 extension elements that are immediate child elements of the IC:
907 properties element are converted, any others are ignored.
9094.2. The XML Property for iCalendar
911 This section describes an extension property for iCalendar, as
912 covered in Section 8.2.3 of [RFC5545].
916 Purpose: To embed extended XML-encoded iCalendar data in the
919 Value type: The default value type is "TEXT". The value type can
920 also be set to "BINARY" to indicate base64 encoded content.
922 Property parameters: IANA, non-standard, inline encoding, and value
923 data type property parameters can be specified on this property.
925 Conformance: The property can be specified multiple times in any
928 Description: The value of this property is a single XML 1.0
929 [W3C.REC-xml-20081126] element. The "XML" property MUST NOT be used
930 to contain properties that are already defined in iCalendar. Since
931 all elements in the urn:ietf:params:xml:ns:icalendar-2.0 namespace
932 convert to a well-defined iCalendar object, the elements in this
933 property MUST NOT be in the urn:ietf:params:xml:ns:icalendar-2.0
934 namespace. The XML element that is the value of this property MUST
935 have an XML namespace declaration.
937 The default value type for this property is "TEXT", and normal
938 BACKSLASH character encoding rules for that value MUST be applied.
939 Note that the source XML can contain characters not allowed in "TEXT"
940 property values. If this is the case, then the XML data MUST be
941 base64 encoded. As required by [RFC5545], the "ENCODING" property
942 parameter MUST be present and set to "BASE64", and the "VALUE"
943 property parameter MUST be present and set to "BINARY".
945 The ordering of "XML" properties is not preserved in the conversion
946 between xCal and iCalendar.
948 Format definition: This property is defined by the following
954Daboo, et al. Standards Track [Page 17]
956RFC 6321 xCal August 2011
959 xml = "XML" xmlparam ( ":" text ) /
961 ";" "ENCODING" "=" "BASE64"
962 ";" "VALUE" "=" "BINARY"
967 xmlparam = *(";" other-param)
969 Example: The following is an example of a location embedded in KML
970 markup inside the "XML" property.
972 XML:<kml xmlns="http://www.opengis.net/kml/2.2">\n
974 <name>KML Sample</name>\n
976 <description>An incomplete example of a KML docum
977 ent - used as an example!</description>\n
9815. Handling Unrecognized Properties or Parameters
983 In iCalendar, properties have a default value type specified by their
984 definition, e.g., "SUMMARY"'s value type is "TEXT" and "DURATION"'s
985 is "DURATION". When a property uses its default value type, the
986 "VALUE" property parameter does not need to be specified on the
989 When new properties are defined or "X-" properties are used, an
990 iCalendar<->xCal converter might not recognize them, and know what
991 the appropriate default value types are, yet they need to be able to
992 preserve the values. A similar issue arises for unrecognized
993 property parameters. As a result, the following rules are applied
994 when dealing with unrecognized properties and property parameters:
996 o When converting iCalendar into xCal:
998 * Any property that does not include a "VALUE" property parameter
999 and whose default value type is not known MUST be converted
1000 using the value type XML element IC:unknown. The content of
1001 that element is the unprocessed value text.
1003 * Any unrecognized property parameter MUST be converted using the
1004 value type XML element IC:unknown, with its content set to the
1005 property parameter value text, treated as if it were a "TEXT"
1006 value or list of "TEXT" values.
1010Daboo, et al. Standards Track [Page 18]
1012RFC 6321 xCal August 2011
1015 o When converting xCal into iCalendar:
1017 * Any IC:unknown property value XML elements are converted
1018 directly into iCalendar values. The containing property MUST
1019 NOT have a "VALUE" property parameter.
1021 * Any IC:unknown parameter value XML elements are converted as if
1022 they were IC:text value type XML elements.
1024 Example: The following is an example of an unrecognized iCalendar
1025 property (that uses a "DATE-TIME" value as its default) and the
1026 equivalent xCal representation of that property.
1030 X-PROPERTY:20110512T120000Z
1035 <unknown>20110512T120000Z</unknown>
1038 Example: The following is an example of an unrecognized iCalendar
1039 property parameter (that uses a "DURATION" value as its default)
1040 specified on a recognized iCalendar property, and the equivalent xCal
1041 representation of that property and property parameter.
1045 DTSTART;X-PARAM=PT30M:20110512T130000Z
1051 <x-param><unknown>PT30M</unknown></x-param>
1053 <date-time>2011-05-12T13:00:00Z</date-time>
10566. Security Considerations
1058 For security considerations specific to calendar data, see Section 7
1059 of [RFC5545]. Since this specification is a mapping from iCalendar,
1060 no new security concerns are introduced related to calendar data.
1066Daboo, et al. Standards Track [Page 19]
1068RFC 6321 xCal August 2011
1071 The use of XML as a format does have security risks. Section 7 of
1072 [RFC3470] discusses these risks. See also the security discussion
1073 for the application/xml type in [RFC3023].
10757. IANA Considerations
1077 This document defines a new URN to identify a new XML namespace for
1078 iCalendar data. The URN conforms to a registry mechanism described
1081 This document defines a new media type. The registration is in
1084 This document defines a new property for iCalendar. The registration
10877.1. Namespace Registration
1089 Registration request for the iCalendar namespace:
1091 URI: urn:ietf:params:xml:ns:icalendar-2.0
1093 Registrant Contact: See the "Authors' Addresses" section of this
1096 XML: None. Namespace URIs do not represent an XML specification.
1100 This section defines the MIME media type for use with iCalendar in
1103 Type name: application
1105 Subtype name: calendar+xml
1107 Required parameters: None
1109 Optional parameters: method, component, and optinfo as defined for
1110 the text/calendar media type in [RFC5545]; charset as defined for
1111 application/xml in [RFC3023]; per [RFC3023], use of the charset
1112 property parameter with the value "utf-8" is STRONGLY RECOMMENDED.
1114 Encoding considerations: Same as encoding considerations of
1115 application/xml as specified in [RFC3023].
1122Daboo, et al. Standards Track [Page 20]
1124RFC 6321 xCal August 2011
1127 Security considerations: See Section 6.
1129 Interoperability considerations: This media type provides an
1130 alternative format for iCalendar data based on XML.
1132 Published specification: This specification.
1134 Applications that use this media type: Applications that currently
1135 make use of the text/calendar media type can use this as an
1138 Additional information:
1140 Magic number(s): None
1142 File extension(s): xcs
1144 Macintosh file type code(s): None specified.
1146 Person & email address to contact for further information:
1149 Intended usage: COMMON
1151 Restrictions on usage: There are no restrictions on where this media
1154 Author: See the "Authors' Addresses" section of this document.
1156 Change controller: IETF
11587.3. iCalendar Property Registrations
1160 This document defines the following new iCalendar property to be
1161 added to the registry defined in Section 8.2.3 of [RFC5545]:
1163 +----------+---------+-----------------------+
1164 | Property | Status | Reference |
1165 +----------+---------+-----------------------+
1166 | XML | Current | RFC 6321, Section 4.2 |
1167 +----------+---------+-----------------------+
1178Daboo, et al. Standards Track [Page 21]
1180RFC 6321 xCal August 2011
1185 The authors would like to thank the following for their valuable
1186 contributions: Toby Considine, Bernard Desruisseaux, Keith Moore,
1187 Filip Navara, Simon Perreault, Arnaud Quillaud, Peter Saint-Andre,
1188 and Dave Thewlis. This specification originated from the work of the
1189 XML technical committee of the Calendaring and Scheduling Consortium.
11939.1. Normative References
1195 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1196 Requirement Levels", BCP 14, RFC 2119, March 1997.
1198 [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
1199 Types", RFC 3023, January 2001.
1201 [RFC3470] Hollenbeck, S., Rose, M., and L. Masinter, "Guidelines for
1202 the Use of Extensible Markup Language (XML)
1203 within IETF Protocols", BCP 70, RFC 3470, January 2003.
1205 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
1208 [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
1209 Encodings", RFC 4648, October 2006.
1211 [RFC5545] Desruisseaux, B., "Internet Calendaring and Scheduling
1212 Core Object Specification (iCalendar)", RFC 5545,
1215 [W3C.REC-xml-20081126]
1216 Sperberg-McQueen, C., Yergeau, F., Bray, T., Paoli, J.,
1217 and E. Maler, "Extensible Markup Language (XML) 1.0 (Fifth
1218 Edition)", World Wide Web Consortium Recommendation REC-
1219 xml-20081126, November 2008,
1220 <http://www.w3.org/TR/2008/REC-xml-20081126>.
12229.2. Informative References
1224 [W3C.REC-xmlschema-2-20041028]
1225 Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes
1226 Second Edition", World Wide Web Consortium
1227 Recommendation REC-xmlschema-2-20041028, October 2004,
1228 <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.
1234Daboo, et al. Standards Track [Page 22]
1236RFC 6321 xCal August 2011
1239Appendix A. RELAX NG Schema
1241 Below is a RELAX NG schema for iCalendar in XML. The schema is non-
1242 normative and given for reference only.
1244 This schema uses the compact notation of RELAX NG. The numeric
1245 section numbers given in the comments refer to sections in [RFC5545].
1246 The ordering of elements follows the section ordering of [RFC5545].
1248 The RELAX NG compact notation "?" operator is used to indicate an
1249 unordered list of items. However, that operator, as defined, allows
1250 "mixing" each element that it operates on at any depth within the
1251 other elements, rather than just allowing "mixing" of siblings only.
1252 As a result, the schema provided allows certain constructs that are
1253 not allowed in iCalendar. Given that there is no sibling-only
1254 unordered list operator in RELAX NG, this is the best representation
1257 Patterns for date/time, duration, and UTC offset values are given
1258 because those differ from the values used in iCalendar. More
1259 restrictive schema with patterns and numerical limits could be
1260 derived from the example schema here if more comprehensive schema
1261 validation is required.
1263 # RELAX NG Schema for iCalendar in XML
1265 default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
1267 # 3.2 Property Parameters
1269 # 3.2.1 Alternate Text Representation
1271 altrepparam = element altrep {
1277 cnparam = element cn {
1290Daboo, et al. Standards Track [Page 23]
1292RFC 6321 xCal August 2011
1295 # 3.2.3 Calendar User Type
1297 cutypeparam = element cutype {
1309 delfromparam = element delegated-from {
1315 deltoparam = element delegated-to {
1319 # 3.2.6 Directory Entry Reference
1321 dirparam = element dir {
1325 # 3.2.7 Inline Encoding
1327 encodingparam = element encoding {
1336 fmttypeparam = element fmttype {
1346Daboo, et al. Standards Track [Page 24]
1348RFC 6321 xCal August 2011
1351 # 3.2.9 Free/Busy Time Type
1353 fbtypeparam = element fbtype {
1357 "BUSY-UNAVAILABLE" |
1364 languageparam = element language {
1368 # 3.2.11 Group or List Membership
1370 memberparam = element member {
1374 # 3.2.12 Participation Status
1376 partstatparam = element partstat {
1377 type-partstat-event |
1378 type-partstat-todo |
1382 type-partstat-event = (
1402Daboo, et al. Standards Track [Page 25]
1404RFC 6321 xCal August 2011
1407 type-partstat-todo = (
1419 type-partstat-jour = (
1427 # 3.2.13 Recurrence Identifier Range
1429 rangeparam = element range {
1435 # 3.2.14 Alarm Trigger Relationship
1437 trigrelparam = element related {
1444 # 3.2.15 Relationship Type
1446 reltypeparam = element reltype {
1458Daboo, et al. Standards Track [Page 26]
1460RFC 6321 xCal August 2011
1463 # 3.2.16 Participation Role
1465 roleparam = element role {
1474 # 3.2.17 RSVP Expectation
1476 rsvpparam = element rsvp {
1482 sentbyparam = element sent-by {
1486 # 3.2.19 Time Zone Identifier
1488 tzidparam = element tzid {
1492 # 3.3 Property Value Data Types
1496 value-binary = element binary {
1502 value-boolean = element boolean {
1508 value-cal-address = element cal-address {
1514Daboo, et al. Standards Track [Page 27]
1516RFC 6321 xCal August 2011
1521 pattern-date = xsd:string {
1522 pattern = "\d\d\d\d-\d\d-\d\d"
1525 value-date = element date {
1531 pattern-date-time = xsd:string {
1532 pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
1535 value-date-time = element date-time {
1541 pattern-duration = xsd:string {
1542 pattern = "(+|-)?P(\d+W)|(\d+D)?"
1543 ~ "(T(\d+H(\d+M)?(\d+S)?)|"
1548 value-duration = element duration {
1554 value-float = element float {
1560 value-integer = element integer {
1570Daboo, et al. Standards Track [Page 28]
1572RFC 6321 xCal August 2011
1577 value-period = element period {
1593 value-recur = element recur {
1595 (type-until | type-count)?,
1608 element wkst { type-weekday }?
1611 type-freq = element freq {
1626Daboo, et al. Standards Track [Page 29]
1628RFC 6321 xCal August 2011
1631 type-until = element until {
1636 type-count = element count {
1640 type-bysecond = element bysecond {
1644 type-byminute = element byminute {
1648 type-byhour = element byhour {
1662 type-byday = element byday {
1667 type-bymonthday = element bymonthday {
1671 type-byyearday = element byyearday {
1675 type-byweekno = element byweekno {
1682Daboo, et al. Standards Track [Page 30]
1684RFC 6321 xCal August 2011
1687 type-bymonth = element bymonth {
1691 type-bysetpos = element bysetpos {
1697 value-text = element text {
1703 pattern-time = xsd:string {
1704 pattern = "\d\d:\d\d:\d\dZ?"
1707 value-time = element time {
1713 value-uri = element uri {
1719 value-utc-offset = element utc-offset {
1720 xsd:string { pattern = "(+|-)\d\d:\d\d(:\d\d)?" }
1725 value-unknown = element unknown {
1729 # 3.4 iCalendar Stream
1731 start = element icalendar {
1738Daboo, et al. Standards Track [Page 31]
1740RFC 6321 xCal August 2011
1743 # 3.6 Calendar Components
1745 vcalendar = element vcalendar {
1750 type-calprops = element properties {
1753 property-calscale? &
1757 type-component = element components {
1761 component-vjournal |
1762 component-vfreebusy |
1767 # 3.6.1 Event Component
1769 component-vevent = element vevent {
1771 element components {
1776 type-eventprop = element properties {
1783 property-description? &
1785 property-last-mod? &
1786 property-location? &
1787 property-organizer? &
1788 property-priority? &
1790 property-status-event? &
1794Daboo, et al. Standards Track [Page 32]
1796RFC 6321 xCal August 2011
1806 (property-dtend | property-duration)? &
1809 property-attendee* &
1810 property-categories* &
1816 property-resources* &
1820 # 3.6.2 To-do Component
1822 component-vtodo = element vtodo {
1824 element components {
1829 type-todoprop = element properties {
1834 property-completed? &
1836 property-description? &
1838 property-last-mod? &
1839 property-location? &
1840 property-organizer? &
1842 property-priority? &
1845 property-status-todo? &
1850Daboo, et al. Standards Track [Page 33]
1852RFC 6321 xCal August 2011
1860 (property-dtstart?, property-dtend? ) |
1861 (property-dtstart, property-duration)?
1865 property-attendee* &
1866 property-categories* &
1872 property-resources* &
1876 # 3.6.3 Journal Component
1878 component-vjournal = element vjournal {
1882 type-jourprop = element properties {
1889 property-last-mod? &
1890 property-organizer? &
1893 property-status-jour? &
1900 property-attendee* &
1901 property-categories* &
1906Daboo, et al. Standards Track [Page 34]
1908RFC 6321 xCal August 2011
1912 property-description? &
1919 # 3.6.4 Free/Busy Component
1921 component-vfreebusy = element vfreebusy {
1925 type-fbprop = element properties {
1932 property-duration? &
1933 property-organizer? &
1936 property-attendee* &
1938 property-freebusy* &
1942 # 3.6.5 Time Zone Component
1944 component-vtimezone = element vtimezone {
1945 element properties {
1948 property-last-mod? &
1951 element components {
1952 (component-standard | component-daylight) &
1953 component-standard* &
1962Daboo, et al. Standards Track [Page 35]
1964RFC 6321 xCal August 2011
1967 component-standard = element standard {
1971 component-daylight = element daylight {
1975 type-tzprop = element properties {
1977 property-tzoffsetto &
1978 property-tzoffsetfrom &
1987 # 3.6.6 Alarm Component
1989 component-valarm = element valarm {
1990 audioprop | dispprop | emailprop
1993 type-audioprop = element properties {
1998 (property-duration, property-repeat)? &
2003 type-dispprop = element properties {
2005 property-description &
2009 property-attendee+ &
2011 (property-duration, property-repeat)? &
2018Daboo, et al. Standards Track [Page 36]
2020RFC 6321 xCal August 2011
2023 type-emailprop = element properties {
2025 property-description &
2028 (property-duration, property-repeat)?
2031 # 3.7 Calendar Properties
2033 # 3.7.1 Calendar Scale
2035 property-calscale = element calscale {
2037 element parameters { empty }?,
2039 element text { "GREGORIAN" }
2044 property-method = element method {
2046 element parameters { empty }?,
2051 # 3.7.3 Product Identifier
2053 property-prodid = element prodid {
2055 element parameters { empty }?,
2062 property-version = element version {
2064 element parameters { empty }?,
2066 element text { "2.0" }
2074Daboo, et al. Standards Track [Page 37]
2076RFC 6321 xCal August 2011
2079 # 3.8 Component Properties
2081 # 3.8.1 Descriptive Component Properties
2083 # 3.8.1.1 Attachment
2085 property-attach = element attach {
2087 element parameters {
2092 value-uri | value-binary
2095 # 3.8.1.2 Categories
2097 property-categories = element categories {
2099 element parameters {
2106 # 3.8.1.3 Classification
2108 property-class = element class {
2110 element parameters { empty }?,
2121 property-comment = element comment {
2123 element parameters {
2130Daboo, et al. Standards Track [Page 38]
2132RFC 6321 xCal August 2011
2138 # 3.8.1.5 Description
2140 property-description = element description {
2142 element parameters {
2150 # 3.8.1.6 Geographic Position
2152 property-geo = element geo {
2154 element parameters { empty }?,
2156 element latitude { xsd:float },
2157 element longitude { xsd:float }
2162 property-location = element location {
2164 element parameters {
2173 # 3.8.1.8 Percent Complete
2175 property-percent = element percent-complete {
2177 element parameters { empty }?,
2186Daboo, et al. Standards Track [Page 39]
2188RFC 6321 xCal August 2011
2193 property-priority = element priority {
2195 element parameters { empty }?,
2200 # 3.8.1.10 Resources
2202 property-resources = element resources {
2204 element parameters {
2214 property-status-event = element status {
2216 element parameters { empty }?,
2225 property-status-todo = element status {
2227 element parameters { empty }?,
2242Daboo, et al. Standards Track [Page 40]
2244RFC 6321 xCal August 2011
2247 property-status-jour = element status {
2249 element parameters { empty }?,
2260 property-summary = element summary {
2262 element parameters {
2270 # 3.8.2 Date and Time Component Properties
2272 # 3.8.2.1 Date/Time Completed
2274 property-completed = element completed {
2276 element parameters { empty }?,
2281 # 3.8.2.2 Date/Time End
2283 property-dtend = element dtend {
2285 element parameters {
2298Daboo, et al. Standards Track [Page 41]
2300RFC 6321 xCal August 2011
2303 # 3.8.2.3 Date/Time Due
2305 property-due = element due {
2307 element parameters {
2315 # 3.8.2.4 Date/Time Start
2317 property-dtstart = element dtstart {
2319 element parameters {
2329 property-duration = element duration {
2331 element parameters { empty }?,
2336 # 3.8.2.6 Free/Busy Time
2338 property-freebusy = element freebusy {
2340 element parameters {
2348 # 3.8.2.7 Time Transparency
2350 property-transp = element transp {
2354Daboo, et al. Standards Track [Page 42]
2356RFC 6321 xCal August 2011
2359 element parameters { empty }?,
2367 # 3.8.3 Time Zone Component Properties
2369 # 3.8.3.1 Time Zone Identifier
2371 property-tzid = element tzid {
2373 element parameters { empty }?,
2378 # 3.8.3.2 Time Zone Name
2380 property-tzname = element tzname {
2382 element parameters {
2389 # 3.8.3.3 Time Zone Offset From
2391 property-tzoffsetfrom = element tzoffsetfrom {
2393 element parameters { empty }?,
2398 # 3.8.3.4 Time Zone Offset To
2400 property-tzoffsetto = element tzoffsetto {
2402 element parameters { empty }?,
2410Daboo, et al. Standards Track [Page 43]
2412RFC 6321 xCal August 2011
2415 # 3.8.3.5 Time Zone URL
2417 property-tzurl = element tzurl {
2419 element parameters { empty }?,
2424 # 3.8.4 Relationship Component Properties
2428 property-attendee = element attendee {
2430 element parameters {
2449 property-contact = element contact {
2451 element parameters {
2461 property-organizer = element organizer {
2466Daboo, et al. Standards Track [Page 44]
2468RFC 6321 xCal August 2011
2471 element parameters {
2481 # 3.8.4.4 Recurrence ID
2483 property-recurid = element recurrence-id {
2485 element parameters {
2494 # 3.8.4.5 Related-To
2496 property-related = element related-to {
2498 element parameters {
2505 # 3.8.4.6 Uniform Resource Locator
2507 property-url = element url {
2509 element parameters { empty }?,
2514 # 3.8.4.7 Unique Identifier
2516 property-uid = element uid {
2518 element parameters { empty }?,
2522Daboo, et al. Standards Track [Page 45]
2524RFC 6321 xCal August 2011
2530 # 3.8.5 Recurrence Component Properties
2532 # 3.8.5.1 Exception Date/Times
2534 property-exdate = element exdate {
2536 element parameters {
2544 # 3.8.5.2 Recurrence Date/Times
2546 property-rdate = element rdate {
2548 element parameters {
2557 # 3.8.5.3 Recurrence Rule
2559 property-rrule = element rrule {
2561 element parameters { empty }?,
2566 # 3.8.6 Alarm Component Properties
2570 property-action = element action {
2572 element parameters { empty }?,
2578Daboo, et al. Standards Track [Page 46]
2580RFC 6321 xCal August 2011
2590 # 3.8.6.2 Repeat Count
2592 property-repeat = element repeat {
2594 element parameters { empty }?,
2601 property-trigger = element trigger {
2604 element parameters {
2611 element parameters { empty }?,
2617 # 3.8.7 Change Management Component Properties
2619 # 3.8.7.1 Date/Time Created
2621 property-created = element created {
2623 element parameters { empty }?,
2628 # 3.8.7.2 Date/Time Stamp
2630 property-dtstamp = element dtstamp {
2634Daboo, et al. Standards Track [Page 47]
2636RFC 6321 xCal August 2011
2639 element parameters { empty }?,
2644 # 3.8.7.3 Last Modified
2646 property-last-mod = element last-modified {
2648 element parameters { empty }?,
2653 # 3.8.7.4 Sequence Number
2655 property-seq = element sequence {
2657 element parameters { empty }?,
2662 # 3.8.8 Miscellaneous Component Properties
2664 # 3.8.8.3 Request Status
2666 property-rstatus = element request-status {
2668 element parameters {
2672 element code { xsd:string },
2673 element description { xsd:string },
2674 element data { xsd:string }?
2690Daboo, et al. Standards Track [Page 48]
2692RFC 6321 xCal August 2011
2697 This section contains two examples of iCalendar objects with their
2698 xCal representation.
2702B.1.1. iCalendar Data
2706 PRODID:-//Example Inc.//Example Calendar//EN
2709 DTSTAMP:20080205T191224Z
2711 SUMMARY:Planning meeting
2712 UID:4088E990AD89CB3DBB484909
2718 <?xml version="1.0" encoding="utf-8"?>
2719 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
2723 <text>GREGORIAN</text>
2726 <text>-//Example Inc.//Example Calendar//EN</text>
2736 <date-time>2008-02-05T19:12:24Z</date-time>
2739 <date>2008-10-06</date>
2742 <text>Planning meeting</text>
2746Daboo, et al. Standards Track [Page 49]
2748RFC 6321 xCal August 2011
2753 <text>4088E990AD89CB3DBB484909</text>
2763B.2.1. iCalendar Data
2766 PRODID:-//Example Corp.//Example Client//EN
2768 LAST-MODIFIED:20040110T032845Z
2771 DTSTART:20000404T020000
2772 RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
2778 DTSTART:20001026T020000
2779 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
2786 DTSTAMP:20060206T001121Z
2787 DTSTART;TZID=US/Eastern:20060102T120000
2789 RRULE:FREQ=DAILY;COUNT=5
2790 RDATE;TZID=US/Eastern;VALUE=PERIOD:20060102T150000/PT2H
2792 DESCRIPTION:We are having a meeting all this week at 12 pm fo
2793 r one hour\, with an additional meeting on the first day 2 h
2794 ours long.\nPlease bring your own lunch for the 12 pm meetin
2796 UID:00959BC664CA650E933C892C@example.com
2802Daboo, et al. Standards Track [Page 50]
2804RFC 6321 xCal August 2011
2807 DTSTAMP:20060206T001121Z
2808 DTSTART;TZID=US/Eastern:20060104T140000
2810 RECURRENCE-ID;TZID=US/Eastern:20060104T120000
2811 SUMMARY:Event #2 bis
2812 UID:00959BC664CA650E933C892C@example.com
2818 <?xml version="1.0" encoding="utf-8" ?>
2819 <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
2823 <text>-//Example Inc.//Example Client//EN</text>
2833 <date-time>2004-01-10T03:28:45Z</date-time>
2835 <tzid>US/Eastern</tzid>
2841 <date-time>2000-04-04T02:00:00</date-time>
2847 <bymonth>4</bymonth>
2854 <utc-offset>-05:00</utc-offset>
2858Daboo, et al. Standards Track [Page 51]
2860RFC 6321 xCal August 2011
2865 <utc-offset>-04:00</utc-offset>
2872 <date-time>2000-10-26T02:00:00</date-time>
2878 <bymonth>10</bymonth>
2885 <utc-offset>-04:00</utc-offset>
2888 <utc-offset>-05:00</utc-offset>
2897 <date-time>2006-02-06T00:11:21Z</date-time>
2901 <tzid><text>US/Eastern</text></tzid>
2903 <date-time>2006-01-02T12:00:00</date-time>
2906 <duration>PT1H</duration>
2914Daboo, et al. Standards Track [Page 52]
2916RFC 6321 xCal August 2011
2924 <tzid><text>US/Eastern</text></tzid>
2927 <start>2006-01-02T15:00:00</start>
2928 <duration>PT2H</duration>
2932 <text>Event #2</text>
2935 <text>We are having a meeting all this week at 12
2936 pm for one hour, with an additional meeting on the first day
2937 2 hours long.
Please bring your own lunch for the 12 pm
2941 <text>00959BC664CA650E933C892C@example.com</text>
2948 <date-time>2006-02-06T00:11:21Z</date-time>
2952 <tzid><text>US/Eastern</text></tzid>
2954 <date-time>2006-01-04T14:00:00</date-time>
2957 <duration>PT1H</duration>
2961 <tzid><text>US/Eastern</text></tzid>
2963 <date-time>2006-01-04T12:00:00</date-time>
2966 <text>Event #2 bis</text>
2970Daboo, et al. Standards Track [Page 53]
2972RFC 6321 xCal August 2011
2977 <text>00959BC664CA650E933C892C@example.com</text>
2993 EMail: cyrus@daboo.name
2994 URI: http://www.apple.com/
2998 Rensselaer Polytechnic Institute
3003 EMail: douglm@rpi.edu
3004 URI: http://www.rpi.edu/
3008 Microsoft Corporation
3013 EMail: steven.lees@microsoft.com
3014 URI: http://www.microsoft.com/
3026Daboo, et al. Standards Track [Page 54]