<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<rfc ipr="full3978" docName="draft-royer-calsch-xcal-02" category="std">
  <front>
    <title abbrev="xCal-Basic-RSS">iCalendar in XML Format (xCal-Basic)</title>
    
    <author initials="D." surname="Royer" fullname="Doug Royer">
      <organization abbrev="IntelliCal">IntelliCal LLC</organization>
      <address>
        <postal>
            <street>267 Kentlands Blvd., #3041</street>
            <city>Gaithersburg</city>
            <region>MD</region>
            <code>20878</code>
            <country>US</country>
        </postal>
        <phone>(208)881-0380</phone>
        <email>Doug@Royer.com</email>
      </address>
    </author>
    
    <date day="26" month="August" year="2005" />
    <abstract>
      <t>
        The mailing list for discussion of this memo is 
        "xCal@INET-Consulting.com" and signup page at
        "http://INET-Conusulting.com/mailman/listinfo/xcal.
        This is a rerelease of an expired
        draft with updates and a much more simplivied approach. This
        approach uses an exact 1 to 1 mapping between iCalendar and
        xml objects.
      </t>
      <t>
        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 [KEYWORDS].
      </t>
    </abstract>
  </front>    
  <middle>
    <section title="Introduction">
      <t>
        The Extended Markup Language (XML) as defined in [XML] is gaining
        widespread attention as a "web friendly" syntax for representing and
        exchanging documents and data on the Internet. This interest includes
        requests for and discussion of possible document type definitions
        (DTD) and name-space for IETF standard formats such as that defined
        by [iCAL].
        This memo defines how XML can be used to represent iCalendar objects
        and does not specify a DTD as iCalendar can be extended.
      </t>
      <t>
       This format was selected to ease its translation back to
       the iCalendar format using an XSLT transform. (See project
       iCalendar on SourceForge.com - http://sourceforge.net/projects/icalendar/ )
      </t>
      <t>
        NOTE: The [iCAL] is the definitive reference for the definition of
        iCalendar semantics. This memo only provides an alternative, XML
        representation for the standard syntax defined in [iCAL]. This
        memo does not introduce any semantics not already defined by [RFC
        2445].
      </t>
      <t>
        An attempt has been made to leverage the standard features of the XML
        syntax in order to represent the component iCalendar semantics. For
        example, strong data typing is specified using the XML notation
        declaration. The element type attributes are used to represent many
        of the calendar properties that provide a "global attribute"
        capability in an iCalendar object. Binary content in the ATTACH
        component property may either be specified through an external entity
        reference to a non-XML binary content or may be included in the XML
        document's content information, after first being encoding using the
        BASE64 scheme of [RFC 2146].
      </t>
      <t>
        The publication of XML version 1.0 was followed by the publication of
        a World-wide Web Consortium (W3C) recommendation on "Namespaces in
        XML". A XML name-space is a collection of names, identified by a URI.
        In anticipation of the broader use of XML namespaces. Within this
        memo the term "xCal" will mean the XML namespace usage as
        described in this memo.
      </t>
    </section>
      
    <section title="Using XML For Representating iCalendar">
      <t>
        XML is a simplified version of the text markup syntax defined by ISO
        8879, Standard Generalized Markup Language (SGML). XML was published
        as a proposed recommendation [XML] by the World-wide Web Consortium
       (W3C) on February 10, 1998.
      </t>
      <t>
        In iCalendar names can be in upper case, lower case, or mixed
        case. In xCal the predefined iCaledars names will be represented
        in lower case only as XML element and attribute names are case
        sensitive.. Values to properties and parameters that are user
        specified may be in upper, lower, or mixed case.
      </t>
      <t>
        All iCalendar component names will be represented in xCal
        as XML element names in lower case. The "BEGIN" iCalendar 
        component will be represented in xCal as: &lt;begin&gt;.
      </t>
      <t>
        All iCalendar property names will be represented in xCal
        as XML element names in lower case.
      </t>
      <t>
        All iCalendar parameter names will be represented in xCal
        as XML attribute names in lower case.
      </t>
      <t>
        All iCalendar predefined names that are used as values will be
        represented in xCal in lower case.
      </t>
      <t>
         This example:
      </t>
        <figure><artwork>
     BEGIN:VCALENDAR
     VERSION:2.0
     PRODID:-//hacksw/handcal//NONSGML v1.0//EN
     BEGIN:VEVENT
     DTSTART:19970714T170000Z
     DTEND:19970715T035959Z
     SUMMARY;LANGUAGE="en_US":Bastille Day Party
     END:VEVENT
     END:VCALENDAR
        </artwork></figure>
     <t>
       Is represented in xCal as:
     </t>
        <figure><artwork><![CDATA[

     <?xml version="1.0" TODO_NAMESPACE="foo"?>
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
     <vcalendar>
     <version>2.0</version>
     <prodid>-//hacksw/handcal//NONSGML v1.0//EN</prodid>
     <vevent>
     <dtstart>19970714T170000Z</dtstart>
     <dtendt>19970715T035959Z</dtend>
     <summary xml:lang="en_US">Bastille Day Party</summary>
     </vevent>
     </vcaledar>
     </iCalendar>

      ]]></artwork></figure>

      <section title="XML Dependencies">
        <t>
          This memo specifies the XML representation for the standard iCalendar
          format defined by [iCAL]. There are no XML dependencies other
          than the [XML] and the [XMLNS] recommendations.
        </t>
      </section>

      <section title="Working With Standard and XML iCalendar Representations">
        <t>
          This memo defines an alternative, XML representation for the standard
          iCalendar format defined in [iCAL]. This alternative representation
          provides the same semantics as that defined in the standard format.
          It is the goal of this memo to allow all [iCAL] extensions
          and modifications to be translated into and from this XML format.
        </t>

        <section title="Conversion">
          <t>
            The standard format can be converted to and from this XML format
            without loss of any calendaring information. When the XML 
            representation was defined, every attempt was made to use existing
            component, property and parameter naming conventions. This greatly
            facilitates transformations between the two representations.
          </t>
        </section>

        <section title="Mixed Use of Both Representations">
          <t>
            As previously indicated, conversion between the standard and XML
            representations of iCalendar is a straightforward process. In addition,
            mixed use of both representations is also possible using MIME objects.
          </t>

          <t>
            With the use of the MIME multipart content-types, compound MIME
            entities containing a mix of the standard and XML representations
            can be specified. This capability is useful in applications where both
            representations might be encountered. In addition, this capability
            demonstrates the isomeric nature of the two representations. XML
            applications conforming to this specification MUST be able to
            properly parse and process a MIME multipart entity containing the
            MIME type associated with this iCalendar XML document type.
          </t>
          <t>
            Internet applications conforming to this memo MUST only send the
            iCalendar XML document in a "multipart/alternative" MIME entity that
            also contains an equivalent iCalendar object in the standard format
            defined by [RFC2445]. This restriction will guarantee that the
            iCalendar object can also be processed by Internet applications that
            only support the standard iCalendar representation.
          </t>

        </section>
      </section>

      <section title="Using Data Types">
        <t>
          Strong "data typing" is an integral design principle to the iCalendar
          format. Strong data typing in iCalendar means that the format type
          for each property value is well known. Within [iCAL], the data
          type is called the "value type". The standard format defined by [RFC
          2445] specifies a default value type for each calendar and component
          property. In addition, many of the property definitions allow for the
          specification of alternate value types. This XML representation
          continues this design principle.
        </t>
          
        <t>
          Explicit value/data typing in the XML representation is specified
          with the "value" attribute on each element type. XML
          documents conforming to this memo need only specify the "value"
          attribute on element types when the value needs to override the
          default value/data type defined in the iCalendar specifications.
          The formal public identifier for standard value types all have
          the common string format of:
        </t>
      </section>
          
      <section title="Including Binary Content">
        <t>
          Binary content can be included in an iCalendar object with the
          "ATTACH" component property. In the standard iCalendar format this
          content may either be specified through an external entity reference,
          using a URI value type, or maybe specified within the iCalendar
          object, after first BASE64 encoding the content.
          </t>
        <t>
          The XML representation for iCalendar also supports including binary
          content in an iCalendar object with the "attach" element type. It also
          supports either an external reference to the non-XML binary content
          or inclusion of the binary content after first encoding the binary
          information using the BASE64 encoding of [MIME].
        </t>
        <figure><artwork><![CDATA[
   <attach>http://host.com/bin/foo.exe</attach>
        ]]></artwork></figure>

        <figure><artwork><![CDATA[
   <attach fmttype="APPLICATION/OCTET-STRING">MIICajCC
   AdOgAwIBAgICBEUwDQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05l
   dHNjYXBlIENvbW11bmljYXR5z...and so on...IENvcnBvc==</attach>
        ]]></artwork></figure>          
      </section>

      <section title="Including Multiple iCalendar Objects">
        <t>
          The iCalendar format has the capability for including multiple,
          individual iCalendar objects in a single data stream. The XML
          representation can support this also. Individual iCalendar objects
          are specified by the "vcalendar" element type. One or more 
          "vcalendar" element types are permitted within the parent element
          type, called "iCalendar". For example:
        </t>

        <figure><artwork><![CDATA[
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
        <vcalendar>
        <version>2.0</version>
             <!-- remainder of the first vcalendar object -->
        </vcalendar>
        <vcalendar>
        <version>2.0</version>
             <!-- remainder of the second vcalendar object -->
        </vcalendar>>
   </iCalendar>
        ]]></artwork></figure>
      </section>

      <section title="Mapping Property Parameters to XML">
        <t>
          The property parameters defined in the standard iCalendar format are
          represented in the XML representation as an attribute on element
          types. The following table specifies some of the attribute name
          corresponding to each property parameter. This is true for all
          iCalendar object parameters defined in any iCalendar specification.
          The property and paramater names will be all lower case. Here are
          some iCalendar parameter names and how they are mapped to their
          lower case xCal names.
        </t>
        <t>
         NOTE: that the iCalendar "language" parameter is converted
         to the "xml:lang" attribute as an exception to the one
         to one mapping. 
        </t>
        
        <figure><artwork><![CDATA[
   +----------------+----------------+
   | Property       | Attribute      |
   | Parameter Name | Name           |
   +----------------+----------------+
   | ALTREP         | altrep         |
   | CN             | cn             |
   | CUTYPE         | cutype         |
   | DELEGATED-FROM | delegated-from |
   | DELEGATED-TO   | delegated-to   |
   | DIR            | dir            |
   | FMTTYPE        | fmttype        |
   | FBTYPE         | fbtype         |
   | LANGUAGE       | xml:lang       |
   | MEMBER         | member         |
   | PARTSTAT       | partstat       |
   | RANGE          | range          |
   | RELATED        | related        |
   | RELTYPE        | reltype        |
   | ROLE           | role           |
   | RSVP           | rsvp           |
   | SENT-BY        | sent-by        |
   | TZID           | tzid           |
   | VALUE          | value          |
   | X-...          | x-...          |
   | .....          | .....          |
   +----------------+----------------+
        ]]></artwork></figure>

      </section>
          
      <section title="Mapping VCALENDAR object Properties to XML">
        <t>
          Calendar properties defined in the standard iCalendar format provide
          information about an iCalendar object, as a whole. The calendar
          properties are represented in the XML representation as element
          types as shown in lower case. Here is a list of some iCalendar
          properties and them mapped to xCal lower case names:
        </t>

        <figure><artwork><![CDATA[
   +------------------+------------------+
   | Calendar         | Tag              |
   | Property Name    | Name             |
   +------------------+------------------+
   | ACTION           | action           |
   | ATTACH           | attach           |
   | ATTENDEE         | attendee         |
   | CALSCALE         | calscale         |
   | CATEGORIES       | categories       |
   | CLASS            | class            |
   | COMMENT          | comment          |
   | COMPLETED        | completed        |
   | CONTACT          | contact          |
   | CREATED          | created          |
   | DESCRIPTION      | description      |
   | DTEND            | dtend            |
   | DTSTART          | dtstart          |
   | DTSTAMP          | dtstamp          |
   | DUE              | due              | 
   | DURATION         | duration         |
   | EXDATE           | exdate           |
   | EXRULE           | exrule           |
   | FREEBUSY         | freebusy         |
   | GEO              | geo              |
   | LAST-MODIFIED    | last-modified    |
   | LOCATION         | location         |
   | METHOD           | method           |
   | ORGANIZER        | organizer        |
   | PERCENT-COMPLETE | percent-complete |
   | PRIORITY         | priority         |
   | PRODID           | prodid           |
   | RECURRENCE-ID    | recrrence-id     |
   | RDATE            | rdate            |
   | RELATED-TO       | related-to       |
   | REPEAT           | repeat           |
   | RESORCES         | resources        |
   | RRULE            | rrule            |
   | SEQUENCE         | sequence         |
   | STATUS           | status           |
   | SUMMARY          | summary          |
   | TRANSP           | transp           |
   | TRIGGER          | trigger          |
   | TZID             | tzid             |
   | TZNAME           | tzname           |
   | TZOFFSETTO       | tzoffsetto       |
   | TZOFFSETFROM     | tzoffsetfrom     |
   | TZURL            | tzurl            |
   | URL              | url              |
   | UID              | uid              |
   | VERSION          | version          |
   | X-...            | x-...            |
   | ...              | ...              |
   +------------------+------------------+
        ]]></artwork></figure>

        <t>
          The semantics for these are as specified for the
          corresponding calendar property in [iCAL].
        </t>
      </section>

      <section title="Mapping All Components to XML">
        <t>
          All components in xCal are mapped to their component
          name without the BEGIN tag. This example show
          how many component names are mapped to xCal lower
          case names:
        </t>

        <figure><artwork><![CDATA[

   +----------------+-------------+------------------------------+
   | Component      | Element     | Example                      |
   +----------------+-------------+------------------------------+
   | VEVENT         | vevent      | <vevent> ... </vevent>       |
   | VTODO          | vtodo       | <vtoto> ... </vtodo>         |
   | VJOURNAL       | vjournal    | <vjournal> ... </vjournal>   |
   | VTIMEZONE      | vtimezone   | <vtimezone> ... </vtimezone> |
   | STANDARD       | standard    | <standard> ... </standard>   |
   | DAYLIGHT       | daylight    | <daylight> ... </daylight>   |
   | X-...          | x-...       | <x-...> ... </x-...>         |
   | ...            | ...         | ...                          |
   +----------------+-------------+-------------------------------

        ]]></artwork></figure>
      </section>

      <section title="Mapping All Values to XML">
        <t>
          The [iCAL] specification specifies that the equivalent component
          properties to the "comment", "description", "location", "summary" and
          "contact" element types can contain formatted content, such as is
          specified by multiple lines of text. In such cases, the formatted
          text should be specified in as CDATA Section content. The CDATA
          section specifies arbitrary character data that is not meant to be
          interpretted. It is not scanned for markup by the XML parser. The
          CDATA Section in these element types MUST NOT contain markup or other
          such alternate representation of the property value.
        </t>
        <t>
          Values MUST NOT be mapped to lower case. iCalendar property
          values and iCalendar parameter values are used without 
          lower case conversion.
        </t>
        <t>
          Vaues that have characters forbidden by XML MUST be encoded
          using standard XML escaping mechanisms.
        </t>
        <t>
          Values that containe XML tags like in this example:
        </t>
        <figure><artwork><![CDATA[
 
          DESCRIPTION:How to map xml DESCRIPTION into
           an XML <description> element.

        ]]></artwork></figure>
        <t>
         Would be encoded using standard XML encoding as shown here:
        </t>
        <figure><artwork><![CDATA[

          <description>How to map xml DESCRIPTION into
           an XML &lt;description&gt; element.</description>

        ]]></artwork></figure>

      </section>

      <section title="Emailing the iCalendar XML Representation">
        <t>
          It is expected that iCalendar XML documents will need to be sent over
          SMTP/MIME email. The "text/xml" and "application/xml" content-types
          have been registered for XML documents. However, use of these
          content-type definitions present some problems for XML applications
          such as calendaring and scheduling.
        </t>
        <t>
          The "text/xml" and "application/xml" content-type definitions do not
          provide for any header field parameters to identify the type of XML
          document contained in the MIME entity. This means that a recipient
          mail user agent must (MUA) open up each "text/xml" or
          "application/xml" content in order to determine what object handler
          is needed to process the information. To a MUA, all XML documents
          look like just plain "text/xml" or "application/xml" content.
        </t>
        <t>
          Additionally, it is accepted practice for a MUA to provide iconic
          feedback to the user for individual content-types that are supported
          by the MUA. For example, not only would feedback be provided for a
          calendaring and scheduling content. Some further unique
          identification would also be provided for each different scheduling
          message; such as a meeting invitation, response to an invitation,
          reschedule notice, cancellation notice, etc. In such cases,
          acceptable performance by the MUA is dependent on the existence of
          header field information, such as it provided in the definition of
          the "text/calendar" content-type by [iCAL].
        </t>
        <t>
          Internet application conforming to this memo MUST identify iCalendar
          XML documents with the experimental content-type 
          "application/calendar+xml". The content-type header field SHOULD also
          contain a "component" and "method" parameter to clearly identify a 
          comma-separated list of components and the singular method used in 
          the iCalendar XML document. For example, an iCalendar XML document 
          specifying a REQUEST for a VEVENT would be specified with 
          the following content-type header field:
        </t>

        <figure><artwork><![CDATA[
   content-type:application/calendar+xml;method=REQUEST;component=VEVENT
        ]]></artwork></figure>

        <t>
          The content-type can also include the "optinfo" parameter to specify
          any other optional iCalendar information. The semantics of these
          content-type parameters is as defined in [iCAL].
        </t>
        <t>
          Internet applications conforming to this memo MUST only send the
          iCalendar XML document in a "multipart/alternative" MIME entity that
          also contains an equivalent iCalendar object in the standard format
          defined by [iCAL]. This restrict will guarantee that the iCalendar
          object can also be processed by internet applications that only
          support the standard iCalendar format.
        </t>
        <t>
          An XML application supporting the iCalendar XML document type MUST be
          able to receive and properly process the "application/calendar+xml"
          document contained within a "multipart" message content-type.
        </t>
      </section>

      <section title="iCalendar XML Representation and File Systems">
        <t>
          The iCalendar XML documents will be stored in file systems. The
          accepted practice for file extensions for XML documents is the text
          "XML". However, in order to uniquely identify iCalendar XML documents
          for file association with applications that can directly process this
          document type, it is RECOMMENDED that the file extension be the text
          "XCS".
        </t>
      </section>
    </section>

    <section title="Example Usage">
      <t>
        The following sections provide various examples of iCalendar XML
        documents.
      </t>
  
      <section title="A well-formed and valid iCalendar XML document">
        <t>
          The following is a simple example of a iCalendar XML document. This
          document is both a well-formed and valid XML document. The iCalendar
          object specifies an appointment.
        </t>

        <figure><artwork><![CDATA[
   <?xml version="1.0" encoding="UTF-8"?>
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
   <vcalendar>
    <method>PUBLISH</method>
    <version>2.0</version>
    <prodid>-//HandGen//NONSGML vGen v1.0//EN</prodid>
    <vevent>
     <uid>19981116T150000@cal10.host.com</uid>
     <dtstamp>19981116T145958Z</dtstamp>
     <summary>Project XYZ Review</summary>
     <location>Conference Room 23A</location>
     <dtstart>19981116T163000Z</dtstart>
     <dtend>19981116T190000Z</dtend>
     <x-foo-cust-code>1998-ABC Corp-1234</x-foo-cust-code>
     <categories>Appointment,Work</categories>
    </vevent>
   </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>
  
      <section title="Including binary content in attachments">
        <t>
          The following is an example of a valid iCalendar XML document that
          also includes an external reference to an attachment. The iCalendar
          object specifies a meeting invitation with an attachment.
        </t>
  
        <figure><artwork><![CDATA[
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE iCalendar PUBLIC "-//IETF//DTD XCAL/iCalendar XML//EN"
   "http://www.ietf.org/internet-drafts/draft-royer-calsch-xcal-02.txt"

     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
     <method>REQUEST</method>
     <version>2.0</version>
     <prodid>-//HandGen//NONSGML vGen v1.0//EN</prodid>
     <vevent>
      <uid>19981211T133000@cal1.host.com</uid>
      <dtstamp>19981211T132928Z</dtstamp>
      <organizer>cap://host.com/jim</organizer>
      <dtstart>19981212T150000Z</dtstart>
      <dtend>19981212T160000Z</dtend>
      <summary>Department Meeting</summary>
      <location>Conference Room 23A</location>
      <attendee role="CHAIR">jim@host.com</attendee>
      <attendee role="REQ-PART"
                rsvp="TRUE">MAILTO:joe@host.com</attendee>
      <attendee role="REQ-PART"
                rsvp="TRUE">MAILTO:steve@host.com</attendee>
      <attach>http://host.com/pub/photos/holiday.jpg</attach>
     </vevent>
    </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
  
        <t>
          The following is an example of a well-formed and valid iCalendar XML
          document that includes an attachment as inline binary content. The
          iCalendar object specifies a meeting invitation with an attachment.
        </t>
  
        <figure><artwork><![CDATA[
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE iCalendar PUBLIC "-//IETF//DTD XCAL/iCalendar XML//EN"
   "http://www.ietf.org/internet-drafts/draft-royer-calsch-xcal-02.txt">
   
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
   <vcalendar>
    <method>REQUEST</method>
    <version>2.0</version>
    <prodid>-//HandGen//NONSGML vGen v1.0//EN</prodid>
    <vevent>
     <uid>19981211T133000@cal1.host.com</uid>
     <dtstamp>19981211T132928Z</dtstamp>
     <organizer>MAILTO:jim@host.com</organizer>
     <dtstart>19981212T150000Z</dtstart>
     <dtend>19981212T160000Z</dtend>
     <summary>Department Meeting</summary>
     <location>Conference Room 23A</location>
     <attendee role="CHAIR">MAILTO:jim@host.com</attendee>
     <attendee role="REQ-PART"
               rsvp="TRUE">MAILTO:joe@host.com</attendee>
     <attendee role="REQ-PART"
               rsvp="TRUE">MAILTO:steve@host.com</attendee>
     <attach fmttype="IMAGE/JPEG">MIICajCCAdOgAwIBAgI
     CBEUwDQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXB
     lIEjYXRpb25z...and so on...IENvcnBvc==</attach>
    </vevent>
    </vevent>
   </iCalendar>
        ]]></artwork></figure>
   </section>
  
      <section title="iCalendar XML document with multiple iCalendar objects">
        <t>
          The following is an example of a well-formed and valid iCalendar XML
          document that includes more than one iCalendar object.
        </t>
  
        <figure><artwork><![CDATA[
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE iCalendar PUBLIC "-//IETF//DTD XCAL/iCalendar XML//EN"
   "http://www.ietf.org/rfc/rfcXXXX.txt">
   
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
   <vcalendar>
    <method>PUBLISH</method>
    <version>2.0</version>
    <prodid>-//HandGen//NONSGML vGen v1.0//EN</prodid>
   </vcalendar>
   <vcalendar>
    <version>2.0</version>
    <prodid>-//HandGen//NONSGML vGen v1.0//EN</prodid>
    <method>PUBLISH</method>
    <vevent>
     <uid>19981009T233010@cal1.host.com</uid>
     <dtstamp>19981009T233000Z</dtstamp>
     <dtstart>19981120T133000Z</dtstart>
     <dtend>19981122T183000Z</dtend>
     <summary>IT Conference</summary>
     <location>Downtowner Hotel</location>
    </vevent>
   </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>
  
      <section title="Using the iCalendar namespace">
        <t>
          The following is an example of a snippet of a XML document that
          includes elements from the iCalendar name-space.
        </t>
  
        <figure><artwork><![CDATA[
   <x xmlns:xCal="urn:ietf:params:xml:ns:xcal">
     xmlns:pdi="http://pdi.org/schema">
   <xCal:dtstart>19981123T133000Z</xCal:dtstart>
   <xCal:dtend>19981123T203000Z</xCal:dtend>
   <pdi:idnum>1234567</pdi:idnum>
   <pdi:usage>999.99</pdi:usage>
   </x>
        ]]></artwork></figure>
      </section>
  
      <section title="Publish meeting information">
        <t>
          The following is a snippet of an iCalendar XML document that
          publishes information about a meeting.
        </t>
  
        <figure><artwork><![CDATA[
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
     <version>2.0</version>
     <prodid>-//hacksw/handcal//NONSGML 1.0//EN</prodid>
     <method>PUBLISH</method>
     <vevent>
      <uid>19970901T130000Z-123401@host.com</uid>
      <dtstamp>19970901T130000Z</dtstamp>
      <dtstart>19970903T163000Z</dtstart>
      <dtend>19970903T190000Z</dtend>
      <summary>Annual Employee Review</summary>
      <class>PRIVATE</class>
      <categories>Business,Human Resources</categories>
     </vevent>
    </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>
  
      <section title="Publish transparent annual event">
        <t>
          The following is a snippet of an iCalendar XML document that
          publishes information about an annually repeating event that is
          transparent to busy time searches.
        </t>

        <figure><artwork><![CDATA[
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
     <version>2.0</version>
     <prodid-//hacksw/handcal//NONSGML 1.0//EN</prodid>
     <method>PUBLISH</publish>
     <vevent>
      <uid>19990101T125957Z-123403@host.com</uid>
      <dtstamp>19990101T130000Z</dtstamp>
      <dtstart value="DATE">19991102</dtstart>
      <summary>Our Blissful Anniversary</summary>
      <class>CONFIDENTIAL</class>
      <transp>TRANSPARENT</transp>
      <categories>Anniversary,Personal,Special Occasion</categories>
      <rrule>FREQ=YEARLY</rrule>
     </vevent>
    </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>

      <section title="Meeting invitation">
        <t>
          The following is a snippet of an iCalendar XML document that
          specifies an invitation for a meeting. The meeting occurs on the
          first Monday of each year for five years.
        </t>

        <figure><artwork><![CDATA[
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
    <method>REQUEST</method>
    <version>2.0</version>
    <prodid>-//hacksw/handcal//NONSGML 1.0//EN</prodid>
    <vevent>
     <uid>19981220T130000Z-123403@host.com</uid>
     <dtstamp>19981220T130050Z</dtstamp>
     <organizer>MAILTO:corprel@host.com</organizer>
     <dtstart>19990104T140000Z</dtstart>
     <dtend>19990104T220000Z</dtend>
     <summary>Annual Stockholders Meeting</summary>
     <location>One Corporate Drive, Wilmington, DL</location>
     <attendee role="CHAIR">MAILTO:mrbig@host.com</attendee>
     <attendee cutype="GROUP"
               rsvp="TRUE">CAP:host.com/stockholders</attendee>
     <categories>Business,Meeting,Special Occasion</categories>
     <rrule>FREQ=YEARLY;COUNT=5;BYDAY=1MO</rrule>
     </vevent>
    </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>

      <section title="Publish busy time">
        <t>
          The following is an iCalendar XML document that publishes busy time
          information. The default value for the "method" attribute is
          "PUBLISH" and does not need to be specified in this example.
        </t>

        <figure><artwork><![CDATA[

     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
     <version>2.0</version>
     <prodid>-//hacksw/handcal//NONSGML 1.0//EN</prodid>
     <vfreebusy>
      <uid>19980313T133000@ical1.host.com</uid>
      <dtstamp>19990104T133010Z</dtstamp>
      <organizer>CAP:host.com/jsmith</organizer>
      <dtstart>19980313T141711Z</dtstart>
      <dtend>19980410T141711Z</dtend>
      <url>jsmith.ifb</url>
      <freebusy>19980314T233000Z/19980315T003000Z</freebusy>
      <freebusy>19980316T153000Z/19980316T163000Z</freebusy>
      <freebusy>19980318T030000Z/19980318T040000Z</freebusy>
     </vfreebusy>
    </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>

      <section title="Request busy time">
        <t>
          The following is a snippet of an iCalendar XML document that requests
          a calendar user's busy time information.
        </t>

        <figure><artwork><![CDATA[
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
     <method>REQUEST</method>
     <version>2.0</version>
     <prodid>-//hacksw/handcal//NONSGML 1.0//EN</prodid>
     <vfreebusy>
      <uid>19970901T083000@ical1.host.com</uid>
      <dtstamp>19970901T083000Z</dtstamp>
      <organizer>MAILTO:jane_doe@host1.com</organizer>
      <dtstart>19971015T050000Z</dtstart>
      <dtend>19971016T050000Z</dtend>
      <attendee>MAILTO:john_public@host2.com</attendee>
     </vfreebusy>
    </vcalendar>
   </iCalendar>
        ]]></artwork></figure>
      </section>

      <section title="Issue a CAP command">
        <t>
          The following is a snippet of an iCalendar XML document that
          issues a CAP command to delete a UID.
        </t>
        
        <figure><artwork><![CDATA[
     <iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal">
    <vcalendar>
     <version>2.0</version>
     <prodid>-//hacksw/handcal//NONSGML 1.0//EN</prodid>
     <target>relcalid-22</target>
     <cmd id="random but unique per CUA">DELETE</cmd>
     <vquery>
      <query>SELECT VEVENT FROM VAGENDA WHERE UID = 'abcd12345'</query>
     </vquery>
     </vcalendar>
    </iCalendar>
        ]]></artwork></figure>
      </section>
    </section>

    <section title="Acknowledgments">
      <t>
        The following have participated in the drafting and discussion of
        this memo:
      </t>
      
      <figure><artwork><![CDATA[
   Greg FitzPatrick, Charles Goldfarb, Paul Hoffman, Lisa Lippert,
   Thomas Rowe.
      ]]></artwork></figure>
    </section>

    <section title="IANA Considerations">
       <t>
          TODO - registration if application/calendar+xml
       </t>
    </section>

    <section title="Security Considerations">
      <t>
        CDATA Sections - - A XML iCalendar document may contain CDATA
        sections to represent content for specific element types. The CDATA
        section specifies arbitrary character data that is not meant to be
        interpretted. It is not scanned by the XML parser for markup. While
        this memo restricts that any CDATA section MUST NOT contain markup or
        other such alternate representation for the property value, in
        general, CDATA section from a non-conformant implementation can
        contain content such as HTML markup. HTML text can be used to invoke
        programs. Implementors should be aware that this may leave an
        implementation open to malicious attack that might occur as a result
        of executing the markup in the CDATA section.
      </t>
 
      <t>
        PROCEDURAL ALARMS - - A XML iCalendar document can be created that
        contains a "VEVENT" calendar component with "VALARM"
        calendar components. The "VALARM" calendar component can be of type
        PROCEDURE and can have an attachment containing some sort of
        executable program. Implementations that incorporate these types of
        alarms are subject to any virus or malicious attack that might occur
        as a result of executing the attachment.
      </t>
 
      <t>
        ATTACHMENTS - - A XML iCalendar document can include references to
        Uniform Resource Locators that can be programmed resources.
        Implementers and users of this memo should be aware of the network
        security implications of accepting and parsing such information.
      </t>
 
      <t>
        In addition, the security considerations observed by implementations
        of electronic mail systems should be followed for this memo.
      </t>
 
    </section>

    <section title="Bibliography">
      <t>
        [BASIC] D. Royer, "Basic Internet Calendaring and Scheduling
        Core Object Specification", Internet
        Draft, http://www.internic.net/internet-drafts/draft-royer-ical-basic-03.txt,
        June 2005.
      </t>
      <t>
        [ISO9070] "Information Technology_SGML Support Facilities_
        Registration Procedures for Public Text Owner Identifiers", ISO/IEC
        9070, Second Edition, International Organization for Standardization,
        April 1991.
      </t>
      <t>
        [MIME] N. Freed, N. Borenstein, "Multipurpose Internet Mail
        Extensions (MIME) - Part One: Format of Internet Message Bodies", RFC
        2045, November 1996.
      </t>
      <t>
        [KEYWORDS] S. Bradner, "Key words for use in RFCs to Indicate
        Requirement Levels", RFC 2119, http://www.ietf.org/rfc/rfc2119.txt, March
        1997.
      </t>
      <t>
        [iCAL] F. Dawson and D. Stenerson, "Internet Calendaring and
        Scheduling Core Object Specification (iCalendar)", RFC 2445,
        http://www.ietf.org/rfc/rfc2445.txt, November 1998.
      </t>
      <t>
        [XML] "Extensible Markup Language (XML)", Worldwide Web Consortium,
        http://www.w3.org/TR/1998/REC-xml-19980210, February 1998.
      </t>
      <t>
        [XML] "Extensible Markup Language (XML)", Worldwide Web Consortium,
        http://www.w3.org/TR/1998/REC-xml-19980210, February 1998.
      </t>
    </section>
  </middle>

  <back>
  </back>
</rfc>
