The iCalendar XML DTD
From:  http://www.ietf.org/internet-drafts/draft-dawson-ical-xml-dtd-01.txt
Date:  1999-01-20

---------------------------------------------------------------------------

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
