[Docs] [txt|pdf] [Tracker] [Email] [Diff1] [Diff2] [Nits]
Versions: 00 01
Network Working Group Frank Dawson, Lotus
Internet Draft
<draft-dawson-ical-xml-dtd-01.txt
Expires six months after: December 4, 1998
The iCalendar XML DTD
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months. Internet-Drafts may be updated, replaced, or made obsolete by
other documents at any time. It is not appropriate to use Internet-
Drafts as reference material or to cite them other than as a "working
draft" or "work in progress".
To view the entire list of current Internet-Drafts, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern
Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific
Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
Distribution of this document is unlimited.
Copyright (C) The Internet Society 1998. All Rights Reserved.
Abstract
This memo defines a [XML] Document Type Definition (DTD) that
corresponds to the iCalendar, calendaring and scheduling core object
format defined by [RFC2445]. This DTD provides equivalent
functionality to the standard format defined by [RFC2445]. Documents
structured in accordance with this DTD may also be know as "XML
iCalendar" documents.
The mailing list for discussion of this memo is "ietf-
calendar@imc.org". Send an email to " ietf-calendar-request@imc.org"
with the message "SUBSCRIBE" to add your email address to this
mailing list. Send an email to " ietf-vcard-xml-request@imc.org" with
the message "UNSUBSCRIBE" to remove your email address from this
mailing list.
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 [RFC 2119].
Dawson 1 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
Table of Contents
1 INTRODUCTION.........................................................3
2 ICALENDAR XML DOCUMENT TYPE DEFINITION...............................3
3 ICALENDAR NOTATION..................................................15
4 EXAMPLE USAGE.......................................................16
4.1 SIMPLE ICALENDAR OBJECT .........................................16
4.2 ICALENDAR WITH NON-STANDARD EXTENSION ...........................16
4.3 ICALENDAR WITH ATTACH PROPERTY ..................................17
4.4 DOCUMENT WITH MULTIPLE ICALENDAR OBJECTS ........................18
4.5 DOCUMENT UTILIZING ICALENDAR NAMESPACE ..........................18
4.6 XML DOCUMENT REFERENCE TO A NON-XML ICALENDAR OBJECT ............19
5 NAMESPACE...........................................................19
6 ACKNOWLEDGMENTS.....................................................20
7 SECURITY CONSIDERATIONS.............................................20
8 BIBLIOGRAPHY........................................................20
9 AUTHOR'S ADDRESS....................................................21
10 FULL COPYRIGHT STATEMENT...........................................21
Dawson 2 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
1 Introduction
The Extended Markup Language (XML) as defined in [XML] is gaining
widespread attention as a "web friendly" syntax for encoding and
exchanging documents and data on the Internet. This interest includes
requests for and discussion of possible document type definitions
(DTD) for IETF standards such at the iCalendar, calendaring and
scheduling core object format, defined by [RFC2445].
This XML DTD is in no way intended to create a separate definition
for the vCard schema. The sole purpose for this memo is to define an
alternative XML encoding for the format defined by [RFC2445].
The vCard DTD does not introduce any capability not expressible in
the format defined by [RFC2445]. However, an attempt has been made to
leverage the capabilities of the XML syntax to better articulate the
original intent of the iCalendar authors. For example, the notation
attribute is used to declare the strong data typing intended for each
of the properties in an iCalendar object. It is the responsibility of
the XML application supporting this DTD to make sure that the content
information is formatted consistently with the notation declared for
each element.
The iCalendar DTD promotes a number of iCalendar properties into
attributes on the "iCal" element. This has been done to express these
properties as "global attributes" for the iCalendar object, as a
whole. For example, the CALSCALE, METHOD, VERSION and PRODID
properties have been "mapped" into attributes on the iCalendar
object.
Binary content in the ATTACH property may either be specified through
an external entity reference to the non-XML binary content or may be
included in the content after first encoding the binary information
using the BASE64 encoding of [RFC 2146].
XML version 1.0 did not include the definition for namespaces. A
namespace is a collection of names, identified by a URI. However, in
anticipation of the publication of the "Namespaces in XML"
specification, this memo includes the definition for a default
namespace for the iCalendar DTD elements. XML applications that
support this memo and namespaces in XML can utilize this feature.
It is expected that the DTD defined in this memo will not normally be
included with iCalendar objects that are distributed. Instead, this
DTD will be externally referenced. This means that such iCalendar
objects will be well-formed but not valid, as defined in [XML].
2 iCalendar XML Document Type Definition
The following DTD conforms to XML version 1.0, as specified by [XML].
<?xml version="1.0" encoding="UTF-8"?>
Dawson 3 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<!-- ******************* -->
<!-- Entity declarations -->
<!-- ******************* -->
<!ENTITY % attr.altrep "
altrep ENTITY #IMPLIED
">
<!ENTITY % attr.cn "
cn CDATA ''
">
<!ENTITY % attr.cutype "
cutype NMTOKEN 'INDIVIDUAL'
">
<!-- Valid name tokens are "INDIVIDUAL", "GROUP", "RESOURCE" -->
<!-- "ROOM", "UNKNOWN", a non-standard "X-" name or another -->
<!-- IANA registered name. -->
<!ENTITY % attr.delfrom "
delfrom CDATA #IMPLIED
">
<!-- delfrom value is a calendar user address -->
<!ENTITY % attr.delto "
delto CDATA #IMPLIED
">
<!-- delto value is one or more calendar user addresses -->
<!ENTITY % attr.dir "
dir ENTITY #IMPLIED
">
<!-- dir value is a URI to a directory entry -->
<!ENTITY % attr.fmtype "
fmtype CDATA #REQUIRED
">
<!-- fmtype value is any IANA registered content type -->
<!ENTITY % attr.fbtype "
fmtype NMTOKEN 'BUSY'
">
<!-- Valid token values are "FREE", "BUSY", "BUSY-UNAVAILABLE", -->
<!-- "BUSY-TENTATIVE", a non-standard "X-" name or another -->
<!-- IANA registered name. -->
<!ENTITY % attr.lang "
lang CDATA #IMPLIED
">
<!-- lang value is a valid RFC 1766 language string -->
<!ENTITY % attr.member "
member CDATA #IMPLIED
Dawson 4 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
">
<!-- member value is one or more calendar user addresses -->
<!ENTITY % attr.partstat "
partstat NMTOKEN 'NEEDS-ACTION'
">
<!-- Valid token value for VEVENT: "NEEDS-ACTION", "ACCEPTED", -->
<!-- "DECLINED", "TENTATIVE", "DELEGATED", a non-standard "X- -->
<!-- name or another IANA registered name. -->
<!-- Valid token value for VTODO: "NEEDS-ACTION", "ACCEPTED", -->
<!-- "DECLINED", "TENTATIVE", "DELEGATED", "COMPLETED", -->
<!-- "IN-PROGRESS, a non-standard "X- name or another IANA -->
<!-- registered name. -->
<!-- Valid token value for VJOURNAL: "NEEDS-ACTION", "ACCEPTED", -->
<!-- "DECLINED", a non-standard "X- name or another IANA -->
<!-- registered name. -->
<!ENTITY % attr.range "
range NMTOKEN ' '
">
<!-- Valid token values are "THISANDPRIOR" or "THISANDFUTURE" -->
<!ENTITY % attr.trigtype "
trigtype NMTOKEN 'START'
">
<!-- Valid token values are "START" or "END" -->
<!ENTITY % attr.reltype "
reltype NMTOKEN 'PARENT'
">
<!-- Valid token values are "PARENT", "CHILD", SIBLING", -->
<!-- a non-standard "X-" name or any IANA registered name. -->
<!ENTITY % attr.role "
role NMTOKEN 'REQ-PARTICIPANT'
">
<!-- Valid token values are "CHAIR", "REQ-PARTICIPANT", -->
<!-- "OPT-PARTICIPANT", "NON-PARTICIPANT", a non-standard "X-" -->
<!-- name or any IANA registered name. -->
<!ENTITY % attr.rsvp "
rsvp NMTOKEN 'FALSE'
">
<!-- Valid token values are "TRUE" or "FALSE", -->
<!ENTITY % attr.sentby "
sentby CDATA #IMPLIED
">
<!-- sentby value is a calendar user address -->
<!ENTITY % attr.tzid "
tzid CDATA #IMPLIED
Dawson 5 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
">
<!-- tzid value is a time zone identifier -->
<!ENTITY % cal.comp "
vevent | vtodo | vjournal | vfreebusy | vtimezone
">
<!ENTITY % vevent.opt1 "
class | created | desc | dtstamp | dtstart | geo |
last-mod | location | organizer | priority | recurid |
seq | status | summary | transp | uid | url |
(dtend | duration)
">
<!-- These properties may only appear once in a VEVENT -->
<!ENTITY % vevent.optm "
attach | attendee | categories | comment | contact |
exdate | exrule | rdate | related | resources | rstatus |
rrule
">
<!-- These properties may appear one or more times in a VEVENT -->
<!ENTITY % vtodo.opt1 "
class | completed | created | desc | dtstamp | dtstart |
geo | last-mod | location | organizer | percent | priority |
recurid | seq | status | summary | uid | url |
(due | duration)
">
<!-- These properties may only appear once in a VTODO -->
<!ENTITY % vtodo.optm "
attach | attendee | categories | comment | contact |
exdate | exrule | rstatus | related | resources |
rdate | rrule
">
<!-- These properties may appear one or more times in a VTODO -->
<!ENTITY % vjournal.opt1 "
class | created | desc | dtstart | dtstamp | last-mod |
organizer | recurid | seq | status | summary | uid | url
">
<!-- These properties may only appear once in a VJOURNAL -->
<!ENTITY % vjournal.optm "
attach | attendee | categories | comment | contact |
exdate | exrule | related | rdate | rrule | rstatus
">
<!-- These properties may appear one or more times in a VJOURNAL -->
<!ENTITY % vfreebusy.opt1 "
contact | dtstamp | dtstart | dtend | duration |
organizer | uid | url
">
<!-- These properties may only appear once in a VFREEBUSY -->
Dawson 6 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<!ENTITY % vfreebusy.optm "
attendee | comment | freebusy | rstatus
">
<!-- These properties may appear one or more times in a -->
<!-- VFREEBUSY -->
<!ENTITY % vtimezone.man "
tzid
">
<!-- These properties must appear in a TIMEZONE -->
<!ENTITY % vtimezone.opt1 "
last-mod | tzurl
">
<!-- These properties may only appear once in a VTIMEZONE -->
<!ENTITY % vtimezone.mann "
(standard | daylight), (standard | daylight)*
">
<!-- These properties must appear in a VTIMEZONE and may -->
<!-- appear multiple times -->
<!ENTITY % standard.man "
dtstart | tzoffsetto | tzoffsetfrom
">
<!-- These properties must appear in a STANDARD, but only once -->
<!ENTITY % standard.optm "
comment | rdate | rrule | tzname
">
<!-- These properties may appear one or more times in a STANDARD -->
<!ENTITY % daylight.man "
dtstart | tzoffsetto | tzoffsetfrom
">
<!-- These properties must appear in a DAYLIGHT, but only once -->
<!ENTITY % daylight.optm "
comment | rdate | rrule | tzname
">
<!-- These properties may appear one or more times in a DAYLIGHT -->
<!ENTITY % audio.man "
action, trigger
">
<!-- These properties must appear in an audio VALARM. -->
<!ENTITY % audio.optx "
duration | repeat
">
<!-- These properties may appear once in an audio VALARM. If one -->
<!-- appears, then both must appear. -->
Dawson 7 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<!ENTITY % audio.opt1 "
attach
">
<!-- These properties may appear once in an audio VALARM. -->
<!ENTITY % alarm.audio "
(%audio.man;), (%audio.optx;)*, (%audio.opt1;)
">
<!ENTITY % display.man "
action, desc, trigger
">
<!-- These properties must appear in a display VALARM. -->
<!ENTITY % display.optx "
duration | repeat
">
<!-- These properties may appear once in a display VALARM. If -->
<!-- one appears, then both must appear. -->
<!ENTITY % alarm.display "
(%display.man;), (%display.optx;)*
">
<!ENTITY % email.man "
action, desc, summary, trigger
">
<!-- These properties must appear in an email VALARM. -->
<!ENTITY % email.optx "
duration | repeat
">
<!-- These properties may appear once in an email VALARM. If one -->
<!-- appears, then both must appear. -->
<!ENTITY % email.optm "
attach
">
<!-- These properties may appear one or more times in an email -->
<!-- VALARM. -->
<!ENTITY % email.mann "
attendee
">
<!-- These properties must appear in an email VALARM. The may -->
<!-- appear more than once. -->
<!ENTITY % alarm.email "
(%email.man;), (%email.optx;)*, (%email.optm;)*,
(%email.mann;)*
">
<!ENTITY % procedure.man "
action, attach, trigger
Dawson 8 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
">
<!-- These properties must appear in an audio VALARM. -->
<!ENTITY % procedure.optx "
duration | repeat
">
<!-- These properties may appear once in an procedure VALARM. -->
<!-- If one appears, then both must appear. -->
<!ENTITY % procedure.opt1 "
description
">
<!-- These properties may appear once in a procedure VALARM -->
<!ENTITY % alarm.procedure "
(%procedure.man;), (%procedure.optx;)*, (%procedure.opt1;)
">
<!-- ******************************************** -->
<!-- iCalendar value type notation declarations -->
<!-- ******************************************** -->
<!NOTATION BINARY PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Binary//EN">
<!NOTATION BOOLEAN PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Boolean//EN">
<!NOTATION CALADR PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Calendar User Address//EN">
<!NOTATION DATE PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Date//EN">
<!NOTATION DATE-TIME PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Date-Time//EN">
<!NOTATION DURATION PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Duration//EN">
<!NOTATION FLOAT PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Float//EN">
<!NOTATION INTEGER PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Integer//EN">
<!NOTATION PERIOD PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Period of Time//EN">
<!NOTATION RECUR PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Recurrence Rule//EN">
<!NOTATION TEXT PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Text//EN">
Dawson 9 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<!NOTATION TIME PUBLIC "-//IETF/iCalendar//NOTATION Value Type
Time//EN">
<!NOTATION URI PUBLIC "-//IETF/iCalendar//NOTATION Value Type
URI//EN">
<!NOTATION UTC-OFFSET PUBLIC "-//IETF/iCalendar//NOTATION Value Type
UTC-Offset//EN">
<!NOTATION X-NAME PUBLIC "-//IETF/iCalendar//NOTATION Value Type X-
Name//EN">
<!-- ************************************************* -->
<!-- iCalendar property element/attribute declarations -->
<!-- ************************************************** -->
<!ELEMENT br EMPTY>
<!-- Signifies a new line in the TEXT value content information -->
<!-- Description component properties element declarations -->
<!ELEMENT attach (extref | bin64)>
<!-- extref holds a reference to an external entity that -->
<!-- has the attachment. b64bin holds the inline BASE64 encoded -->
<!-- binary data for the attachment as defined in RFC 2045. -->
<!ELEMENT extref EMPTY>
<!ATTLIST extref
uri ENTITY #REQUIRED>
<!ELEMENT b64bin (#PCDATA)>
<!ATTLIST b64bin
%attr.fmtype;
value NOTATION (BINARY) #IMPLIED>
<!ELEMENT categories (item)*>
<!ELEMENT item (#PCDATA)>
<!ATTLIST item
%attr.lang;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT class (#PCDATA)>
<!ATTLIST class
%attr.lang;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT comment (#PCDATA | br)*>
<!ATTLIST comment
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED>
Dawson 10 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<!ELEMENT desc (#PCDATA | br)*>
<!ATTLIST desc
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT geo (lat, lon)>
<!ELEMENT lat (#PCDATA)>
<!ATTLIST lat value NOTATION (FLOAT) #IMPLIED>
<!-- A decimal degree float number to 6 decimal places -->
<!ELEMENT lon (#PCDATA)>
<!ATTLIST lon value NOTATION (FLOAT) #IMPLIED>
<!-- A decimal degree float number to 6 decimal places -->
<!ELEMENT location (#PCDATA)>
<!ATTLIST location
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT percent (#PCDATA)>
<!ATTLIST percent
value NOTATION (INTEGER) #IMPLIED>
<!ELEMENT priority (#PCDATA)>
<!ATTLIST priority
value NOTATION (INTEGER) #IMPLIED>
<!ELEMENT resources (#PCDATA)>
<!ATTLIST resources
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT status (#PCDATA)>
<!ATTLIST status
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED>
<!-- Text value must match the valid values for the particular -->
<!-- calendar component. -->
<!ELEMENT summary (#PCDATA)>
<!ATTLIST summary
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED >
<!-- Data and time component property element declarations -->
<!ELEMENT completed (#PCDATA)>
<!ATTLIST completed
Dawson 11 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
value NOTATION (DATE-TIME) #IMPLIED>
<!ELEMENT dtend (#PCDATA)>
<!ATTLIST dtend
%attr.tzid;
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
<!ELEMENT due (#PCDATA)>
<!ATTLIST due
%attr.tzid;
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
<!ELEMENT dtstart (#PCDATA)>
<!ATTLIST dtstart
%attr.tzid;
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
<!ELEMENT duration (#PCDATA)>
<!ATTLIST duration
value NOTATION (DURATION) #IMPLIED>
<!ELEMENT freebusy (#PCDATA)>
<!ATTLIST freebusy
%attr.fbtype;
value NOTATION (PERIOD) #IMPLIED>
<!ELEMENT transp (#PCDATA)>
<!ATTLIST transp
value NOTATION (TEXT) #IMPLIED>
<!-- Text value must be one of the valid enumerations. -->
<!-- Time zone component property element declarations -->
<!ELEMENT tzid (#PCDATA)>
<!ATTLIST tzid
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT tzname (#PCDATA)>
<!ATTLIST tzname
%attr.lang;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT tzoffsetfrom (#PCDATA)>
<!ATTLIST tzoffsetfrom
value NOTATION (UTC-OFFSET) #IMPLIED>
<!ELEMENT tzoffsetto (#PCDATA)>
<!ATTLIST tzoffsetto
value NOTATION (UTC-OFFSET) #IMPLIED>
<!ELEMENT tzurl EMPTY>
<!ATTLIST tzurl
uri ENTITY #REQUIRED>
Dawson 12 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<!-- Relationship component property element declarations -->
<!ELEMENT attend (#PCDATA)>
<!ATTLIST attend
%attr.lang;
%attr.cn;
%attr.role;
%attr.partstat;
%attr.rsvp;
%attr.cutype;
%attr.member;
%attr.delto;
%attr.delfrom;
%attr.sentby;
%attr.dir;
value NOTATION (CALADR) #IMPLIED>
<!ELEMENT contact (#PCDATA | br)*>
<!ATTLIST contact
%attr.lang;
%attr.altrep;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT organizer (#PCDATA)>
<!ATTLIST organizer
%attr.lang;
%attr.cn;
%attr.sentby;
%attr.dir;
value NOTATION (CALADR) #IMPLIED>
<!ELEMENT recurid (#PCDATA)>
<!ATTLIST recurid
%attr.tzid;
%attr.range;
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
<!ELEMENT related (#PCDATA)>
<!ATTLIST related
%attr.reltype;
value NOTATION (TEXT) #IMPLIED>
<!ELEMENT url EMPTY>
<!ATTLIST url
uri ENTITY #REQUIRED>
<!ELEMENT uid (#PCDATA)>
<!ATTLIST uid
value NOTATION (TEXT) #IMPLIED>
<!-- Recurrence component property element declarations -->
<!ELEMENT exdate (#PCDATA)>
<!ATTLIST exdate
Dawson 13 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
%attr.tzid;
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
<!ELEMENT exrule (#PCDATA)>
<!ATTLIST exrule
value NOTATION (RECUR) #IMPLIED>
<!ELEMENT rdate (#PCDATA)>
<!ATTLIST rdate
%attr.tzid;
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
<!ELEMENT rrule (#PCDATA)>
<!ATTLIST rrule
value NOTATION (RECUR) #IMPLIED>
<-- Alarm component property element declarations -->
<!ELEMENT action (#PCDATA)>
<!ATTLIST action
value NOTATION (TEXT) #IMPLIED>
<!-- Text value must be a valid enumeration -->
<!ELEMENT repeat (#PCDATA)>
<!ATTLIST repeat
value NOTATION (INTEGER) #IMPLIED>
<!ELEMENT trigger (#PCDATA)>
<!ATTLIST trigger
%attr.trigtype;
value NOTATION (DURATION | DATE-TIME) "DURATION">
<!-- Change management component property element declarations -->
<!ELEMENT created (#PCDATA)>
<!ATTLIST created
value NOTATION (DATE-TIME) #IMPLIED>
<!ELEMENT dtstamp (#PCDATA)>
<!ATTLIST dtstamp
value NOTATION (DATE-TIME) #IMPLIED>
<!ELEMENT last-mod (#PCDATA)>
<!ATTLIST last-mod
value NOTATION (DATE-TIME) #IMPLIED>
<!ELEMENT seq (#PCDATA)>
<!ATTLIST seq
value NOTATION (INTEGER) #IMPLIED>
<!-- Miscellaneous component property element declarations -->
<!ELEMENT rstatus (#PCDATA)>
<!ATTLIST rstatus
Dawson 14 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
%attr.lang;
value NOTATION (TEXT) #IMPLIED>
<!-- iCalendar object element declarations -->
<!ELEMENT iCalendar (iCal+)>
<!ATTLIST iCalendar annotation CDATA "">
<!ELEMENT iCal (%cal.comp;)*>
<!ATTLIST iCal
%attr.lang;
xmlns CDATA #FIXED 'http://www.ietf.org/internet-drafts/draft-
dawson-icalendar-xml-dtd-00.txt'
xmlns:vcf CDATA #FIXED 'http://www.ietf.org/internet-
drafts/draft-dawson-iCalendar-xml-dtd-00.txt'
calscale CDATA "GREGORIAN"
method CDATA "PUBLISH"
version CDATA #REQUIRED
prodid CDATA #IMPLIED>
<!-- version - Must be "2.0" if document conforms to this spec. -->
<!-- calscale - Calendar scale. Default is GREGORIAN. -->
<!-- method - C&S method. Default is iTIP PUBLISH. -->
<!-- prodid - ISO 9070 FPI for product that generated iCalendar. -->
<!-- VEVENT element declaration -->
<!ELEMENT vevent ((%vevent.opt1;)*, (%vevent.optm;)*, valarm*)>
<!-- VTODO element declaration -->
<!ELEMENT vtodo ((%vtodo.opt1;)*, (%vtodo.optm;)*, valarm*)>
<!-- VJOURNAL element declaration -->
<!ELEMENT vjournal ((%vjournal.opt1;)*, (%vjournal.optm;)*)>
<!-- VFREEBUSY element declaration -->
<!ELEMENT vfreebusy ((%vfreebusy.opt1;)*, (%vfreebusy.optm;)*)>
<!-- VTIMEZONE element declaration -->
<!ELEMENT vtimezone (%vtimezone.man;, (%vtimezone.opt1;)*,
(%vtimezone.mann;)*)>
<!ELEMENT standard (((%standard.man;)*), (%standard.optm;)*)>
<!ELEMENT daylight (((%daylight.man;)*), (%daylight.optm;)*)>
<!ELEMENT valarm ((%alarm.audio;) | (%alarm.display;) |
(%alarm.email;) | (%alarm.procedure;))>
3 iCalendar Notation
The formal public identifier (FPI) for the DTD described in this
specification is "-//IETF//DTD iCalendar//EN".
A XML document can reference an external non-XML entity containing an
iCalendar object, as specified by [RFC2445]. The iCalendar object,
Dawson 15 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
while encoded in the standard, non-XML format can be referenced in an
external entity reference that identifies the [RFC2445] format in a
notation declaration. The [RFC2445] format is identified by the
formal public identifier "-//IETF//NONSGML iCalendar//EN", as defined
in [FPI].
4 Example Usage
4.1 Simple iCalendar Object
The following is a simple example of a XML document using this DTD.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE iCalendar PUBLIC "-//IETF//DTD iCalendar//EN"
http://www.ietf.org/internet-drafts/draft-dawson-ical-xml-dtd-02.txt>
<iCalendar>
<iCal version="2.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN"
method="PUBLISH">
<vevent>
<dtstart>19981116T163000Z</dtstart>
<dtend>19981116T190000Z</dtend>
<summary>Project XYZ Review</summary>
<location>Conference Room 23A</location>
</vevent>
</iCal>
</iCalendar>
4.2 iCalendar with non-standard extension
The following is an example of an iCalendar object that also includes
a non-standard extension.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE iCalendar PUBLIC "-//IETF//DTD iCalendar//EN"
http://www.ietf.org/internet-drafts/draft-dawson-ical-xml-dtd-02.txt
[
<!ELEMENT vtodo ((%vtodo.opt1;)*, (%vtodo.optm; | x-lotus-cust-
code)*, (valarm)*)>
<!ELEMENT x-lotus-cust-code (#PCDATA)>
<!ATTLIST x-lotus-cust-code value NOTATION(X-NAME) #IMPLIED>
]>
<iCalendar>
<iCal version="2.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN"
method="PUBLISH">
<vtodo>
<dtstart>19981105T133000Z</dtstart>
<dtend>19981106T133000Z</dtend>
<summary>Draft a test plan</summary>
<x-lotus-cust-code>1998-ABC Corp-1234</x-lotus-cust-code>
Dawson 16 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
<priority>1</priority>
</vtodo>
</iCal>
</iCalendar>
4.3 iCalendar with ATTACH property
The following is an example of an iCalendar object that also includes
an external reference to an attachment.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE iCalendar PUBLIC "-//IETF//DTD iCalendar//EN"
http://www.ietf.org/internet-drafts/draft-dawson-ical-xml-dtd-02.txt
[
<!ENTITY attach1 SYSTEM "http://host.com/pub/photos/holiday.jpg"
NDATA JPEG>
<!NOTATION JPEG PUBLIC "ISO/IEC 10918:1993//NOTATION Digital
Compression and Coding of Continuous-tone Still Images (JPEG)//EN" >
]>
<iCalendar>
<iCal version="2.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN"
method="PUBLISH">
<vevent>
<dtstart>19981212T150000Z</dtstart>
<dtend>19981212T160000Z</dtend>
<summary>Department Holiday Party</summary>
<location>Conference Room 23A</location>
<attach><extref uri="attach1" /></attach>
</vevent>
</iCal>
</iCalendar>
The following is an example of an iCalendar object that includes an
attachment as inline binary content.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE iCalendar PUBLIC "-//IETF//DTD iCalendar//EN"
http://www.ietf.org/internet-drafts/draft-dawson-ical-xml-dtd-02.txt
>
<iCalendar>
<iCal version="2.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN">
method="PUBLISH">
<vevent>
<dtstart>19981212T150000Z</dtstart>
<dtend>19981212T160000Z</dtend>
<summary>Department Holiday Party</summary>
<location>Conference Room 23A</location>
<attach fmtype="JPEG"><b64bin>MIICajCCAdOgAwIBAgICBEUwDQ
EEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW
11bmljYXRpb25z...and so on...IENvcnBvc==</b64bin></attach>
Dawson 17 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
</vevent>
</iCal>
</iCalendar>
4.4 Document with multiple iCalendar objects
The following is an example of a document that includes more than one
iCalendar object.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE iCalendar PUBLIC "-//IETF//DTD iCalendar//EN"
http://www.ietf.org/internet-drafts/draft-dawson-ical-xml-dtd-02.txt
>
<iCalendar annotation="IT Conference Prep">
<iCal version="2.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN">
method="PUBLISH">
<vtodo>
<dtstart>19981010T000000Z</dtstart>
<dtend>19981010T235959Z</dtend>
<summary>Register for conference</summary>
<priority>2</priority>
</vtodo>
</iCal>
<iCal version="2.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN">
method="PUBLISH">
<vevent>
<dtstart>19981120T133000Z</dtstart>
<dtend>19981122T183000Z</dtend>
<summary>IT Conference</summary>
<location>Downtowner Hotel</location>
</vevent>
</iCal>
</iCalandar>
4.5 Document utilizing iCalendar namespace
The following is an example of a well-formed but invalid XML document
that declares the iCalendar namespace as it's default namespace.
<?xml version="1.0" encoding="UTF-8"?>
<iCal version="2.0" xmlns="http://www.ietf.org/internet-drafts/
draft-dawson-ical-xml-dtd-00.txt">
</iCal>
The following is an example of a well-formed but invalid XML document
that includes elements from the iCalendar namespace.
<?xml version="1.0" encoding="UTF-8"?>
<x xmlns:ical="http://www.ietf.org/internet-drafts/
Dawson 18 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
draft-dawson-ical-xml-dtd-00.txt"
xmlns:pdi="http://pdi.org/schema">
<ical:dtstart>19981123T133000Z</ical:dtstart>
<ical:dtend>19981123T203000Z</ical:dtend>
<pdi:idnum>1234567</pdi:idnum>
<pdi:usage>999.99</pdi:usage>
</x>
4.6 XML document reference to a non-XML iCalendar object
The following is an example of a XML document with a proper reference
to a non-XML entity containing an iCalendar object in the format
defined by [RFC2445]. This example shows how existing iCalendar
objects can be integrated into XML documents using the XML structure
defined in this document.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wbs SYSTEM "http://host.com/wbs.dtd"
[
<!ENTITY fdawson SYSTEM "http://fdawson.com/mycal.ics"
NDATA iCalendar>
<!NOTATION iCalendar PUBLIC "-//IETF//NOTATION iCalendar//EN">
]>
<wbs>
<worker ical=fdawson></worker>
<activity desc="draft plan" start="19981104" end="19981105"/>
<activity desc="review plan" start="19981111" end"19981111"/>
</wbs>
5 Namespace
[NSPACE] defines "XML namespaces" to be a collection of names,
identified by a URI, which are used in XML documents as element types
and attribute names. XML namespaces allow multiple markup vocabulary
in a single document. Considering the utility of the iCalendar
properties in other applications, it is important for the iCalendar
XML DTD to define a namespace for the iCalendar element types.
This memo includes the definition of both a qualified name for the
iCalendar namespace and also a default namespace. The namespace
declaration is specified by attributes on the "iCal" element. The
default namespace is specified with the "xmlns" attribute and the
qualified name for the iCalendar namespace is specified with the
"xmlns:iCal" attribute.
The default namespace attribute is useful in XML documents that are
based on the iCalendar document types. The qualified name for the
iCalendar namespace is useful in XML documents that partially consist
of iCalendar elements types but also consist of element types from
other schemas.
Dawson 19 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
The following is an example of the iCalendar namespace declaration
using the qualified namespace:
<?xml version="1.0" encoding="UTF-8"?>
<iCal:iCal version="3.0" xmlns:vcf="http://www.ietf.org/internet-
drafts/draft-dawson-ical-xml-dtd-00.txt">
<!-- Remainder of the XML document, each iCalendar element -->
<!-- prefaced with the "iCal:" prefix... -->
</iCal:iCal>
The following is an example of an iCalendar namespace declaration
using the default namespace:
<?xml version="1.0" encoding="UTF-8"?>
<x xmlns="http://www.ietf.org/internet-drafts/
draft-dawson-ical-xml-dtd-00.txt">
<!-- Remainder of the XML document, each iCalendar element -->
<!-- prefaced with the "iCal:" prefix... -->
</x>
6 Acknowledgments
The following have participated in the drafting and discussion of
this memo:
Greg FitzPatrick, Charles Goldfarb, Paul Hoffman, Thomas Rowe, Doug
Royer
7 Security Considerations
Security issues are not currently discussed in this memo.
8 Bibliography
[FPI] F. Dawson, "iCalendar Formal Public Identifier", Internet
Draft, http://www.internic.net/internet-drafts/draft-calsch-icalfpi-
00.txt, September 1998.
[ISO9070] "Information Technology_SGML Support Facilities_
Registration Procedures for Public Text Owner Identifiers", ISO/IEC
9070, Second Edition, International Organization for Standardization,
April, 1991.
[RFC 2045] N. Freed, N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) - Part One: Format of Internet Message Bodies", RFC
2045, November 1996.
[RFC 2119] S. Bradner, "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2119, ftp://ftp.isi.edu/in-notes/
rfc2119.txt, March 1997.
Dawson 20 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
[NSPACE] T. Bray, D. Hollander, A. Layman, "Namespaces in XML", WD-
xml-names-19980916, http://www.w3.org/TR/1998/WD-xml-names-19980916,
Septebmer 1998.
[RFC2445] F. Dawson and T. Howes, "Internet Calendaring and
Scheduling Core Object Specification (iCalendar)", RFC 2445,
ftp://ftp.isi.edu/in-notes/rfc2445.txt, November 1998.
[XML] "Extensible Markup Language (XML)", Worldwid Web Consortium,
http://www.w3.org/TR/PR-xml-971208, December 1997.
9 Author's Address
The following address information is provided in a vCard XML DTD
electronic business card, format.
<vCard
version="3.0"
prodid="-//HandGen//NONSGML vGen v1.0//EN">
<fn>Frank Dawson</fn>
<n> <family>Dawson</family>
<given>Frank</given></n>
<org><orgname>Lotus Development Corporation</orgname>
<adr adr.type="WORK POSTAL PARCEL">
<street>6544 Battleford Drive</street>
<locality>Raleigh</locality>
<region>NC</region>
<pcode>27613-3502</pcode>
<countryUSA</country></adr>
<tel tel.type="PREF WORK MSG">+1-617-693-8728</tel>
<tel tel.type="WORK MSG">+1-919-676-9515</tel>
<email email.type="PREF INTERNET">Frank_Dawson@Lotus.com</email>
<email email.type="INTERNET">fdawson@earthlink.net</email>
</vCard>
10 Full Copyright Statement
"Copyright (C) The Internet Society (1998).All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implmentation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are
included on all such copies and derivative works.However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process MUST be
followed, or as required to translate it into languages other than
English.
Dawson 21 Expires June 1999
Internet Draft iCalendar XML DTD December 4, 1998
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Dawson 22 Expires June 1999
Html markup produced by rfcmarkup 1.129b, available from
https://tools.ietf.org/tools/rfcmarkup/