< draft-daboo-et-al-icalendar-in-xml-10.txt | draft-daboo-et-al-icalendar-in-xml-11.txt > | |||
---|---|---|---|---|
Network Working Group C. Daboo | Network Working Group C. Daboo | |||
Internet-Draft Apple, Inc. | Internet-Draft Apple, Inc. | |||
Intended status: Standards Track M. Douglass | Intended status: Standards Track M. Douglass | |||
Expires: November 27, 2011 RPI | Expires: November 28, 2011 RPI | |||
S. Lees | S. Lees | |||
Microsoft | Microsoft | |||
May 26, 2011 | May 27, 2011 | |||
xCal: The XML format for iCalendar | xCal: The XML format for iCalendar | |||
draft-daboo-et-al-icalendar-in-xml-10 | draft-daboo-et-al-icalendar-in-xml-11 | |||
Abstract | Abstract | |||
This specification defines "xCal", an XML format for iCalendar data. | This specification defines "xCal", an XML format for iCalendar data. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on November 27, 2011. | This Internet-Draft will expire on November 28, 2011. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2011 IETF Trust and the persons identified as the | Copyright (c) 2011 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 40 | skipping to change at page 2, line 40 | |||
3.6.10. Recurrence Rule (RFC5545 section 3.3.10) . . . . . . . 15 | 3.6.10. Recurrence Rule (RFC5545 section 3.3.10) . . . . . . . 15 | |||
3.6.11. Text (RFC5545 section 3.3.11) . . . . . . . . . . . . 16 | 3.6.11. Text (RFC5545 section 3.3.11) . . . . . . . . . . . . 16 | |||
3.6.12. Time (RFC5545 section 3.3.12) . . . . . . . . . . . . 16 | 3.6.12. Time (RFC5545 section 3.3.12) . . . . . . . . . . . . 16 | |||
3.6.13. URI (RFC5545 section 3.3.13) . . . . . . . . . . . . . 16 | 3.6.13. URI (RFC5545 section 3.3.13) . . . . . . . . . . . . . 16 | |||
3.6.14. UTC Offset (RFC5545 section 3.3.14) . . . . . . . . . 16 | 3.6.14. UTC Offset (RFC5545 section 3.3.14) . . . . . . . . . 16 | |||
3.7. Extensions . . . . . . . . . . . . . . . . . . . . . . . . 17 | 3.7. Extensions . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
4. Converting from xCal into iCalendar . . . . . . . . . . . . . 17 | 4. Converting from xCal into iCalendar . . . . . . . . . . . . . 17 | |||
4.1. Converting XML Extensions into iCalendar . . . . . . . . . 17 | 4.1. Converting XML Extensions into iCalendar . . . . . . . . . 17 | |||
4.2. The XML property for iCalendar . . . . . . . . . . . . . . 18 | 4.2. The XML property for iCalendar . . . . . . . . . . . . . . 18 | |||
5. Handling Unrecognized Properties or Parameters . . . . . . . . 19 | 5. Handling Unrecognized Properties or Parameters . . . . . . . . 19 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | |||
7.1. Namespace Registration . . . . . . . . . . . . . . . . . . 21 | 7.1. Namespace Registration . . . . . . . . . . . . . . . . . . 21 | |||
7.2. Media Type . . . . . . . . . . . . . . . . . . . . . . . . 21 | 7.2. Media Type . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
7.3. iCalendar Property Registrations . . . . . . . . . . . . . 22 | 7.3. iCalendar Property Registrations . . . . . . . . . . . . . 22 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 23 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 23 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . . 23 | 9.2. Informative References . . . . . . . . . . . . . . . . . . 23 | |||
Appendix A. Relax NG Schema . . . . . . . . . . . . . . . . . . . 24 | Appendix A. Relax NG Schema . . . . . . . . . . . . . . . . . . . 24 | |||
Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 49 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 49 | |||
B.1. Example 1 . . . . . . . . . . . . . . . . . . . . . . . . 49 | B.1. Example 1 . . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
B.1.1. iCalendar Data . . . . . . . . . . . . . . . . . . . . 49 | B.1.1. iCalendar Data . . . . . . . . . . . . . . . . . . . . 49 | |||
B.1.2. XML Data . . . . . . . . . . . . . . . . . . . . . . . 50 | B.1.2. XML Data . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
B.2. Example 2 . . . . . . . . . . . . . . . . . . . . . . . . 50 | B.2. Example 2 . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
B.2.1. iCalendar Data . . . . . . . . . . . . . . . . . . . . 51 | B.2.1. iCalendar Data . . . . . . . . . . . . . . . . . . . . 51 | |||
skipping to change at page 18, line 5 | skipping to change at page 18, line 5 | |||
depending on whether the extensions are in the iCalendar XML | depending on whether the extensions are in the iCalendar XML | |||
namespace, or in an external namespace. | namespace, or in an external namespace. | |||
Extensions that are part of the iCalendar XML namespace MUST have | Extensions that are part of the iCalendar XML namespace MUST have | |||
element names that begin with "x-", and will be converted back to the | element names that begin with "x-", and will be converted back to the | |||
equivalent extension property in iCalendar. For example, the "x-foo" | equivalent extension property in iCalendar. For example, the "x-foo" | |||
element will convert to the "X-FOO" iCalendar property. | element will convert to the "X-FOO" iCalendar property. | |||
Extensions that are in a namespace other than the iCalendar XML | Extensions that are in a namespace other than the iCalendar XML | |||
namespace SHOULD be preserved in the iCalendar representation using | namespace SHOULD be preserved in the iCalendar representation using | |||
the "XML" iCalendar property described in Section 4.2. | 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 | 4.2. The XML property for iCalendar | |||
This section describes an extension property for iCalendar, as | This section describes an extension property for iCalendar, as | |||
covered in section 8.2.3 of [RFC5545]. | covered in section 8.2.3 of [RFC5545]. | |||
Property name: XML | Property name: XML | |||
Purpose: To embed XML-encoded calendar data in the iCalendar format. | Purpose: To embed extended XML-encoded iCalendar data in the | |||
iCalendar format. | ||||
Value type: The default value type is "TEXT". The value type can | Value type: The default value type is "TEXT". The value type can | |||
also be set to "BINARY" to indicate base64 encoded content. | also be set to "BINARY" to indicate base64 encoded content. | |||
Property parameters: IANA, non-standard, inline encoding, and value | Property parameters: IANA, non-standard, inline encoding, and value | |||
data type property parameters can be specified on this property. | data type property parameters can be specified on this property. | |||
Conformance: The property can appear on any iCalendar component. | Conformance: The property can be specified multiple times in any | |||
calendar component. | ||||
Description: The value of this property is an XML element. The "XML" | Description: The value of this property is a single XML 1.0 | |||
property MUST NOT be used to contain properties that are already | [W3C.REC-xml-20081126] element. The "XML" property MUST NOT be used | |||
defined in iCalendar, or properties that use the "X-" iCalendar | to contain properties that are already defined in iCalendar. Since | |||
extension property syntax. Since all elements in the | all elements in the urn:ietf:params:xml:ns:icalendar-2.0 namespace | |||
urn:ietf:params:xml:ns:icalendar-2.0 namespace convert to a well- | convert to a well-defined iCalendar object, the elements in this | |||
defined iCalendar object, the elements in this property MUST NOT be | property MUST NOT be in the urn:ietf:params:xml:ns:icalendar-2.0 | |||
in the urn:ietf:params:xml:ns:icalendar-2.0 namespace. The XML | namespace. The XML element which is the value of this property MUST | |||
element which is the value of this property MUST have an XML | have an XML namespace declaration. | |||
namespace declaration. | ||||
Note that the source XML may contain characters not allowed in | The default value type for this property is "TEXT", and normal | |||
iCalendar such as control characters. If this is the case, then the | BACKSLASH escaping rules for that value MUST be applied. Note that | |||
XML data MUST be base64 encoded. As required by [RFC5545], the | the source XML can contain characters not allowed in "TEXT" property | |||
"ENCODING" property parameter MUST be present and set to "BASE64", | values. If this is the case, then the XML data MUST be base64 | |||
and the "VALUE" property parameter MUST be present and set to | encoded. As required by [RFC5545], the "ENCODING" property parameter | |||
"BINARY". | MUST be present and set to "BASE64", and the "VALUE" property | |||
parameter MUST be present and set to "BINARY". | ||||
There can be more than one "XML" property present for a given | The ordering of "XML" properties is not preserved in the conversion | |||
iCalendar object. The ordering of "XML" properties is not preserved | between xCal and iCalendar. | |||
in the conversion between xCal and iCalendar. | ||||
Format definition: This property is defined by the following | Format definition: This property is defined by the following | |||
notation: | notation: | |||
xml = "XML" xmlparam ( ":" text ) / | xml = "XML" xmlparam ( ":" text ) / | |||
( | ( | |||
";" "ENCODING" "=" "BASE64" | ";" "ENCODING" "=" "BASE64" | |||
";" "VALUE" "=" "BINARY" | ";" "VALUE" "=" "BINARY" | |||
":" binary | ":" binary | |||
) | ) | |||
CRLF | CRLF | |||
xmlparam = *(";" other-param) | xmlparam = *(";" other-param) | |||
Example: The following is an example of an iCalendar event with a | Example: The following is an example of a location embedded in KML | |||
location embedded in KML markup inside the "XML" property. | markup inside the "XML" property. | |||
BEGIN:VCALENDAR | XML:<kml xmlns="http://www.opengis.net/kml/2.2">\n | |||
CALSCALE:GREGORIAN | <Document>\n | |||
PRODID:-//Example Inc.//Example Calendar//EN | <name>KML Sample</name>\n | |||
VERSION:2.0 | <open>1</open>\n | |||
BEGIN:VEVENT | <description>An incomplete example of a KML docum | |||
DTSTAMP:20080205T191224Z | ent - used as an example!</description>\n | |||
DTSTART:20081006 | </kml> | |||
SUMMARY:Planning meeting | ||||
UID:4088E990AD89CB3DBB484909 | ||||
XML:<kml xmlns="http://www.opengis.net/kml/2.2">...</kml> | ||||
END:VEVENT | ||||
END:VCALENDAR | ||||
5. Handling Unrecognized Properties or Parameters | 5. Handling Unrecognized Properties or Parameters | |||
In iCalendar, properties have a default value type specified by their | In iCalendar, properties have a default value type specified by their | |||
definition, e.g. "SUMMARY"'s value type is "TEXT" and "DURATION"'s | definition, e.g. "SUMMARY"'s value type is "TEXT" and "DURATION"'s | |||
is "DURATION". When a property uses its default value type, the | is "DURATION". When a property uses its default value type, the | |||
"VALUE" property parameter does not need to be specified on the | "VALUE" property parameter does not need to be specified on the | |||
property. | property. | |||
When new properties are defined or "X-" properties used, an | When new properties are defined or "X-" properties used, an | |||
skipping to change at page 23, line 44 | skipping to change at page 23, line 37 | |||
[RFC4648] Josefsson, S., "The Base16, Base32, | [RFC4648] Josefsson, S., "The Base16, Base32, | |||
and Base64 Data Encodings", RFC 4648, | and Base64 Data Encodings", RFC 4648, | |||
October 2006. | October 2006. | |||
[RFC5545] Desruisseaux, B., "Internet | [RFC5545] Desruisseaux, B., "Internet | |||
Calendaring and Scheduling Core | Calendaring and Scheduling Core | |||
Object Specification (iCalendar)", | Object Specification (iCalendar)", | |||
RFC 5545, September 2009. | RFC 5545, September 2009. | |||
[W3C.REC-xml-20081126] Paoli, J., Yergeau, F., Bray, T., | ||||
Sperberg-McQueen, C., 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 | 9.2. Informative References | |||
[W3C.REC-xmlschema-2-20041028] Biron, P. and A. Malhotra, "XML | [W3C.REC-xmlschema-2-20041028] Biron, P. and A. Malhotra, "XML | |||
Schema Part 2: Datatypes Second | Schema Part 2: Datatypes Second | |||
Edition", World Wide Web Consortium R | Edition", World Wide Web Consortium R | |||
ecommendation REC-xmlschema-2- | ecommendation REC-xmlschema-2- | |||
20041028, October 2004, <http:// | 20041028, October 2004, <http:// | |||
www.w3.org/TR/2004/ | www.w3.org/TR/2004/ | |||
REC-xmlschema-2-20041028>. | REC-xmlschema-2-20041028>. | |||
skipping to change at page 28, line 47 | skipping to change at page 29, line 4 | |||
pattern-date = xsd:string { | pattern-date = xsd:string { | |||
pattern = "\d\d\d\d-\d\d-\d\d" | pattern = "\d\d\d\d-\d\d-\d\d" | |||
} | } | |||
value-date = element date { | value-date = element date { | |||
pattern-date | pattern-date | |||
} | } | |||
# 3.3.5 DATE-TIME | # 3.3.5 DATE-TIME | |||
pattern-date-time = xsd:string { | pattern-date-time = xsd:string { | |||
pattern = "\d\d\d\d-\d\d-\d\dT\d\d-\d\d-\d\dZ?" | pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?" | |||
} | } | |||
value-date-time = element date-time { | value-date-time = element date-time { | |||
pattern-date-time | pattern-date-time | |||
} | } | |||
# 3.3.6 DURATION | # 3.3.6 DURATION | |||
pattern-duration = xsd:string { | pattern-duration = xsd:string { | |||
pattern = "[+\-]?P(\d+W)|(\d+D)?" | pattern = "[+\-]?P(\d+W)|(\d+D)?" | |||
~ "(T(\d+H(\d+M)?(\d+S)?)|" | ~ "(T(\d+H(\d+M)?(\d+S)?)|" | |||
~ "(\d+M(\d+S)?)|" | ~ "(\d+M(\d+S)?)|" | |||
skipping to change at page 55, line 10 | skipping to change at page 55, line 10 | |||
</vevent> | </vevent> | |||
</components> | </components> | |||
</vcalendar> | </vcalendar> | |||
</icalendar> | </icalendar> | |||
Appendix C. Change History (to be removed prior to publication as an | Appendix C. Change History (to be removed prior to publication as an | |||
RFC) | RFC) | |||
Changes in -10: | Changes in -10: | |||
1. Fixed date-time schema pattern. | ||||
2. Tweaked XML property definition based on expert review | ||||
Changes in -10: | ||||
1. IESG: Added more XML schema references in value descriptions. | 1. IESG: Added more XML schema references in value descriptions. | |||
2. IESG: Added reference to RFC4648 for base64 definition. | 2. IESG: Added reference to RFC4648 for base64 definition. | |||
3. IESG: Rephrased various uses of "optional". | 3. IESG: Rephrased various uses of "optional". | |||
4. IESG: Clarified round-tripping design consideration. | 4. IESG: Clarified round-tripping design consideration. | |||
5. IESG: Use "As an example" rather than "non-normative" for tables. | 5. IESG: Use "As an example" rather than "non-normative" for tables. | |||
End of changes. 19 change blocks. | ||||
43 lines changed or deleted | 55 lines changed or added | |||
This html diff was produced by rfcdiff 1.39. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |