diff options
Diffstat (limited to 'vendor/sabre/dav/docs/rfc6321.txt')
-rw-r--r-- | vendor/sabre/dav/docs/rfc6321.txt | 3027 |
1 files changed, 0 insertions, 3027 deletions
diff --git a/vendor/sabre/dav/docs/rfc6321.txt b/vendor/sabre/dav/docs/rfc6321.txt deleted file mode 100644 index c038c64cf..000000000 --- a/vendor/sabre/dav/docs/rfc6321.txt +++ /dev/null @@ -1,3027 +0,0 @@ - - - - - - -Internet Engineering Task Force (IETF) C. Daboo -Request for Comments: 6321 Apple, Inc. -Category: Standards Track M. Douglass -ISSN: 2070-1721 RPI - S. Lees - Microsoft - August 2011 - - - xCal: The XML Format for iCalendar - -Abstract - - This specification defines "xCal", an XML format for iCalendar data. - -Status of This Memo - - This is an Internet Standards Track document. - - This document is a product of the Internet Engineering Task Force - (IETF). It represents the consensus of the IETF community. It has - received public review and has been approved for publication by the - Internet Engineering Steering Group (IESG). Further information on - Internet Standards is available in Section 2 of RFC 5741. - - Information about the current status of this document, any errata, - and how to provide feedback on it may be obtained at - http://www.rfc-editor.org/info/rfc6321. - -Copyright Notice - - Copyright (c) 2011 IETF Trust and the persons identified as the - document authors. All rights reserved. - - This document is subject to BCP 78 and the IETF Trust's Legal - Provisions Relating to IETF Documents - (http://trustee.ietf.org/license-info) in effect on the date of - publication of this document. Please review these documents - carefully, as they describe your rights and restrictions with respect - to this document. Code Components extracted from this document must - include Simplified BSD License text as described in Section 4.e of - the Trust Legal Provisions and are provided without warranty as - described in the Simplified BSD License. - - - - - - - - -Daboo, et al. Standards Track [Page 1] - -RFC 6321 xCal August 2011 - - -Table of Contents - - 1. Introduction ....................................................3 - 2. Conventions Used in This Document ...............................4 - 3. Converting from iCalendar to xCal ...............................4 - 3.1. Pre-Processing .............................................4 - 3.2. iCalendar Stream (RFC 5545, Section 3.4) ...................5 - 3.3. Components (RFC 5545, Section 3.6) .........................6 - 3.4. Properties (RFC 5545, Sections 3.7 and 3.8) ................6 - 3.4.1. Special Cases for Properties ........................8 - 3.4.1.1. Multi-Valued Properties ....................8 - 3.4.1.2. GEO Property ...............................9 - 3.4.1.3. REQUEST-STATUS Property ....................9 - 3.5. Parameters (RFC 5545, Section 3.2) ........................10 - 3.5.1. VALUE Parameter ....................................11 - 3.6. Values (RFC 5545, Section 3.3) ............................11 - 3.6.1. Binary (RFC 5545, Section 3.3.1) ...................12 - 3.6.2. Boolean (RFC 5545, Section 3.3.2) .................12 - 3.6.3. Calendar User Address (RFC 5545, Section 3.3.3) ....12 - 3.6.4. Date (RFC 5545, Section 3.3.4) .....................12 - 3.6.5. Date-Time (RFC 5545, Section 3.3.5) ................13 - 3.6.6. Duration (RFC 5545, Section 3.3.6) .................13 - 3.6.7. Float (RFC 5545, Section 3.3.7) ....................13 - 3.6.8. Integer (RFC 5545, Section 3.3.8) ..................14 - 3.6.9. Period of Time (RFC 5545, Section 3.3.9) ...........14 - 3.6.10. Recurrence Rule (RFC 5545, Section 3.3.10) ........14 - 3.6.11. Text (RFC 5545, Section 3.3.11) ...................15 - 3.6.12. Time (RFC 5545, Section 3.3.12) ...................15 - 3.6.13. URI (RFC 5545, Section 3.3.13) ....................15 - 3.6.14. UTC Offset (RFC 5545, Section 3.3.14) .............16 - 3.7. Extensions ................................................16 - 4. Converting from xCal into iCalendar ............................16 - 4.1. Converting XML Extensions into iCalendar ..................16 - 4.2. The XML Property for iCalendar ............................17 - 5. Handling Unrecognized Properties or Parameters .................18 - 6. Security Considerations ........................................19 - 7. IANA Considerations ............................................20 - 7.1. Namespace Registration ....................................20 - 7.2. Media Type ................................................20 - 7.3. iCalendar Property Registrations ..........................21 - 8. Acknowledgments ................................................22 - 9. References .....................................................22 - 9.1. Normative References ......................................22 - 9.2. Informative References ....................................22 - - - - - - - -Daboo, et al. Standards Track [Page 2] - -RFC 6321 xCal August 2011 - - - Appendix A. RELAX NG Schema .......................................23 - Appendix B. Examples ..............................................49 - B.1. Example 1 ..................................................49 - B.1.1. iCalendar Data .........................................49 - B.1.2. XML Data ...............................................49 - B.2. Example 2 ..................................................50 - B.2.1. iCalendar Data .........................................50 - B.2.2. XML Data ...............................................51 - -1. Introduction - - The iCalendar data format [RFC5545] is a widely deployed interchange - format for calendaring and scheduling data. While many applications - and services consume and generate calendar data, iCalendar is a - specialized format that requires its own parser/generator. In - contrast, XML-based formats are widely used for interoperability - between applications, and the many tools that generate, parse, and - manipulate XML make it easier to work with than iCalendar. - - The purpose of this specification is to define "xCal", an XML format - for iCalendar data. xCal is defined as a straightforward mapping into - XML from iCalendar, so that iCalendar data can be converted to XML, - and then back to iCalendar, without losing any semantic meaning in - the data. Anyone creating xCal calendar data according to this - specification will know that their data can be converted to a valid - iCalendar representation as well. - - Key design considerations are: - - Round-tripping (converting an iCalendar instance to xCal and back) - will give the same semantic result as the starting point. That - is, all components, properties, and property parameters are - guaranteed to be preserved, with the exception of those that have - default values. - - xCal preserves the semantics of the iCalendar data. While a - simple consumer can easily browse the calendar data in xCal, a - full understanding of iCalendar is still required in order to - modify and/or fully comprehend the calendar data. - - xCal has the ability to handle many extensions to the underlying - iCalendar specification without requiring an update to this - document. - - - - - - - - -Daboo, et al. Standards Track [Page 3] - -RFC 6321 xCal August 2011 - - -2. Conventions Used in This Document - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in [RFC2119]. - - When XML element types in the namespace - "urn:ietf:params:xml:ns:icalendar-2.0" are referenced in this - document outside of the context of an XML fragment, the string "IC:" - will be prefixed to the element types. - - Some examples in this document contain "partial" XML documents used - for illustrative purposes. In these examples, three periods "..." - are used to indicate a portion of the document that has been removed - for compactness. - -3. Converting from iCalendar to xCal - - This section describes how iCalendar data is converted to xCal using - a simple mapping between the iCalendar data model and XML elements. - -3.1. Pre-Processing - - iCalendar uses a line folding mechanism to limit lines of data to a - maximum line length (typically 72 characters) to ensure maximum - likelihood of preserving data integrity as it is transported via - various means (e.g., email) -- see Section 3.1 of [RFC5545]. Prior - to converting iCalendar data into xCal, all folded lines MUST be - unfolded. - - iCalendar data uses an "escape" character sequence for text values - and property parameter values. When such text elements are converted - into xCal, the escaping MUST be removed. - - iCalendar uses a base64 encoding for binary data. However, it does - not restrict the encoding from being applied to non-binary value - types. So, the following rules MUST be applied when processing a - property with the "ENCODING" property parameter set to "BASE64": - - o If the property value type is "BINARY", the base64 encoding MUST - be preserved. - - o If the value type is not "BINARY", the "ENCODING" property - parameter MUST be removed, and the value MUST be base64 decoded. - - When base64 encoding and decoding are used, they MUST conform to - Section 4 of [RFC4648], which is the base64 method used in [RFC5545]. - - - - -Daboo, et al. Standards Track [Page 4] - -RFC 6321 xCal August 2011 - - - One key difference in the formatting of values used in iCalendar and - xCal is that, in xCal, the specification uses date/time and UTC - offset values aligned with the syntax of - [W3C.REC-xmlschema-2-20041028] to aid with XML processing. - -3.2. iCalendar Stream (RFC 5545, Section 3.4) - - At the top level of the iCalendar object model is an "iCalendar - stream". This object encompasses multiple "iCalendar objects". In - xCal, the entire stream is contained in the root IC:icalendar XML - element. - - An iCalendar stream can contain one or more iCalendar objects. Each - iCalendar object, delimited by "BEGIN:VCALENDAR" and "END:VCALENDAR", - is enclosed by the IC:vcalendar XML element. - - Example: - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - <vcalendar> - ... - </vcalendar> - </icalendar> - - iCalendar objects are comprised of a set of "components", - "properties", "parameters", and "values". A "component" can contain - other "components" or "properties". A "property" has a value and a - set of zero or more "parameters". - - In xCal, component elements, for example, IC:vevent and IC:vtodo, are - contained within an IC:components XML element. Within the component - element, another IC:components element could appear (representing - components nested within components) or the IC:properties XML element - could appear. IC:properties is used to encapsulate iCalendar - properties. - - Each iCalendar property will be mapped to its own XML element as - described below. Within each of these elements, there is zero or one - IC:parameters XML element used to encapsulate any iCalendar property - parameters. Additionally there will be one or more XML elements - representing the value of the iCalendar property. - - - - - - - - - -Daboo, et al. Standards Track [Page 5] - -RFC 6321 xCal August 2011 - - - Example: - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - <vcalendar> - <properties> - ... - </properties> - <components> - ... - </components> - </vcalendar> - </icalendar> - - +------------------+--------------+------------------+ - | Item | XML element | XML Definition | - +------------------+--------------+------------------+ - | iCalendar Stream | IC:icalendar | Appendix A # 3.4 | - | VCALENDAR | IC:vcalendar | Appendix A # 3.6 | - +------------------+--------------+------------------+ - -3.3. Components (RFC 5545, Section 3.6) - - Each calendar component in the "VCALENDAR" object, delimited by - "BEGIN" and "END", will be converted to an enclosing XML element with - the same name, but in lowercase. As an example, the table below - shows iCalendar-to-xCal mappings for current iCalendar components. - Any new iCalendar components added in the future will be converted in - the same way. - - +-----------+--------------+--------------------+ - | Component | XML element | XML Definition | - +-----------+--------------+--------------------+ - | VEVENT | IC:vevent | Appendix A # 3.6.1 | - | VTODO | IC:vtodo | Appendix A # 3.6.2 | - | VJOURNAL | IC:vjournal | Appendix A # 3.6.3 | - | VFREEBUSY | IC:vfreebusy | Appendix A # 3.6.4 | - | VTIMEZONE | IC:vtimezone | Appendix A # 3.6.5 | - | STANDARD | IC:standard | Appendix A # 3.6.5 | - | DAYLIGHT | IC:daylight | Appendix A # 3.6.5 | - | VALARM | IC:valarm | Appendix A # 3.6.6 | - +-----------+--------------+--------------------+ - -3.4. Properties (RFC 5545, Sections 3.7 and 3.8) - - iCalendar properties, whether they apply to the "VCALENDAR" object or - to a component, are handled in a consistent way in the xCal format. - - - - -Daboo, et al. Standards Track [Page 6] - -RFC 6321 xCal August 2011 - - - iCalendar properties are enclosed in the XML element IC:properties. - - Each individual iCalendar property is represented in xCal by an - element of the same name as the iCalendar property, but in lowercase. - For example, the "CALSCALE" property is represented in xCal by the - IC:calscale element. - - Example: - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - <vcalendar> - <properties> - <calscale>...</calscale> - <version>...</version> - <prodid>...</prodid> - </properties> - <components> - ... - </components> - </vcalendar> - </icalendar> - - Each property can contain an IC:parameters XML element encapsulating - any iCalendar property parameters associated with the iCalendar - property. - - Each property will contain one or more "value" XML elements as - described below representing the value of the iCalendar property. - - As an example, the table below shows iCalendar-to-xCal mappings for - current iCalendar properties. Any new iCalendar properties added in - the future will be converted in the same way. - - +------------------+---------------------+-----------------------+ - | Property | XML element | XML Definition | - +------------------+---------------------+-----------------------+ - | CALSCALE | IC:calscale | Appendix A # 3.7.1 | - | METHOD | IC:method | Appendix A # 3.7.2 | - | PRODID | IC:prodid | Appendix A # 3.7.3 | - | VERSION | IC:version | Appendix A # 3.7.4 | - | ATTACH | IC:attach | Appendix A # 3.8.1.1 | - | CATEGORIES | IC:categories | Appendix A # 3.8.1.2 | - | CLASS | IC:class | Appendix A # 3.8.1.3 | - | COMMENT | IC:comment | Appendix A # 3.8.1.4 | - | DESCRIPTION | IC:description | Appendix A # 3.8.1.5 | - | GEO | IC:geo | Appendix A # 3.8.1.6 | - | LOCATION | IC:location | Appendix A # 3.8.1.7 | - - - -Daboo, et al. Standards Track [Page 7] - -RFC 6321 xCal August 2011 - - - | PERCENT-COMPLETE | IC:percent-complete | Appendix A # 3.8.1.8 | - | PRIORITY | IC:priority | Appendix A # 3.8.1.9 | - | RESOURCES | IC:resources | Appendix A # 3.8.1.10 | - | STATUS | IC:status | Appendix A # 3.8.1.11 | - | SUMMARY | IC:summary | Appendix A # 3.8.1.12 | - | COMPLETED | IC:completed | Appendix A # 3.8.2.1 | - | DTEND | IC:dtend | Appendix A # 3.8.2.2 | - | DUE | IC:due | Appendix A # 3.8.2.3 | - | DTSTART | IC:dtstart | Appendix A # 3.8.2.4 | - | DURATION | IC:duration | Appendix A # 3.8.2.5 | - | FREEBUSY | IC:freebusy | Appendix A # 3.8.2.6 | - | TRANSP | IC:transp | Appendix A # 3.8.2.7 | - | TZID | IC:tzid | Appendix A # 3.8.3.1 | - | TZNAME | IC:tzname | Appendix A # 3.8.3.2 | - | TZOFFSETFROM | IC:tzoffsetfrom | Appendix A # 3.8.3.3 | - | TZOFFSETTO | IC:tzoffsetto | Appendix A # 3.8.3.4 | - | TZURL | IC:tzurl | Appendix A # 3.8.3.5 | - | ATTENDEE | IC:attendee | Appendix A # 3.8.4.1 | - | CONTACT | IC:contact | Appendix A # 3.8.4.2 | - | ORGANIZER | IC:organizer | Appendix A # 3.8.4.3 | - | RECURRENCE-ID | IC:recurrence-id | Appendix A # 3.8.4.4 | - | RELATED-TO | IC:related-to | Appendix A # 3.8.4.5 | - | URL | IC:url | Appendix A # 3.8.4.6 | - | UID | IC:uid | Appendix A # 3.8.4.7 | - | EXDATE | IC:exdate | Appendix A # 3.8.5.1 | - | RDATE | IC:rdate | Appendix A # 3.8.5.2 | - | RRULE | IC:rrule | Appendix A # 3.8.5.3 | - | ACTION | IC:action | Appendix A # 3.8.6.1 | - | REPEAT | IC:repeat | Appendix A # 3.8.6.2 | - | TRIGGER | IC:trigger | Appendix A # 3.8.6.3 | - | CREATED | IC:created | Appendix A # 3.8.7.1 | - | DTSTAMP | IC:dtstamp | Appendix A # 3.8.7.2 | - | LAST-MODIFIED | IC:last-modified | Appendix A # 3.8.7.3 | - | SEQUENCE | IC:sequence | Appendix A # 3.8.7.4 | - | REQUEST-STATUS | IC:request-status | Appendix A # 3.8.8.3 | - +------------------+---------------------+-----------------------+ - -3.4.1. Special Cases for Properties - - This section describes some properties that have special handling - when converting to xCal. - -3.4.1.1. Multi-Valued Properties - - The following iCalendar properties can have values that consist of a - list of "standard" iCalendar values separated by a specific - delimiter. In xCal, these properties are represented by an XML - element that contains multiple "value" elements (Section 3.6). - - - -Daboo, et al. Standards Track [Page 8] - -RFC 6321 xCal August 2011 - - - +------------+---------------+-----------------------+ - | Property | XML element | XML Definition | - +------------+---------------+-----------------------+ - | CATEGORIES | IC:categories | Appendix A # 3.8.1.2 | - | RESOURCES | IC:resources | Appendix A # 3.8.1.10 | - | FREEBUSY | IC:freebusy | Appendix A # 3.8.2.6 | - | EXDATE | IC:exdate | Appendix A # 3.8.5.1 | - | RDATE | IC:rdate | Appendix A # 3.8.5.2 | - +------------+---------------+-----------------------+ - -3.4.1.2. GEO Property - - In iCalendar, the "GEO" property value is defined as a semicolon- - separated list of two "FLOAT" values; the first representing latitude - and the second longitude. - - In xCal, the value for the IC:geo element is represented by two XML - elements. These are an IC:latitude element and an IC:longitude - element, each of which contains float values. See Appendix A # - 3.8.1.6. - - Example: - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - ... - <geo> - <latitude>37.386013</latitude> - <longitude>-122.082932</longitude> - </geo> - ... - </icalendar> - -3.4.1.3. REQUEST-STATUS Property - - In iCalendar, the "REQUEST-STATUS" property value is defined as a - semicolon-separated list of two or three "TEXT" values. The first - represents a code, the second a description, and the third any - additional data. - - In xCal, the value for the IC:request-status element is represented - by two or three XML elements. These are an IC:code element, an IC: - description element, and an IC:data element, each of which contains - the corresponding "TEXT" values. If there is no additional data in - the iCalendar value, the IC:data element (which would be empty) - SHOULD NOT be present. See Appendix A # 3.8.8.3. - - - - - -Daboo, et al. Standards Track [Page 9] - -RFC 6321 xCal August 2011 - - - Example: - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - ... - <request-status> - <code>2.0</code> - <description>Success</description> - </request-status> - ... - </icalendar> - -3.5. Parameters (RFC 5545, Section 3.2) - - iCalendar property parameters are enclosed in the XML element IC: - parameters, which occurs in each property XML element. If there are - no iCalendar property parameters, the IC:parameters element (which - would be empty) SHOULD NOT be present. - - Each individual iCalendar property parameter is represented in xCal - by an element of the same name as the iCalendar property parameter, - but in lowercase. For example, the "PARTSTAT" property parameter is - represented in xCal by the IC:partstat element. - - Example: - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - <vcalendar> - ... - <components> - ... - <attendee> - <parameters> - <partstat><text>NEEDS-ACTION</text></partstat> - </parameters> - ... - </attendee> - ... - </components> - </vcalendar> - </icalendar> - - Each XML parameter element contains one or more child XML elements - representing iCalendar value types. - - - - - - -Daboo, et al. Standards Track [Page 10] - -RFC 6321 xCal August 2011 - - - As an example, the table below shows iCalendar-to-xCal mappings for - current iCalendar parameters. Any new iCalendar parameters added in - the future will be converted in the same way. - - +----------------+-------------------+---------------------+ - | Parameter | XML element | XML Definition | - +----------------+-------------------+---------------------+ - | ALTREP | IC:altrep | Appendix A # 3.2.1 | - | CN | IC:cn | Appendix A # 3.2.2 | - | CUTYPE | IC:cutype | Appendix A # 3.2.3 | - | DELEGATED-FROM | IC:delegated-from | Appendix A # 3.2.4 | - | DELEGATED-TO | IC:delegated-to | Appendix A # 3.2.5 | - | DIR | IC:dir | Appendix A # 3.2.6 | - | ENCODING | IC:encoding | Appendix A # 3.2.7 | - | FMTTYPE | IC:fmttype | Appendix A # 3.2.8 | - | FBTYPE | IC:fbtype | Appendix A # 3.2.9 | - | LANGUAGE | IC:language | Appendix A # 3.2.10 | - | MEMBER | IC:member | Appendix A # 3.2.11 | - | PARTSTAT | IC:partstat | Appendix A # 3.2.12 | - | RANGE | IC:range | Appendix A # 3.2.13 | - | RELATED | IC:related | Appendix A # 3.2.14 | - | RELTYPE | IC:reltype | Appendix A # 3.2.15 | - | ROLE | IC:role | Appendix A # 3.2.16 | - | RSVP | IC:rsvp | Appendix A # 3.2.17 | - | SENT-BY | IC:sent-by | Appendix A # 3.2.18 | - | TZID | IC:tzid | Appendix A # 3.2.19 | - +----------------+-------------------+---------------------+ - -3.5.1. VALUE Parameter - - iCalendar defines a "VALUE" property parameter (Section 3.2.20 of - [RFC5545]). This property parameter is not mapped to an xCal XML - element. Instead, the value type is handled by having different XML - elements for each value, and these appear inside of property - elements. Thus, when converting from iCalendar to xCal, any "VALUE" - property parameters are skipped. When converting from xCal into - iCalendar, the appropriate "VALUE" property parameter MUST be - included in the iCalendar property if the value type is not the - default value type for that property. - -3.6. Values (RFC 5545, Section 3.3) - - In the typical case, iCalendar value types are mapped into XML - elements with a matching name in all lowercase. In the case of the - value for a recurrence rule (see below), iCalendar defines - "structured" values, and these are mapped into separate child - elements for each value element. - - - - -Daboo, et al. Standards Track [Page 11] - -RFC 6321 xCal August 2011 - - -3.6.1. Binary (RFC 5545, Section 3.3.1) - - Description: iCalendar "BINARY" property values are represented by - the IC:binary XML element. The content of the element is base64 - encoded data, conforming to Section 4 of [RFC4648], which is the - base64 method used in [RFC5545]. Whitespace MAY be inserted into - the data at any point to "wrap" the data to reasonable line - lengths. When converting back to iCalendar, the whitespace MUST - first be removed. - - XML Definition: Appendix A # 3.3.1 - - Example: - - <binary>SGVsbG8gV29ybGQh</binary> - -3.6.2. Boolean (RFC 5545, Section 3.3.2) - - Description: iCalendar "BOOLEAN" property values are represented by - the IC:boolean XML element. The content of the element is a - boolean value. - - XML Definition: Appendix A # 3.3.2 - - Example: - - <boolean>true</boolean> - -3.6.3. Calendar User Address (RFC 5545, Section 3.3.3) - - Description: iCalendar "CAL-ADDRESS" property values are represented - by the IC:cal-address XML element. The content of the element is - a URI. - - XML Definition: Appendix A # 3.3.3 - - Example: - - <cal-address>mailto:cyrus@example.com</cal-address> - -3.6.4. Date (RFC 5545, Section 3.3.4) - - Description: iCalendar "DATE" property values are represented by the - IC:date XML element. The content of the element is the same date - value specified by [RFC5545], with the exception that the date - components are separated by "-" characters, for consistency with - [W3C.REC-xmlschema-2-20041028]. - - - - -Daboo, et al. Standards Track [Page 12] - -RFC 6321 xCal August 2011 - - - XML Definition: Appendix A # 3.3.4 - - Example: - - <date>2011-05-17</date> - -3.6.5. Date-Time (RFC 5545, Section 3.3.5) - - Description: iCalendar "DATE-TIME" property values are represented - by the IC:date-time XML element. The content of the element is - the same date-time value specified by [RFC5545], with the - exception that the date components are separated by "-" - characters, and the time components are separated by ":" - characters, for consistency with [W3C.REC-xmlschema-2-20041028]. - Note that while [W3C.REC-xmlschema-2-20041028] allows for a UTC - offset to be included in date/time values, xCal does not use that, - and instead follows the iCalendar behavior of using time zone - definitions via the "TZID" property parameter. - - XML Definition: Appendix A # 3.3.5 - - Example: - - <date-time>2011-05-17T12:00:00</date-time> - -3.6.6. Duration (RFC 5545, Section 3.3.6) - - Description: iCalendar "DURATION" property values are represented by - the IC:duration XML element. The content of the element is the - same duration value specified by [RFC5545]. - - XML Definition: Appendix A # 3.3.6 - - Example: - - <duration>P1D</duration> - -3.6.7. Float (RFC 5545, Section 3.3.7) - - Description: iCalendar "FLOAT" property values are represented by - the IC:float XML element. The content of the element is a text - representation of a floating point number. - - XML Definition: Appendix A # 3.3.7 - - Example: - - <float>0.5</float> - - - -Daboo, et al. Standards Track [Page 13] - -RFC 6321 xCal August 2011 - - -3.6.8. Integer (RFC 5545, Section 3.3.8) - - Description: iCalendar "INTEGER" property values are represented by - the IC:integer XML element. The content of the element is a text - representation of an integer number. - - XML Definition: Appendix A # 3.3.8 - - Examples: - - <integer>50</integer> - <integer>-100</integer> - -3.6.9. Period of Time (RFC 5545, Section 3.3.9) - - Description: iCalendar "PERIOD" property values are represented by - the IC:period XML element. The content of the element is child - elements representing the start, end, or duration components of - the period. - - XML Definition: Appendix A # 3.3.9 - - Example: - - <period> - <start>2011-05-17T12:00:00</start> - <duration>P1H</duration> - </period> - -3.6.10. Recurrence Rule (RFC 5545, Section 3.3.10) - - Description: iCalendar "RECUR" property values are represented by - the IC:recur XML element. The content of the element is child - elements representing the various components of a recurrence rule. - - XML Definition: Appendix A # 3.3.10 - - Example: - - <recur> - <freq>YEARLY</freq> - <count>5</count> - <byday>-1SU</byday> - <bymonth>10</bymonth> - </recur> - - - - - - -Daboo, et al. Standards Track [Page 14] - -RFC 6321 xCal August 2011 - - -3.6.11. Text (RFC 5545, Section 3.3.11) - - Description: iCalendar "TEXT" property values are represented by the - IC:text XML element. The content of the element is simple text. - - XML Definition: Appendix A # 3.3.11 - - Example: - - <text>Hello World!</text> - -3.6.12. Time (RFC 5545, Section 3.3.12) - - Description: iCalendar "TIME" property values are represented by the - IC:time XML element. The content of the element is the same time - value specified by [RFC5545], with the exception that the time - components are separated by ":" characters, for consistency with - [W3C.REC-xmlschema-2-20041028]. Note that while - [W3C.REC-xmlschema-2-20041028] allows for a UTC offset to be - included in date/time values, xCal does not use that, and instead - follows the iCalendar behavior of using time zone definitions via - the "TZID" property parameter. - - XML Definition: Appendix A # 3.3.12 - - Example: - - <time>12:00:00</time> - -3.6.13. URI (RFC 5545, Section 3.3.13) - - Description: iCalendar "URI" property values are represented by the - IC:uri XML element. The content of the element is a URI. - - XML Definition: Appendix A # 3.3.13 - - Example: - - <uri>http://calendar.example.com</uri> - - - - - - - - - - - - -Daboo, et al. Standards Track [Page 15] - -RFC 6321 xCal August 2011 - - -3.6.14. UTC Offset (RFC 5545, Section 3.3.14) - - Description: iCalendar "UTC-OFFSET" property values are represented - by the IC:utc-offset XML element. The content of the element is - the same UTC offset value specified by [RFC5545], with the - exception that the hour, minute, and second components are - separated by a ":" character, for consistency with - [W3C.REC-xmlschema-2-20041028]. - - XML Definition: Appendix A # 3.3.14 - - Example: - - <utc-offset>-05:00</utc-offset> - -3.7. Extensions - - iCalendar extension properties and property parameters (those with an - "X-" prefix in their name) are handled in the same way as other - properties and property parameters: the property or property - parameter is represented by an XML element with the same name, but in - lowercase, e.g., the "X-FOO" property in iCalendar turns into the IC: - x-foo element in xCal. However, see Section 5 for how to deal with - default values for unrecognized extension properties or property - parameters. - -4. Converting from xCal into iCalendar - - When converting component, property, and property parameter values, - the names SHOULD be converted to uppercase. Although iCalendar names - are case insensitive, common practice is to keep them all uppercase - following the actual definitions in [RFC5545]. - - BACKSLASH character encoding and line folding MUST be applied to the - resulting iCalendar data as required by [RFC5545]. - - Non-binary value types MUST NOT be base64 encoded. - -4.1. Converting XML Extensions into iCalendar - - XML extensions are converted back to iCalendar in one of two ways, - depending on whether the extensions are in the iCalendar XML - namespace or in an external namespace. - - Extensions that are part of the iCalendar XML namespace MUST have - element names that begin with "x-", and will be converted back to the - equivalent extension property in iCalendar. For example, the "x-foo" - element will convert to the "X-FOO" iCalendar property. - - - -Daboo, et al. Standards Track [Page 16] - -RFC 6321 xCal August 2011 - - - Extensions that are in a namespace other than the iCalendar XML - namespace SHOULD be preserved in the iCalendar representation using - the "XML" iCalendar property described in Section 4.2. Only those - extension elements that are immediate child elements of the IC: - properties element are converted, any others are ignored. - -4.2. The XML Property for iCalendar - - This section describes an extension property for iCalendar, as - covered in Section 8.2.3 of [RFC5545]. - - Property name: XML - - Purpose: To embed extended XML-encoded iCalendar data in the - iCalendar format. - - Value type: The default value type is "TEXT". The value type can - also be set to "BINARY" to indicate base64 encoded content. - - Property parameters: IANA, non-standard, inline encoding, and value - data type property parameters can be specified on this property. - - Conformance: The property can be specified multiple times in any - calendar component. - - Description: The value of this property is a single XML 1.0 - [W3C.REC-xml-20081126] element. The "XML" property MUST NOT be used - to contain properties that are already defined in iCalendar. Since - all elements in the urn:ietf:params:xml:ns:icalendar-2.0 namespace - convert to a well-defined iCalendar object, the elements in this - property MUST NOT be in the urn:ietf:params:xml:ns:icalendar-2.0 - namespace. The XML element that is the value of this property MUST - have an XML namespace declaration. - - The default value type for this property is "TEXT", and normal - BACKSLASH character encoding rules for that value MUST be applied. - Note that the source XML can contain characters not allowed in "TEXT" - property values. If this is the case, then the XML data MUST be - base64 encoded. As required by [RFC5545], the "ENCODING" property - parameter MUST be present and set to "BASE64", and the "VALUE" - property parameter MUST be present and set to "BINARY". - - The ordering of "XML" properties is not preserved in the conversion - between xCal and iCalendar. - - Format definition: This property is defined by the following - notation: - - - - -Daboo, et al. Standards Track [Page 17] - -RFC 6321 xCal August 2011 - - - xml = "XML" xmlparam ( ":" text ) / - ( - ";" "ENCODING" "=" "BASE64" - ";" "VALUE" "=" "BINARY" - ":" binary - ) - CRLF - - xmlparam = *(";" other-param) - - Example: The following is an example of a location embedded in KML - markup inside the "XML" property. - - XML:<kml xmlns="http://www.opengis.net/kml/2.2">\n - <Document>\n - <name>KML Sample</name>\n - <open>1</open>\n - <description>An incomplete example of a KML docum - ent - used as an example!</description>\n - </Document>\n - </kml> - -5. Handling Unrecognized Properties or Parameters - - In iCalendar, properties have a default value type specified by their - definition, e.g., "SUMMARY"'s value type is "TEXT" and "DURATION"'s - is "DURATION". When a property uses its default value type, the - "VALUE" property parameter does not need to be specified on the - property. - - When new properties are defined or "X-" properties are used, an - iCalendar<->xCal converter might not recognize them, and know what - the appropriate default value types are, yet they need to be able to - preserve the values. A similar issue arises for unrecognized - property parameters. As a result, the following rules are applied - when dealing with unrecognized properties and property parameters: - - o When converting iCalendar into xCal: - - * Any property that does not include a "VALUE" property parameter - and whose default value type is not known MUST be converted - using the value type XML element IC:unknown. The content of - that element is the unprocessed value text. - - * Any unrecognized property parameter MUST be converted using the - value type XML element IC:unknown, with its content set to the - property parameter value text, treated as if it were a "TEXT" - value or list of "TEXT" values. - - - -Daboo, et al. Standards Track [Page 18] - -RFC 6321 xCal August 2011 - - - o When converting xCal into iCalendar: - - * Any IC:unknown property value XML elements are converted - directly into iCalendar values. The containing property MUST - NOT have a "VALUE" property parameter. - - * Any IC:unknown parameter value XML elements are converted as if - they were IC:text value type XML elements. - - Example: The following is an example of an unrecognized iCalendar - property (that uses a "DATE-TIME" value as its default) and the - equivalent xCal representation of that property. - - iCalendar: - - X-PROPERTY:20110512T120000Z - - xCal: - - <x-property> - <unknown>20110512T120000Z</unknown> - </x-property> - - Example: The following is an example of an unrecognized iCalendar - property parameter (that uses a "DURATION" value as its default) - specified on a recognized iCalendar property, and the equivalent xCal - representation of that property and property parameter. - - iCalendar: - - DTSTART;X-PARAM=PT30M:20110512T130000Z - - xCal: - - <dtstart> - <parameters> - <x-param><unknown>PT30M</unknown></x-param> - </parameters> - <date-time>2011-05-12T13:00:00Z</date-time> - </dtstart> - -6. Security Considerations - - For security considerations specific to calendar data, see Section 7 - of [RFC5545]. Since this specification is a mapping from iCalendar, - no new security concerns are introduced related to calendar data. - - - - - -Daboo, et al. Standards Track [Page 19] - -RFC 6321 xCal August 2011 - - - The use of XML as a format does have security risks. Section 7 of - [RFC3470] discusses these risks. See also the security discussion - for the application/xml type in [RFC3023]. - -7. IANA Considerations - - This document defines a new URN to identify a new XML namespace for - iCalendar data. The URN conforms to a registry mechanism described - in [RFC3688]. - - This document defines a new media type. The registration is in - Section 7.2. - - This document defines a new property for iCalendar. The registration - is in Section 7.3. - -7.1. Namespace Registration - - Registration request for the iCalendar namespace: - - URI: urn:ietf:params:xml:ns:icalendar-2.0 - - Registrant Contact: See the "Authors' Addresses" section of this - document. - - XML: None. Namespace URIs do not represent an XML specification. - -7.2. Media Type - - This section defines the MIME media type for use with iCalendar in - XML data. - - Type name: application - - Subtype name: calendar+xml - - Required parameters: None - - Optional parameters: method, component, and optinfo as defined for - the text/calendar media type in [RFC5545]; charset as defined for - application/xml in [RFC3023]; per [RFC3023], use of the charset - property parameter with the value "utf-8" is STRONGLY RECOMMENDED. - - Encoding considerations: Same as encoding considerations of - application/xml as specified in [RFC3023]. - - - - - - -Daboo, et al. Standards Track [Page 20] - -RFC 6321 xCal August 2011 - - - Security considerations: See Section 6. - - Interoperability considerations: This media type provides an - alternative format for iCalendar data based on XML. - - Published specification: This specification. - - Applications that use this media type: Applications that currently - make use of the text/calendar media type can use this as an - alternative. - - Additional information: - - Magic number(s): None - - File extension(s): xcs - - Macintosh file type code(s): None specified. - - Person & email address to contact for further information: - calsify@ietf.org - - Intended usage: COMMON - - Restrictions on usage: There are no restrictions on where this media - type can be used. - - Author: See the "Authors' Addresses" section of this document. - - Change controller: IETF - -7.3. iCalendar Property Registrations - - This document defines the following new iCalendar property to be - added to the registry defined in Section 8.2.3 of [RFC5545]: - - +----------+---------+-----------------------+ - | Property | Status | Reference | - +----------+---------+-----------------------+ - | XML | Current | RFC 6321, Section 4.2 | - +----------+---------+-----------------------+ - - - - - - - - - - -Daboo, et al. Standards Track [Page 21] - -RFC 6321 xCal August 2011 - - -8. Acknowledgments - - The authors would like to thank the following for their valuable - contributions: Toby Considine, Bernard Desruisseaux, Keith Moore, - Filip Navara, Simon Perreault, Arnaud Quillaud, Peter Saint-Andre, - and Dave Thewlis. This specification originated from the work of the - XML technical committee of the Calendaring and Scheduling Consortium. - -9. References - -9.1. Normative References - - [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate - Requirement Levels", BCP 14, RFC 2119, March 1997. - - [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media - Types", RFC 3023, January 2001. - - [RFC3470] Hollenbeck, S., Rose, M., and L. Masinter, "Guidelines for - the Use of Extensible Markup Language (XML) - within IETF Protocols", BCP 70, RFC 3470, January 2003. - - [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, - January 2004. - - [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data - Encodings", RFC 4648, October 2006. - - [RFC5545] Desruisseaux, B., "Internet Calendaring and Scheduling - Core Object Specification (iCalendar)", RFC 5545, - September 2009. - - [W3C.REC-xml-20081126] - Sperberg-McQueen, C., Yergeau, F., Bray, T., Paoli, J., - and E. Maler, "Extensible Markup Language (XML) 1.0 (Fifth - Edition)", World Wide Web Consortium Recommendation REC- - xml-20081126, November 2008, - <http://www.w3.org/TR/2008/REC-xml-20081126>. - -9.2. Informative References - - [W3C.REC-xmlschema-2-20041028] - Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes - Second Edition", World Wide Web Consortium - Recommendation REC-xmlschema-2-20041028, October 2004, - <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>. - - - - - -Daboo, et al. Standards Track [Page 22] - -RFC 6321 xCal August 2011 - - -Appendix A. RELAX NG Schema - - Below is a RELAX NG schema for iCalendar in XML. The schema is non- - normative and given for reference only. - - This schema uses the compact notation of RELAX NG. The numeric - section numbers given in the comments refer to sections in [RFC5545]. - The ordering of elements follows the section ordering of [RFC5545]. - - The RELAX NG compact notation "?" operator is used to indicate an - unordered list of items. However, that operator, as defined, allows - "mixing" each element that it operates on at any depth within the - other elements, rather than just allowing "mixing" of siblings only. - As a result, the schema provided allows certain constructs that are - not allowed in iCalendar. Given that there is no sibling-only - unordered list operator in RELAX NG, this is the best representation - that can be given. - - Patterns for date/time, duration, and UTC offset values are given - because those differ from the values used in iCalendar. More - restrictive schema with patterns and numerical limits could be - derived from the example schema here if more comprehensive schema - validation is required. - - # RELAX NG Schema for iCalendar in XML - - default namespace = "urn:ietf:params:xml:ns:icalendar-2.0" - - # 3.2 Property Parameters - - # 3.2.1 Alternate Text Representation - - altrepparam = element altrep { - value-uri - } - - # 3.2.2 Common Name - - cnparam = element cn { - value-text - } - - - - - - - - - - -Daboo, et al. Standards Track [Page 23] - -RFC 6321 xCal August 2011 - - - # 3.2.3 Calendar User Type - - cutypeparam = element cutype { - element text { - "INDIVIDUAL" | - "GROUP" | - "RESOURCE" | - "ROOM" | - "UNKNOWN" - } - } - - # 3.2.4 Delegators - - delfromparam = element delegated-from { - value-cal-address+ - } - - # 3.2.5 Delegatees - - deltoparam = element delegated-to { - value-cal-address+ - } - - # 3.2.6 Directory Entry Reference - - dirparam = element dir { - value-uri - } - - # 3.2.7 Inline Encoding - - encodingparam = element encoding { - element text { - "8BIT" | - "BASE64" - } - } - - # 3.2.8 Format Type - - fmttypeparam = element fmttype { - value-text - } - - - - - - - -Daboo, et al. Standards Track [Page 24] - -RFC 6321 xCal August 2011 - - - # 3.2.9 Free/Busy Time Type - - fbtypeparam = element fbtype { - element text { - "FREE" | - "BUSY" | - "BUSY-UNAVAILABLE" | - "BUSY-TENTATIVE" - } - } - - # 3.2.10 Language - - languageparam = element language { - value-text - } - - # 3.2.11 Group or List Membership - - memberparam = element member { - value-cal-address+ - } - - # 3.2.12 Participation Status - - partstatparam = element partstat { - type-partstat-event | - type-partstat-todo | - type-partstat-jour - } - - type-partstat-event = ( - element text { - "NEEDS-ACTION" | - "ACCEPTED" | - "DECLINED" | - "TENTATIVE" | - "DELEGATED" - } - ) - - - - - - - - - - - -Daboo, et al. Standards Track [Page 25] - -RFC 6321 xCal August 2011 - - - type-partstat-todo = ( - element text { - "NEEDS-ACTION" | - "ACCEPTED" | - "DECLINED" | - "TENTATIVE" | - "DELEGATED" | - "COMPLETED" | - "IN-PROCESS" - } - ) - - type-partstat-jour = ( - element text { - "NEEDS-ACTION" | - "ACCEPTED" | - "DECLINED" - } - ) - - # 3.2.13 Recurrence Identifier Range - - rangeparam = element range { - element text { - "THISANDFUTURE" - } - } - - # 3.2.14 Alarm Trigger Relationship - - trigrelparam = element related { - element text { - "START" | - "END" - } - } - - # 3.2.15 Relationship Type - - reltypeparam = element reltype { - element text { - "PARENT" | - "CHILD" | - "SIBLING" - } - } - - - - - -Daboo, et al. Standards Track [Page 26] - -RFC 6321 xCal August 2011 - - - # 3.2.16 Participation Role - - roleparam = element role { - element text { - "CHAIR" | - "REQ-PARTICIPANT" | - "OPT-PARTICIPANT" | - "NON-PARTICIPANT" - } - } - - # 3.2.17 RSVP Expectation - - rsvpparam = element rsvp { - value-boolean - } - - # 3.2.18 Sent By - - sentbyparam = element sent-by { - value-cal-address - } - - # 3.2.19 Time Zone Identifier - - tzidparam = element tzid { - value-text - } - - # 3.3 Property Value Data Types - - # 3.3.1 BINARY - - value-binary = element binary { - xsd:string - } - - # 3.3.2 BOOLEAN - - value-boolean = element boolean { - xsd:boolean - } - - # 3.3.3 CAL-ADDRESS - - value-cal-address = element cal-address { - xsd:anyURI - } - - - -Daboo, et al. Standards Track [Page 27] - -RFC 6321 xCal August 2011 - - - # 3.3.4 DATE - - pattern-date = xsd:string { - pattern = "\d\d\d\d-\d\d-\d\d" - } - - value-date = element date { - pattern-date - } - - # 3.3.5 DATE-TIME - - pattern-date-time = xsd:string { - pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?" - } - - value-date-time = element date-time { - pattern-date-time - } - - # 3.3.6 DURATION - - pattern-duration = xsd:string { - pattern = "(+|-)?P(\d+W)|(\d+D)?" - ~ "(T(\d+H(\d+M)?(\d+S)?)|" - ~ "(\d+M(\d+S)?)|" - ~ "(\d+S))?" - } - - value-duration = element duration { - pattern-duration - } - - # 3.3.7 FLOAT - - value-float = element float { - xsd:float - } - - # 3.3.8 INTEGER - - value-integer = element integer { - xsd:integer - } - - - - - - - -Daboo, et al. Standards Track [Page 28] - -RFC 6321 xCal August 2011 - - - # 3.3.9 PERIOD - - value-period = element period { - element start { - pattern-date-time - }, - ( - element end { - pattern-date-time - } | - element duration { - pattern-duration - } - ) - } - - # 3.3.10 RECUR - - value-recur = element recur { - type-freq, - (type-until | type-count)?, - element interval { - xsd:positiveInteger - }?, - type-bysecond*, - type-byminute*, - type-byhour*, - type-byday*, - type-bymonthday*, - type-byyearday*, - type-byweekno*, - type-bymonth*, - type-bysetpos*, - element wkst { type-weekday }? - } - - type-freq = element freq { - "SECONDLY" | - "MINUTELY" | - "HOURLY" | - "DAILY" | - "WEEKLY" | - "MONTHLY" | - "YEARLY" - } - - - - - - -Daboo, et al. Standards Track [Page 29] - -RFC 6321 xCal August 2011 - - - type-until = element until { - type-date | - type-date-time - } - - type-count = element count { - xsd:positiveInteger - } - - type-bysecond = element bysecond { - xsd:positiveInteger - } - - type-byminute = element byminute { - xsd:positiveInteger - } - - type-byhour = element byhour { - xsd:positiveInteger - } - - type-weekday = ( - "SU" | - "MO" | - "TU" | - "WE" | - "TH" | - "FR" | - "SA" - ) - - type-byday = element byday { - xsd:integer?, - type-weekday - } - - type-bymonthday = element bymonthday { - xsd:integer - } - - type-byyearday = element byyearday { - xsd:integer - } - - type-byweekno = element byweekno { - xsd:integer - } - - - - -Daboo, et al. Standards Track [Page 30] - -RFC 6321 xCal August 2011 - - - type-bymonth = element bymonth { - xsd:positiveInteger - } - - type-bysetpos = element bysetpos { - xsd:integer - } - - # 3.3.11 TEXT - - value-text = element text { - xsd:string - } - - # 3.3.12 TIME - - pattern-time = xsd:string { - pattern = "\d\d:\d\d:\d\dZ?" - } - - value-time = element time { - pattern-time - } - - # 3.3.13 URI - - value-uri = element uri { - xsd:anyURI - } - - # 3.3.14 UTC-OFFSET - - value-utc-offset = element utc-offset { - xsd:string { pattern = "(+|-)\d\d:\d\d(:\d\d)?" } - } - - # UNKNOWN - - value-unknown = element unknown { - xsd:string - } - - # 3.4 iCalendar Stream - - start = element icalendar { - vcalendar+ - } - - - - -Daboo, et al. Standards Track [Page 31] - -RFC 6321 xCal August 2011 - - - # 3.6 Calendar Components - - vcalendar = element vcalendar { - type-calprops, - type-component - } - - type-calprops = element properties { - property-prodid & - property-version & - property-calscale? & - property-method? - } - - type-component = element components { - ( - component-vevent | - component-vtodo | - component-vjournal | - component-vfreebusy | - component-vtimezone - )* - } - - # 3.6.1 Event Component - - component-vevent = element vevent { - type-eventprop, - element components { - component-valarm+ - }? - } - - type-eventprop = element properties { - property-dtstamp & - property-dtstart & - property-uid & - - property-class? & - property-created? & - property-description? & - property-geo? & - property-last-mod? & - property-location? & - property-organizer? & - property-priority? & - property-seq? & - property-status-event? & - - - -Daboo, et al. Standards Track [Page 32] - -RFC 6321 xCal August 2011 - - - property-summary? & - property-transp? & - property-url? & - property-recurid? & - - property-rrule? & - - (property-dtend | property-duration)? & - - property-attach* & - property-attendee* & - property-categories* & - property-comment* & - property-contact* & - property-exdate* & - property-rstatus* & - property-related* & - property-resources* & - property-rdate* - } - - # 3.6.2 To-do Component - - component-vtodo = element vtodo { - type-todoprop, - element components { - component-valarm+ - }? - } - - type-todoprop = element properties { - property-dtstamp & - property-uid & - - property-class? & - property-completed? & - property-created? & - property-description? & - property-geo? & - property-last-mod? & - property-location? & - property-organizer? & - property-percent? & - property-priority? & - property-recurid? & - property-seq? & - property-status-todo? & - property-summary? & - - - -Daboo, et al. Standards Track [Page 33] - -RFC 6321 xCal August 2011 - - - property-url? & - - property-rrule? & - - ( - (property-dtstart?, property-dtend? ) | - (property-dtstart, property-duration)? - ) & - - property-attach* & - property-attendee* & - property-categories* & - property-comment* & - property-contact* & - property-exdate* & - property-rstatus* & - property-related* & - property-resources* & - property-rdate* - } - - # 3.6.3 Journal Component - - component-vjournal = element vjournal { - type-jourprop - } - - type-jourprop = element properties { - property-dtstamp & - property-uid & - - property-class? & - property-created? & - property-dtstart? & - property-last-mod? & - property-organizer? & - property-recurid? & - property-seq? & - property-status-jour? & - property-summary? & - property-url? & - - property-rrule? & - - property-attach* & - property-attendee* & - property-categories* & - property-comment* & - - - -Daboo, et al. Standards Track [Page 34] - -RFC 6321 xCal August 2011 - - - property-contact* & - property-description? & - property-exdate* & - property-related* & - property-rdate* & - property-rstatus* - } - - # 3.6.4 Free/Busy Component - - component-vfreebusy = element vfreebusy { - type-fbprop - } - - type-fbprop = element properties { - property-dtstamp & - property-uid & - - property-contact? & - property-dtstart? & - property-dtend? & - property-duration? & - property-organizer? & - property-url? & - - property-attendee* & - property-comment* & - property-freebusy* & - property-rstatus* - } - - # 3.6.5 Time Zone Component - - component-vtimezone = element vtimezone { - element properties { - property-tzid & - - property-last-mod? & - property-tzuurl? - }, - element components { - (component-standard | component-daylight) & - component-standard* & - component-daylight* - } - } - - - - - -Daboo, et al. Standards Track [Page 35] - -RFC 6321 xCal August 2011 - - - component-standard = element standard { - type-tzprop - } - - component-daylight = element daylight { - type-tzprop - } - - type-tzprop = element properties { - property-dtstart & - property-tzoffsetto & - property-tzoffsetfrom & - - property-rrule? & - - property-comment* & - property-rdate* & - property-tzname* - } - - # 3.6.6 Alarm Component - - component-valarm = element valarm { - audioprop | dispprop | emailprop - } - - type-audioprop = element properties { - property-action & - - property-trigger & - - (property-duration, property-repeat)? & - - property-attach? - } - - type-dispprop = element properties { - property-action & - property-description & - property-trigger & - property-summary & - - property-attendee+ & - - (property-duration, property-repeat)? & - - property-attach* - } - - - -Daboo, et al. Standards Track [Page 36] - -RFC 6321 xCal August 2011 - - - type-emailprop = element properties { - property-action & - property-description & - property-trigger & - - (property-duration, property-repeat)? - } - - # 3.7 Calendar Properties - - # 3.7.1 Calendar Scale - - property-calscale = element calscale { - - element parameters { empty }?, - - element text { "GREGORIAN" } - } - - # 3.7.2 Method - - property-method = element method { - - element parameters { empty }?, - - value-text - } - - # 3.7.3 Product Identifier - - property-prodid = element prodid { - - element parameters { empty }?, - - value-text - } - - # 3.7.4 Version - - property-version = element version { - - element parameters { empty }?, - - element text { "2.0" } - } - - - - - - -Daboo, et al. Standards Track [Page 37] - -RFC 6321 xCal August 2011 - - - # 3.8 Component Properties - - # 3.8.1 Descriptive Component Properties - - # 3.8.1.1 Attachment - - property-attach = element attach { - - element parameters { - fmttypeparam? & - encodingparam? - }?, - - value-uri | value-binary - } - - # 3.8.1.2 Categories - - property-categories = element categories { - - element parameters { - languageparam? & - }?, - - value-text+ - } - - # 3.8.1.3 Classification - - property-class = element class { - - element parameters { empty }?, - - element text { - "PUBLIC" | - "PRIVATE" | - "CONFIDENTIAL" - } - } - - # 3.8.1.4 Comment - - property-comment = element comment { - - element parameters { - altrepparam? & - languageparam? - }?, - - - -Daboo, et al. Standards Track [Page 38] - -RFC 6321 xCal August 2011 - - - value-text - } - - # 3.8.1.5 Description - - property-description = element description { - - element parameters { - altrepparam? & - languageparam? - }?, - - value-text - } - - # 3.8.1.6 Geographic Position - - property-geo = element geo { - - element parameters { empty }?, - - element latitude { xsd:float }, - element longitude { xsd:float } - } - - # 3.8.1.7 Location - - property-location = element location { - - element parameters { - - altrepparam? & - languageparam? - }?, - - value-text - } - - # 3.8.1.8 Percent Complete - - property-percent = element percent-complete { - - element parameters { empty }?, - - value-integer - } - - - - - -Daboo, et al. Standards Track [Page 39] - -RFC 6321 xCal August 2011 - - - # 3.8.1.9 Priority - - property-priority = element priority { - - element parameters { empty }?, - - value-integer - } - - # 3.8.1.10 Resources - - property-resources = element resources { - - element parameters { - altrepparam? & - languageparam? - }?, - - value-text+ - } - - # 3.8.1.11 Status - - property-status-event = element status { - - element parameters { empty }?, - - element text { - "TENTATIVE" | - "CONFIRMED" | - "CANCELLED" - } - } - - property-status-todo = element status { - - element parameters { empty }?, - - element text { - "NEEDS-ACTION" | - "COMPLETED" | - "IN-PROCESS" | - "CANCELLED" - } - } - - - - - - -Daboo, et al. Standards Track [Page 40] - -RFC 6321 xCal August 2011 - - - property-status-jour = element status { - - element parameters { empty }?, - - element text { - "DRAFT" | - "FINAL" | - "CANCELLED" - } - } - - # 3.8.1.12 Summary - - property-summary = element summary { - - element parameters { - altrepparam? & - languageparam? - }?, - - value-text - } - - # 3.8.2 Date and Time Component Properties - - # 3.8.2.1 Date/Time Completed - - property-completed = element completed { - - element parameters { empty }?, - - value-date-time - } - - # 3.8.2.2 Date/Time End - - property-dtend = element dtend { - - element parameters { - tzidparam? - }?, - - value-date-time | - value-date - } - - - - - - -Daboo, et al. Standards Track [Page 41] - -RFC 6321 xCal August 2011 - - - # 3.8.2.3 Date/Time Due - - property-due = element due { - - element parameters { - tzidparam? - }?, - - value-date-time | - value-date - } - - # 3.8.2.4 Date/Time Start - - property-dtstart = element dtstart { - - element parameters { - tzidparam? - }?, - - value-date-time | - value-date - } - - # 3.8.2.5 Duration - - property-duration = element duration { - - element parameters { empty }?, - - value-duration - } - - # 3.8.2.6 Free/Busy Time - - property-freebusy = element freebusy { - - element parameters { - fbtypeparam? - }?, - - - value-period+ - } - - # 3.8.2.7 Time Transparency - - property-transp = element transp { - - - -Daboo, et al. Standards Track [Page 42] - -RFC 6321 xCal August 2011 - - - element parameters { empty }?, - - element text { - "OPAQUE" | - "TRANSPARENT" - } - } - - # 3.8.3 Time Zone Component Properties - - # 3.8.3.1 Time Zone Identifier - - property-tzid = element tzid { - - element parameters { empty }?, - - value-text - } - - # 3.8.3.2 Time Zone Name - - property-tzname = element tzname { - - element parameters { - languageparam? - }?, - - value-text - } - - # 3.8.3.3 Time Zone Offset From - - property-tzoffsetfrom = element tzoffsetfrom { - - element parameters { empty }?, - - value-utc-offset - } - - # 3.8.3.4 Time Zone Offset To - - property-tzoffsetto = element tzoffsetto { - - element parameters { empty }?, - - value-utc-offset - } - - - - -Daboo, et al. Standards Track [Page 43] - -RFC 6321 xCal August 2011 - - - # 3.8.3.5 Time Zone URL - - property-tzurl = element tzurl { - - element parameters { empty }?, - - value-uri - } - - # 3.8.4 Relationship Component Properties - - # 3.8.4.1 Attendee - - property-attendee = element attendee { - - element parameters { - cutypeparam? & - memberparam? & - roleparam? & - partstatparam? & - rsvpparam? & - deltoparam? & - delfromparam? & - sentbyparam? & - cnparam? & - dirparam? & - languageparam? - }?, - - value-cal-address - } - - # 3.8.4.2 Contact - - property-contact = element contact { - - element parameters { - altrepparam? & - languageparam? - }?, - - value-text - } - - # 3.8.4.3 Organizer - - property-organizer = element organizer { - - - - -Daboo, et al. Standards Track [Page 44] - -RFC 6321 xCal August 2011 - - - element parameters { - cnparam? & - dirparam? & - sentbyparam? & - languageparam? - }?, - - value-cal-address - } - - # 3.8.4.4 Recurrence ID - - property-recurid = element recurrence-id { - - element parameters { - tzidparam? & - rangeparam? - }?, - - value-date-time | - value-date - } - - # 3.8.4.5 Related-To - - property-related = element related-to { - - element parameters { - reltypeparam? - }?, - - value-text - } - - # 3.8.4.6 Uniform Resource Locator - - property-url = element url { - - element parameters { empty }?, - - value-uri - } - - # 3.8.4.7 Unique Identifier - - property-uid = element uid { - - element parameters { empty }?, - - - -Daboo, et al. Standards Track [Page 45] - -RFC 6321 xCal August 2011 - - - value-text - } - - # 3.8.5 Recurrence Component Properties - - # 3.8.5.1 Exception Date/Times - - property-exdate = element exdate { - - element parameters { - tzidparam? - }?, - - value-date-time+ | - value-date+ - } - - # 3.8.5.2 Recurrence Date/Times - - property-rdate = element rdate { - - element parameters { - tzidparam? - }?, - - value-date-time+ | - value-date+ | - value-period+ - } - - # 3.8.5.3 Recurrence Rule - - property-rrule = element rrule { - - element parameters { empty }?, - - value-recur - } - - # 3.8.6 Alarm Component Properties - - # 3.8.6.1 Action - - property-action = element action { - - element parameters { empty }?, - - - - - -Daboo, et al. Standards Track [Page 46] - -RFC 6321 xCal August 2011 - - - element text { - "AUDIO" | - "DISPLAY" | - "EMAIL" - } - } - - # 3.8.6.2 Repeat Count - - property-repeat = element repeat { - - element parameters { empty }?, - - value-integer - } - - # 3.8.6.3 Trigger - - property-trigger = element trigger { - - ( - element parameters { - trigrelparam? - }?, - - value-duration - ) | - ( - element parameters { empty }?, - - value-date-time - ) - } - - # 3.8.7 Change Management Component Properties - - # 3.8.7.1 Date/Time Created - - property-created = element created { - - element parameters { empty }?, - - value-date-time - } - - # 3.8.7.2 Date/Time Stamp - - property-dtstamp = element dtstamp { - - - -Daboo, et al. Standards Track [Page 47] - -RFC 6321 xCal August 2011 - - - element parameters { empty }?, - - value-date-time - } - - # 3.8.7.3 Last Modified - - property-last-mod = element last-modified { - - element parameters { empty }?, - - value-date-time - } - - # 3.8.7.4 Sequence Number - - property-seq = element sequence { - - element parameters { empty }?, - - value-integer - } - - # 3.8.8 Miscellaneous Component Properties - - # 3.8.8.3 Request Status - - property-rstatus = element request-status { - - element parameters { - languageparam? - }?, - - element code { xsd:string }, - element description { xsd:string }, - element data { xsd:string }? - } - - - - - - - - - - - - - - -Daboo, et al. Standards Track [Page 48] - -RFC 6321 xCal August 2011 - - -Appendix B. Examples - - This section contains two examples of iCalendar objects with their - xCal representation. - -B.1. Example 1 - -B.1.1. iCalendar Data - - BEGIN:VCALENDAR - CALSCALE:GREGORIAN - PRODID:-//Example Inc.//Example Calendar//EN - VERSION:2.0 - BEGIN:VEVENT - DTSTAMP:20080205T191224Z - DTSTART:20081006 - SUMMARY:Planning meeting - UID:4088E990AD89CB3DBB484909 - END:VEVENT - END:VCALENDAR - -B.1.2. XML Data - - <?xml version="1.0" encoding="utf-8"?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - <vcalendar> - <properties> - <calscale> - <text>GREGORIAN</text> - </calscale> - <prodid> - <text>-//Example Inc.//Example Calendar//EN</text> - </prodid> - <version> - <text>2.0</text> - </version> - </properties> - <components> - <vevent> - <properties> - <dtstamp> - <date-time>2008-02-05T19:12:24Z</date-time> - </dtstamp> - <dtstart> - <date>2008-10-06</date> - </dtstart> - <summary> - <text>Planning meeting</text> - - - -Daboo, et al. Standards Track [Page 49] - -RFC 6321 xCal August 2011 - - - </summary> - <uid> - <text>4088E990AD89CB3DBB484909</text> - </uid> - </properties> - </vevent> - </components> - </vcalendar> - </icalendar> - -B.2. Example 2 - -B.2.1. iCalendar Data - - VERSION:2.0 - PRODID:-//Example Corp.//Example Client//EN - BEGIN:VTIMEZONE - LAST-MODIFIED:20040110T032845Z - TZID:US/Eastern - BEGIN:DAYLIGHT - DTSTART:20000404T020000 - RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 - TZNAME:EDT - TZOFFSETFROM:-0500 - TZOFFSETTO:-0400 - END:DAYLIGHT - BEGIN:STANDARD - DTSTART:20001026T020000 - RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 - TZNAME:EST - TZOFFSETFROM:-0400 - TZOFFSETTO:-0500 - END:STANDARD - END:VTIMEZONE - BEGIN:VEVENT - DTSTAMP:20060206T001121Z - DTSTART;TZID=US/Eastern:20060102T120000 - DURATION:PT1H - RRULE:FREQ=DAILY;COUNT=5 - RDATE;TZID=US/Eastern;VALUE=PERIOD:20060102T150000/PT2H - SUMMARY:Event #2 - DESCRIPTION:We are having a meeting all this week at 12 pm fo - r one hour\, with an additional meeting on the first day 2 h - ours long.\nPlease bring your own lunch for the 12 pm meetin - gs. - UID:00959BC664CA650E933C892C@example.com - END:VEVENT - BEGIN:VEVENT - - - -Daboo, et al. Standards Track [Page 50] - -RFC 6321 xCal August 2011 - - - DTSTAMP:20060206T001121Z - DTSTART;TZID=US/Eastern:20060104T140000 - DURATION:PT1H - RECURRENCE-ID;TZID=US/Eastern:20060104T120000 - SUMMARY:Event #2 bis - UID:00959BC664CA650E933C892C@example.com - END:VEVENT - END:VCALENDAR - -B.2.2. XML Data - - <?xml version="1.0" encoding="utf-8" ?> - <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> - <vcalendar> - <properties> - <prodid> - <text>-//Example Inc.//Example Client//EN</text> - </prodid> - <version> - <text>2.0</text> - </version> - </properties> - <components> - <vtimezone> - <properties> - <last-modified> - <date-time>2004-01-10T03:28:45Z</date-time> - </last-modified> - <tzid>US/Eastern</tzid> - </properties> - <components> - <daylight> - <properties> - <dtstart> - <date-time>2000-04-04T02:00:00</date-time> - </dtstart> - <rrule> - <recur> - <freq>YEARLY</freq> - <byday>1SU</byday> - <bymonth>4</bymonth> - </recur> - </rrule> - <tzname> - <text>EDT</text> - </tzname> - <tzoffsetfrom> - <utc-offset>-05:00</utc-offset> - - - -Daboo, et al. Standards Track [Page 51] - -RFC 6321 xCal August 2011 - - - </tzoffsetfrom> - <tzoffsetto> - <utc-offset>-04:00</utc-offset> - </tzoffsetto> - </properties> - </daylight> - <standard> - <properties> - <dtstart> - <date-time>2000-10-26T02:00:00</date-time> - </dtstart> - <rrule> - <recur> - <freq>YEARLY</freq> - <byday>-1SU</byday> - <bymonth>10</bymonth> - </recur> - </rrule> - <tzname> - <text>EST</text> - </tzname> - <tzoffsetfrom> - <utc-offset>-04:00</utc-offset> - </tzoffsetfrom> - <tzoffsetto> - <utc-offset>-05:00</utc-offset> - </tzoffsetto> - </properties> - </standard> - </components> - </vtimezone> - <vevent> - <properties> - <dtstamp> - <date-time>2006-02-06T00:11:21Z</date-time> - </dtstamp> - <dtstart> - <parameters> - <tzid><text>US/Eastern</text></tzid> - </parameters> - <date-time>2006-01-02T12:00:00</date-time> - </dtstart> - <duration> - <duration>PT1H</duration> - </duration> - <rrule> - <recur> - <freq>DAILY</freq> - - - -Daboo, et al. Standards Track [Page 52] - -RFC 6321 xCal August 2011 - - - <count>5</count> - </recur> - </rrule> - <rdate> - <parameters> - <tzid><text>US/Eastern</text></tzid> - </parameters> - <period> - <start>2006-01-02T15:00:00</start> - <duration>PT2H</duration> - </period> - </rdate> - <summary> - <text>Event #2</text> - </summary> - <description> - <text>We are having a meeting all this week at 12 - pm for one hour, with an additional meeting on the first day - 2 hours long.
Please bring your own lunch for the 12 pm - meetings.</text> - </description> - <uid> - <text>00959BC664CA650E933C892C@example.com</text> - </uid> - </properties> - </vevent> - <vevent> - <properties> - <dtstamp> - <date-time>2006-02-06T00:11:21Z</date-time> - </dtstamp> - <dtstart> - <parameters> - <tzid><text>US/Eastern</text></tzid> - </parameters> - <date-time>2006-01-04T14:00:00</date-time> - </dtstart> - <duration> - <duration>PT1H</duration> - </duration> - <recurrence-id> - <parameters> - <tzid><text>US/Eastern</text></tzid> - </parameters> - <date-time>2006-01-04T12:00:00</date-time> - </recurrence-id> - <summary> - <text>Event #2 bis</text> - - - -Daboo, et al. Standards Track [Page 53] - -RFC 6321 xCal August 2011 - - - </summary> - <uid> - <text>00959BC664CA650E933C892C@example.com</text> - </uid> - </properties> - </vevent> - </components> - </vcalendar> - </icalendar> - -Authors' Addresses - - Cyrus Daboo - Apple Inc. - 1 Infinite Loop - Cupertino, CA 95014 - USA - - EMail: cyrus@daboo.name - URI: http://www.apple.com/ - - - Mike Douglass - Rensselaer Polytechnic Institute - 110 8th Street - Troy, NY 12180 - USA - - EMail: douglm@rpi.edu - URI: http://www.rpi.edu/ - - - Steven Lees - Microsoft Corporation - One Microsoft Way - Redmond, WA 98052 - USA - - EMail: steven.lees@microsoft.com - URI: http://www.microsoft.com/ - - - - - - - - - - - -Daboo, et al. Standards Track [Page 54] - |