mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2024-08-19 04:50:51 +00:00
3028 lines
78 KiB
Text
3028 lines
78 KiB
Text
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
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]
|
|||
|
|