Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 6321                                   Apple, Inc.
Category: Standards Track                                    M. Douglass
ISSN: 2070-1721                                                      RPI
                                                                 S. Lees
                                                               Microsoft
                                                             August 2011
        
Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 6321                                   Apple, Inc.
Category: Standards Track                                    M. Douglass
ISSN: 2070-1721                                                      RPI
                                                                 S. Lees
                                                               Microsoft
                                                             August 2011
        

xCal: The XML Format for iCalendar

xCal:iCalendar的XML格式

Abstract

摘要

This specification defines "xCal", an XML format for iCalendar data.

本规范定义了“xCal”,这是iCalendar数据的XML格式。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6321.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc6321.

Copyright Notice

版权公告

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2011 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1. Introduction ....................................................3
   2. Conventions Used in This Document ...............................4
   3. Converting from iCalendar to xCal ...............................4
      3.1. Pre-Processing .............................................4
      3.2. iCalendar Stream (RFC 5545, Section 3.4) ...................5
      3.3. Components (RFC 5545, Section 3.6) .........................6
      3.4. Properties (RFC 5545, Sections 3.7 and 3.8) ................6
           3.4.1. Special Cases for Properties ........................8
                  3.4.1.1. Multi-Valued Properties ....................8
                  3.4.1.2. GEO Property ...............................9
                  3.4.1.3. REQUEST-STATUS Property ....................9
      3.5. Parameters (RFC 5545, Section 3.2) ........................10
           3.5.1. VALUE Parameter ....................................11
      3.6. Values (RFC 5545, Section 3.3) ............................11
           3.6.1. Binary (RFC 5545, Section 3.3.1) ...................12
           3.6.2. Boolean  (RFC 5545, Section 3.3.2) .................12
           3.6.3. Calendar User Address (RFC 5545, Section 3.3.3) ....12
           3.6.4. Date (RFC 5545, Section 3.3.4) .....................12
           3.6.5. Date-Time (RFC 5545, Section 3.3.5) ................13
           3.6.6. Duration (RFC 5545, Section 3.3.6) .................13
           3.6.7. Float (RFC 5545, Section 3.3.7) ....................13
           3.6.8. Integer (RFC 5545, Section 3.3.8) ..................14
           3.6.9. Period of Time (RFC 5545, Section 3.3.9) ...........14
           3.6.10. Recurrence Rule (RFC 5545, Section 3.3.10) ........14
           3.6.11. Text (RFC 5545, Section 3.3.11) ...................15
           3.6.12. Time (RFC 5545, Section 3.3.12) ...................15
           3.6.13. URI (RFC 5545, Section 3.3.13) ....................15
           3.6.14. UTC Offset (RFC 5545, Section 3.3.14) .............16
      3.7. Extensions ................................................16
   4. Converting from xCal into iCalendar ............................16
      4.1. Converting XML Extensions into iCalendar ..................16
      4.2. The XML Property for iCalendar ............................17
   5. Handling Unrecognized Properties or Parameters .................18
   6. Security Considerations ........................................19
   7. IANA Considerations ............................................20
      7.1. Namespace Registration ....................................20
      7.2. Media Type ................................................20
      7.3. iCalendar Property Registrations ..........................21
   8. Acknowledgments ................................................22
   9. References .....................................................22
      9.1. Normative References ......................................22
      9.2. Informative References ....................................22
        
   1. Introduction ....................................................3
   2. Conventions Used in This Document ...............................4
   3. Converting from iCalendar to xCal ...............................4
      3.1. Pre-Processing .............................................4
      3.2. iCalendar Stream (RFC 5545, Section 3.4) ...................5
      3.3. Components (RFC 5545, Section 3.6) .........................6
      3.4. Properties (RFC 5545, Sections 3.7 and 3.8) ................6
           3.4.1. Special Cases for Properties ........................8
                  3.4.1.1. Multi-Valued Properties ....................8
                  3.4.1.2. GEO Property ...............................9
                  3.4.1.3. REQUEST-STATUS Property ....................9
      3.5. Parameters (RFC 5545, Section 3.2) ........................10
           3.5.1. VALUE Parameter ....................................11
      3.6. Values (RFC 5545, Section 3.3) ............................11
           3.6.1. Binary (RFC 5545, Section 3.3.1) ...................12
           3.6.2. Boolean  (RFC 5545, Section 3.3.2) .................12
           3.6.3. Calendar User Address (RFC 5545, Section 3.3.3) ....12
           3.6.4. Date (RFC 5545, Section 3.3.4) .....................12
           3.6.5. Date-Time (RFC 5545, Section 3.3.5) ................13
           3.6.6. Duration (RFC 5545, Section 3.3.6) .................13
           3.6.7. Float (RFC 5545, Section 3.3.7) ....................13
           3.6.8. Integer (RFC 5545, Section 3.3.8) ..................14
           3.6.9. Period of Time (RFC 5545, Section 3.3.9) ...........14
           3.6.10. Recurrence Rule (RFC 5545, Section 3.3.10) ........14
           3.6.11. Text (RFC 5545, Section 3.3.11) ...................15
           3.6.12. Time (RFC 5545, Section 3.3.12) ...................15
           3.6.13. URI (RFC 5545, Section 3.3.13) ....................15
           3.6.14. UTC Offset (RFC 5545, Section 3.3.14) .............16
      3.7. Extensions ................................................16
   4. Converting from xCal into iCalendar ............................16
      4.1. Converting XML Extensions into iCalendar ..................16
      4.2. The XML Property for iCalendar ............................17
   5. Handling Unrecognized Properties or Parameters .................18
   6. Security Considerations ........................................19
   7. IANA Considerations ............................................20
      7.1. Namespace Registration ....................................20
      7.2. Media Type ................................................20
      7.3. iCalendar Property Registrations ..........................21
   8. Acknowledgments ................................................22
   9. References .....................................................22
      9.1. Normative References ......................................22
      9.2. Informative References ....................................22
        
   Appendix A. RELAX NG Schema .......................................23
   Appendix B. Examples ..............................................49
     B.1. Example 1 ..................................................49
       B.1.1. iCalendar Data .........................................49
       B.1.2. XML Data ...............................................49
     B.2. Example 2 ..................................................50
       B.2.1. iCalendar Data .........................................50
       B.2.2. XML Data ...............................................51
        
   Appendix A. RELAX NG Schema .......................................23
   Appendix B. Examples ..............................................49
     B.1. Example 1 ..................................................49
       B.1.1. iCalendar Data .........................................49
       B.1.2. XML Data ...............................................49
     B.2. Example 2 ..................................................50
       B.2.1. iCalendar Data .........................................50
       B.2.2. XML Data ...............................................51
        
1. Introduction
1. 介绍

The iCalendar data format [RFC5545] is a widely deployed interchange format for calendaring and scheduling data. While many applications and services consume and generate calendar data, iCalendar is a specialized format that requires its own parser/generator. In contrast, XML-based formats are widely used for interoperability between applications, and the many tools that generate, parse, and manipulate XML make it easier to work with than iCalendar.

iCalendar数据格式[RFC5545]是一种广泛部署的日历和日程数据交换格式。虽然许多应用程序和服务使用并生成日历数据,但iCalendar是一种特殊格式,需要自己的解析器/生成器。相比之下,基于XML的格式广泛用于应用程序之间的互操作性,许多生成、解析和操作XML的工具比iCalendar更易于使用。

The purpose of this specification is to define "xCal", an XML format for iCalendar data. xCal is defined as a straightforward mapping into XML from iCalendar, so that iCalendar data can be converted to XML, and then back to iCalendar, without losing any semantic meaning in the data. Anyone creating xCal calendar data according to this specification will know that their data can be converted to a valid iCalendar representation as well.

本规范的目的是定义“xCal”,一种用于iCalendar数据的XML格式。xCal被定义为从iCalendar到XML的直接映射,因此iCalendar数据可以转换为XML,然后再返回到iCalendar,而不会丢失数据中的任何语义。根据本规范创建xCal日历数据的任何人都知道,他们的数据也可以转换为有效的iCalendar表示形式。

Key design considerations are:

主要的设计考虑是:

Round-tripping (converting an iCalendar instance to xCal and back) will give the same semantic result as the starting point. That is, all components, properties, and property parameters are guaranteed to be preserved, with the exception of those that have default values.

往返(将iCalendar实例转换为xCal并返回)将给出与起点相同的语义结果。也就是说,除具有默认值的组件、特性和特性参数外,所有组件、特性和特性参数都保证保留。

xCal preserves the semantics of the iCalendar data. While a simple consumer can easily browse the calendar data in xCal, a full understanding of iCalendar is still required in order to modify and/or fully comprehend the calendar data.

xCal保留iCalendar数据的语义。虽然简单的消费者可以轻松浏览xCal中的日历数据,但仍需要完全了解iCalendar才能修改和/或完全理解日历数据。

xCal has the ability to handle many extensions to the underlying iCalendar specification without requiring an update to this document.

xCal能够处理基础iCalendar规范的许多扩展,而无需更新本文档。

2. Conventions Used in This Document
2. 本文件中使用的公约

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。

When XML element types in the namespace "urn:ietf:params:xml:ns:icalendar-2.0" are referenced in this document outside of the context of an XML fragment, the string "IC:" will be prefixed to the element types.

当在XML片段上下文之外的本文档中引用命名空间“urn:ietf:params:XML:ns:icalendar-2.0”中的XML元素类型时,字符串“IC:”将作为元素类型的前缀。

Some examples in this document contain "partial" XML documents used for illustrative purposes. In these examples, three periods "..." are used to indicate a portion of the document that has been removed for compactness.

本文档中的一些示例包含用于说明目的的“部分”XML文档。在这些示例中,三个句号“…”用于表示文档中为紧凑而删除的部分。

3. Converting from iCalendar to xCal
3. 从iCalendar转换为xCal

This section describes how iCalendar data is converted to xCal using a simple mapping between the iCalendar data model and XML elements.

本节介绍如何使用iCalendar数据模型和XML元素之间的简单映射将iCalendar数据转换为xCal。

3.1. Pre-Processing
3.1. 预处理

iCalendar uses a line folding mechanism to limit lines of data to a maximum line length (typically 72 characters) to ensure maximum likelihood of preserving data integrity as it is transported via various means (e.g., email) -- see Section 3.1 of [RFC5545]. Prior to converting iCalendar data into xCal, all folded lines MUST be unfolded.

iCalendar使用折线机制将数据行限制为最大行长(通常为72个字符),以确保在通过各种方式(如电子邮件)传输数据时保持数据完整性的最大可能性——见[RFC5545]第3.1节。在将iCalendar数据转换为xCal之前,必须展开所有折叠线。

iCalendar data uses an "escape" character sequence for text values and property parameter values. When such text elements are converted into xCal, the escaping MUST be removed.

iCalendar数据对文本值和特性参数值使用“转义”字符序列。将此类文本元素转换为xCal时,必须删除转义。

iCalendar uses a base64 encoding for binary data. However, it does not restrict the encoding from being applied to non-binary value types. So, the following rules MUST be applied when processing a property with the "ENCODING" property parameter set to "BASE64":

iCalendar对二进制数据使用base64编码。但是,它并不限制编码应用于非二进制值类型。因此,在处理“ENCODING”属性参数设置为“BASE64”的属性时,必须应用以下规则:

o If the property value type is "BINARY", the base64 encoding MUST be preserved.

o 如果属性值类型为“BINARY”,则必须保留base64编码。

o If the value type is not "BINARY", the "ENCODING" property parameter MUST be removed, and the value MUST be base64 decoded.

o 如果值类型不是“二进制”,则必须删除“ENCODING”属性参数,并且必须对值进行base64解码。

When base64 encoding and decoding are used, they MUST conform to Section 4 of [RFC4648], which is the base64 method used in [RFC5545].

当使用base64编码和解码时,它们必须符合[RFC4648]的第4节,这是[RFC5545]中使用的base64方法。

One key difference in the formatting of values used in iCalendar and xCal is that, in xCal, the specification uses date/time and UTC offset values aligned with the syntax of [W3C.REC-xmlschema-2-20041028] to aid with XML processing.

iCalendar和xCal中使用的值格式的一个关键区别是,在xCal中,规范使用与[W3C.REC-xmlschema-2-20041028]语法一致的日期/时间和UTC偏移量值来帮助XML处理。

3.2. iCalendar Stream (RFC 5545, Section 3.4)
3.2. 伊卡伦达河(RFC 5545,第3.4节)

At the top level of the iCalendar object model is an "iCalendar stream". This object encompasses multiple "iCalendar objects". In xCal, the entire stream is contained in the root IC:icalendar XML element.

在iCalendar对象模型的顶层是一个“iCalendar流”。此对象包含多个“iCalendar对象”。在xCal中,整个流包含在根IC:icalendar XML元素中。

An iCalendar stream can contain one or more iCalendar objects. Each iCalendar object, delimited by "BEGIN:VCALENDAR" and "END:VCALENDAR", is enclosed by the IC:vcalendar XML element.

iCalendar流可以包含一个或多个iCalendar对象。每个iCalendar对象由“BEGIN:VCALENDAR”和“END:VCALENDAR”分隔,由IC:VCALENDAR XML元素包围。

Example:

例子:

   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
     ...
     </vcalendar>
   </icalendar>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
     ...
     </vcalendar>
   </icalendar>
        

iCalendar objects are comprised of a set of "components", "properties", "parameters", and "values". A "component" can contain other "components" or "properties". A "property" has a value and a set of zero or more "parameters".

iCalendar对象由一组“组件”、“属性”、“参数”和“值”组成。“组件”可以包含其他“组件”或“属性”。“属性”有一个值和一组零个或多个“参数”。

In xCal, component elements, for example, IC:vevent and IC:vtodo, are contained within an IC:components XML element. Within the component element, another IC:components element could appear (representing components nested within components) or the IC:properties XML element could appear. IC:properties is used to encapsulate iCalendar properties.

在xCal中,组件元素(例如IC:vevent和IC:vtodo)包含在IC:components XML元素中。在component元素中,可能会出现另一个IC:components元素(表示嵌套在组件中的组件)或IC:properties XML元素。IC:properties用于封装iCalendar属性。

Each iCalendar property will be mapped to its own XML element as described below. Within each of these elements, there is zero or one IC:parameters XML element used to encapsulate any iCalendar property parameters. Additionally there will be one or more XML elements representing the value of the iCalendar property.

每个iCalendar属性都将映射到其自己的XML元素,如下所述。在每个元素中,都有零个或一个IC:parameters XML元素用于封装任何iCalendar属性参数。此外,还有一个或多个XML元素表示iCalendar属性的值。

Example:

例子:

   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       <properties>
       ...
       </properties>
       <components>
       ...
       </components>
     </vcalendar>
   </icalendar>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       <properties>
       ...
       </properties>
       <components>
       ...
       </components>
     </vcalendar>
   </icalendar>
        
          +------------------+--------------+------------------+
          | Item             | XML element  | XML Definition   |
          +------------------+--------------+------------------+
          | iCalendar Stream | IC:icalendar | Appendix A # 3.4 |
          | VCALENDAR        | IC:vcalendar | Appendix A # 3.6 |
          +------------------+--------------+------------------+
        
          +------------------+--------------+------------------+
          | Item             | XML element  | XML Definition   |
          +------------------+--------------+------------------+
          | iCalendar Stream | IC:icalendar | Appendix A # 3.4 |
          | VCALENDAR        | IC:vcalendar | Appendix A # 3.6 |
          +------------------+--------------+------------------+
        
3.3. Components (RFC 5545, Section 3.6)
3.3. 部件(RFC 5545,第3.6节)

Each calendar component in the "VCALENDAR" object, delimited by "BEGIN" and "END", will be converted to an enclosing XML element with the same name, but in lowercase. As an example, the table below shows iCalendar-to-xCal mappings for current iCalendar components. Any new iCalendar components added in the future will be converted in the same way.

“VCALENDAR”对象中由“BEGIN”和“END”分隔的每个日历组件都将转换为一个名称相同但小写的封闭XML元素。例如,下表显示了当前iCalendar组件的iCalendar到xCal映射。将来添加的任何新iCalendar组件都将以相同的方式进行转换。

             +-----------+--------------+--------------------+
             | Component | XML element  | XML Definition     |
             +-----------+--------------+--------------------+
             | VEVENT    | IC:vevent    | Appendix A # 3.6.1 |
             | VTODO     | IC:vtodo     | Appendix A # 3.6.2 |
             | VJOURNAL  | IC:vjournal  | Appendix A # 3.6.3 |
             | VFREEBUSY | IC:vfreebusy | Appendix A # 3.6.4 |
             | VTIMEZONE | IC:vtimezone | Appendix A # 3.6.5 |
             | STANDARD  | IC:standard  | Appendix A # 3.6.5 |
             | DAYLIGHT  | IC:daylight  | Appendix A # 3.6.5 |
             | VALARM    | IC:valarm    | Appendix A # 3.6.6 |
             +-----------+--------------+--------------------+
        
             +-----------+--------------+--------------------+
             | Component | XML element  | XML Definition     |
             +-----------+--------------+--------------------+
             | VEVENT    | IC:vevent    | Appendix A # 3.6.1 |
             | VTODO     | IC:vtodo     | Appendix A # 3.6.2 |
             | VJOURNAL  | IC:vjournal  | Appendix A # 3.6.3 |
             | VFREEBUSY | IC:vfreebusy | Appendix A # 3.6.4 |
             | VTIMEZONE | IC:vtimezone | Appendix A # 3.6.5 |
             | STANDARD  | IC:standard  | Appendix A # 3.6.5 |
             | DAYLIGHT  | IC:daylight  | Appendix A # 3.6.5 |
             | VALARM    | IC:valarm    | Appendix A # 3.6.6 |
             +-----------+--------------+--------------------+
        
3.4. Properties (RFC 5545, Sections 3.7 and 3.8)
3.4. 属性(RFC 5545,第3.7节和第3.8节)

iCalendar properties, whether they apply to the "VCALENDAR" object or to a component, are handled in a consistent way in the xCal format.

iCalendar属性,无论它们应用于“VCALENDAR”对象还是组件,都以xCal格式以一致的方式处理。

iCalendar properties are enclosed in the XML element IC:properties.

iCalendar属性包含在XML元素IC:properties中。

Each individual iCalendar property is represented in xCal by an element of the same name as the iCalendar property, but in lowercase. For example, the "CALSCALE" property is represented in xCal by the IC:calscale element.

每个单独的iCalendar属性在xCal中由一个与iCalendar属性同名但小写的元素表示。例如,“CALSCALE”属性在xCal中由IC:CALSCALE元素表示。

Example:

例子:

   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       <properties>
         <calscale>...</calscale>
         <version>...</version>
         <prodid>...</prodid>
       </properties>
       <components>
       ...
       </components>
     </vcalendar>
   </icalendar>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       <properties>
         <calscale>...</calscale>
         <version>...</version>
         <prodid>...</prodid>
       </properties>
       <components>
       ...
       </components>
     </vcalendar>
   </icalendar>
        

Each property can contain an IC:parameters XML element encapsulating any iCalendar property parameters associated with the iCalendar property.

每个属性都可以包含一个IC:parameters XML元素,该元素封装了与iCalendar属性关联的任何iCalendar属性参数。

Each property will contain one or more "value" XML elements as described below representing the value of the iCalendar property.

每个属性将包含一个或多个“值”XML元素,如下所述,表示iCalendar属性的值。

As an example, the table below shows iCalendar-to-xCal mappings for current iCalendar properties. Any new iCalendar properties added in the future will be converted in the same way.

例如,下表显示了当前iCalendar属性的iCalendar到xCal映射。将来添加的任何新iCalendar属性都将以相同的方式进行转换。

    +------------------+---------------------+-----------------------+
    | Property         | XML element         | XML Definition        |
    +------------------+---------------------+-----------------------+
    | CALSCALE         | IC:calscale         | Appendix A # 3.7.1    |
    | METHOD           | IC:method           | Appendix A # 3.7.2    |
    | PRODID           | IC:prodid           | Appendix A # 3.7.3    |
    | VERSION          | IC:version          | Appendix A # 3.7.4    |
    | ATTACH           | IC:attach           | Appendix A # 3.8.1.1  |
    | CATEGORIES       | IC:categories       | Appendix A # 3.8.1.2  |
    | CLASS            | IC:class            | Appendix A # 3.8.1.3  |
    | COMMENT          | IC:comment          | Appendix A # 3.8.1.4  |
    | DESCRIPTION      | IC:description      | Appendix A # 3.8.1.5  |
    | GEO              | IC:geo              | Appendix A # 3.8.1.6  |
    | LOCATION         | IC:location         | Appendix A # 3.8.1.7  |
        
    +------------------+---------------------+-----------------------+
    | Property         | XML element         | XML Definition        |
    +------------------+---------------------+-----------------------+
    | CALSCALE         | IC:calscale         | Appendix A # 3.7.1    |
    | METHOD           | IC:method           | Appendix A # 3.7.2    |
    | PRODID           | IC:prodid           | Appendix A # 3.7.3    |
    | VERSION          | IC:version          | Appendix A # 3.7.4    |
    | ATTACH           | IC:attach           | Appendix A # 3.8.1.1  |
    | CATEGORIES       | IC:categories       | Appendix A # 3.8.1.2  |
    | CLASS            | IC:class            | Appendix A # 3.8.1.3  |
    | COMMENT          | IC:comment          | Appendix A # 3.8.1.4  |
    | DESCRIPTION      | IC:description      | Appendix A # 3.8.1.5  |
    | GEO              | IC:geo              | Appendix A # 3.8.1.6  |
    | LOCATION         | IC:location         | Appendix A # 3.8.1.7  |
        
    | PERCENT-COMPLETE | IC:percent-complete | Appendix A # 3.8.1.8  |
    | PRIORITY         | IC:priority         | Appendix A # 3.8.1.9  |
    | RESOURCES        | IC:resources        | Appendix A # 3.8.1.10 |
    | STATUS           | IC:status           | Appendix A # 3.8.1.11 |
    | SUMMARY          | IC:summary          | Appendix A # 3.8.1.12 |
    | COMPLETED        | IC:completed        | Appendix A # 3.8.2.1  |
    | DTEND            | IC:dtend            | Appendix A # 3.8.2.2  |
    | DUE              | IC:due              | Appendix A # 3.8.2.3  |
    | DTSTART          | IC:dtstart          | Appendix A # 3.8.2.4  |
    | DURATION         | IC:duration         | Appendix A # 3.8.2.5  |
    | FREEBUSY         | IC:freebusy         | Appendix A # 3.8.2.6  |
    | TRANSP           | IC:transp           | Appendix A # 3.8.2.7  |
    | TZID             | IC:tzid             | Appendix A # 3.8.3.1  |
    | TZNAME           | IC:tzname           | Appendix A # 3.8.3.2  |
    | TZOFFSETFROM     | IC:tzoffsetfrom     | Appendix A # 3.8.3.3  |
    | TZOFFSETTO       | IC:tzoffsetto       | Appendix A # 3.8.3.4  |
    | TZURL            | IC:tzurl            | Appendix A # 3.8.3.5  |
    | ATTENDEE         | IC:attendee         | Appendix A # 3.8.4.1  |
    | CONTACT          | IC:contact          | Appendix A # 3.8.4.2  |
    | ORGANIZER        | IC:organizer        | Appendix A # 3.8.4.3  |
    | RECURRENCE-ID    | IC:recurrence-id    | Appendix A # 3.8.4.4  |
    | RELATED-TO       | IC:related-to       | Appendix A # 3.8.4.5  |
    | URL              | IC:url              | Appendix A # 3.8.4.6  |
    | UID              | IC:uid              | Appendix A # 3.8.4.7  |
    | EXDATE           | IC:exdate           | Appendix A # 3.8.5.1  |
    | RDATE            | IC:rdate            | Appendix A # 3.8.5.2  |
    | RRULE            | IC:rrule            | Appendix A # 3.8.5.3  |
    | ACTION           | IC:action           | Appendix A # 3.8.6.1  |
    | REPEAT           | IC:repeat           | Appendix A # 3.8.6.2  |
    | TRIGGER          | IC:trigger          | Appendix A # 3.8.6.3  |
    | CREATED          | IC:created          | Appendix A # 3.8.7.1  |
    | DTSTAMP          | IC:dtstamp          | Appendix A # 3.8.7.2  |
    | LAST-MODIFIED    | IC:last-modified    | Appendix A # 3.8.7.3  |
    | SEQUENCE         | IC:sequence         | Appendix A # 3.8.7.4  |
    | REQUEST-STATUS   | IC:request-status   | Appendix A # 3.8.8.3  |
    +------------------+---------------------+-----------------------+
        
    | PERCENT-COMPLETE | IC:percent-complete | Appendix A # 3.8.1.8  |
    | PRIORITY         | IC:priority         | Appendix A # 3.8.1.9  |
    | RESOURCES        | IC:resources        | Appendix A # 3.8.1.10 |
    | STATUS           | IC:status           | Appendix A # 3.8.1.11 |
    | SUMMARY          | IC:summary          | Appendix A # 3.8.1.12 |
    | COMPLETED        | IC:completed        | Appendix A # 3.8.2.1  |
    | DTEND            | IC:dtend            | Appendix A # 3.8.2.2  |
    | DUE              | IC:due              | Appendix A # 3.8.2.3  |
    | DTSTART          | IC:dtstart          | Appendix A # 3.8.2.4  |
    | DURATION         | IC:duration         | Appendix A # 3.8.2.5  |
    | FREEBUSY         | IC:freebusy         | Appendix A # 3.8.2.6  |
    | TRANSP           | IC:transp           | Appendix A # 3.8.2.7  |
    | TZID             | IC:tzid             | Appendix A # 3.8.3.1  |
    | TZNAME           | IC:tzname           | Appendix A # 3.8.3.2  |
    | TZOFFSETFROM     | IC:tzoffsetfrom     | Appendix A # 3.8.3.3  |
    | TZOFFSETTO       | IC:tzoffsetto       | Appendix A # 3.8.3.4  |
    | TZURL            | IC:tzurl            | Appendix A # 3.8.3.5  |
    | ATTENDEE         | IC:attendee         | Appendix A # 3.8.4.1  |
    | CONTACT          | IC:contact          | Appendix A # 3.8.4.2  |
    | ORGANIZER        | IC:organizer        | Appendix A # 3.8.4.3  |
    | RECURRENCE-ID    | IC:recurrence-id    | Appendix A # 3.8.4.4  |
    | RELATED-TO       | IC:related-to       | Appendix A # 3.8.4.5  |
    | URL              | IC:url              | Appendix A # 3.8.4.6  |
    | UID              | IC:uid              | Appendix A # 3.8.4.7  |
    | EXDATE           | IC:exdate           | Appendix A # 3.8.5.1  |
    | RDATE            | IC:rdate            | Appendix A # 3.8.5.2  |
    | RRULE            | IC:rrule            | Appendix A # 3.8.5.3  |
    | ACTION           | IC:action           | Appendix A # 3.8.6.1  |
    | REPEAT           | IC:repeat           | Appendix A # 3.8.6.2  |
    | TRIGGER          | IC:trigger          | Appendix A # 3.8.6.3  |
    | CREATED          | IC:created          | Appendix A # 3.8.7.1  |
    | DTSTAMP          | IC:dtstamp          | Appendix A # 3.8.7.2  |
    | LAST-MODIFIED    | IC:last-modified    | Appendix A # 3.8.7.3  |
    | SEQUENCE         | IC:sequence         | Appendix A # 3.8.7.4  |
    | REQUEST-STATUS   | IC:request-status   | Appendix A # 3.8.8.3  |
    +------------------+---------------------+-----------------------+
        
3.4.1. Special Cases for Properties
3.4.1. 财产的特殊情况

This section describes some properties that have special handling when converting to xCal.

本节介绍一些在转换为xCal时具有特殊处理的属性。

3.4.1.1. Multi-Valued Properties
3.4.1.1. 多值属性

The following iCalendar properties can have values that consist of a list of "standard" iCalendar values separated by a specific delimiter. In xCal, these properties are represented by an XML element that contains multiple "value" elements (Section 3.6).

以下iCalendar属性可以包含由特定分隔符分隔的“标准”iCalendar值列表组成的值。在xCal中,这些属性由包含多个“值”元素的XML元素表示(第3.6节)。

          +------------+---------------+-----------------------+
          | Property   | XML element   | XML Definition        |
          +------------+---------------+-----------------------+
          | CATEGORIES | IC:categories | Appendix A # 3.8.1.2  |
          | RESOURCES  | IC:resources  | Appendix A # 3.8.1.10 |
          | FREEBUSY   | IC:freebusy   | Appendix A # 3.8.2.6  |
          | EXDATE     | IC:exdate     | Appendix A # 3.8.5.1  |
          | RDATE      | IC:rdate      | Appendix A # 3.8.5.2  |
          +------------+---------------+-----------------------+
        
          +------------+---------------+-----------------------+
          | Property   | XML element   | XML Definition        |
          +------------+---------------+-----------------------+
          | CATEGORIES | IC:categories | Appendix A # 3.8.1.2  |
          | RESOURCES  | IC:resources  | Appendix A # 3.8.1.10 |
          | FREEBUSY   | IC:freebusy   | Appendix A # 3.8.2.6  |
          | EXDATE     | IC:exdate     | Appendix A # 3.8.5.1  |
          | RDATE      | IC:rdate      | Appendix A # 3.8.5.2  |
          +------------+---------------+-----------------------+
        
3.4.1.2. GEO Property
3.4.1.2. 地质属性

In iCalendar, the "GEO" property value is defined as a semicolon-separated list of two "FLOAT" values; the first representing latitude and the second longitude.

在iCalendar中,“GEO”属性值定义为两个“FLOAT”值的分号分隔列表;第一个表示纬度,第二个表示经度。

In xCal, the value for the IC:geo element is represented by two XML elements. These are an IC:latitude element and an IC:longitude element, each of which contains float values. See Appendix A # 3.8.1.6.

在xCal中,IC:geo元素的值由两个XML元素表示。这是一个IC:latitude元素和一个IC:longitude元素,每个元素都包含浮点值。见附录A#3.8.1.6。

Example:

例子:

   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     ...
     <geo>
       <latitude>37.386013</latitude>
       <longitude>-122.082932</longitude>
     </geo>
     ...
   </icalendar>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     ...
     <geo>
       <latitude>37.386013</latitude>
       <longitude>-122.082932</longitude>
     </geo>
     ...
   </icalendar>
        
3.4.1.3. REQUEST-STATUS Property
3.4.1.3. 请求状态属性

In iCalendar, the "REQUEST-STATUS" property value is defined as a semicolon-separated list of two or three "TEXT" values. The first represents a code, the second a description, and the third any additional data.

在iCalendar中,“REQUEST-STATUS”属性值定义为两个或三个“TEXT”值的分号分隔列表。第一个表示代码,第二个表示说明,第三个表示任何附加数据。

In xCal, the value for the IC:request-status element is represented by two or three XML elements. These are an IC:code element, an IC: description element, and an IC:data element, each of which contains the corresponding "TEXT" values. If there is no additional data in the iCalendar value, the IC:data element (which would be empty) SHOULD NOT be present. See Appendix A # 3.8.8.3.

在xCal中,IC:request status元素的值由两个或三个XML元素表示。它们是IC:code元素、IC:description元素和IC:data元素,每个元素都包含相应的“TEXT”值。如果iCalendar值中没有其他数据,则IC:数据元素(将为空)不应存在。见附录A#3.8.8.3。

Example:

例子:

   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     ...
     <request-status>
       <code>2.0</code>
       <description>Success</description>
     </request-status>
     ...
   </icalendar>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     ...
     <request-status>
       <code>2.0</code>
       <description>Success</description>
     </request-status>
     ...
   </icalendar>
        
3.5. Parameters (RFC 5545, Section 3.2)
3.5. 参数(RFC 5545,第3.2节)

iCalendar property parameters are enclosed in the XML element IC: parameters, which occurs in each property XML element. If there are no iCalendar property parameters, the IC:parameters element (which would be empty) SHOULD NOT be present.

iCalendar属性参数包含在XML元素IC:parameters中,它出现在每个属性XML元素中。如果没有iCalendar属性参数,则IC:parameters元素(将为空)不应存在。

Each individual iCalendar property parameter is represented in xCal by an element of the same name as the iCalendar property parameter, but in lowercase. For example, the "PARTSTAT" property parameter is represented in xCal by the IC:partstat element.

每个独立的iCalendar属性参数在xCal中由一个与iCalendar属性参数同名但小写的元素表示。例如,“PARTSTAT”属性参数在xCal中由IC:PARTSTAT元素表示。

Example:

例子:

   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       ...
       <components>
         ...
         <attendee>
           <parameters>
             <partstat><text>NEEDS-ACTION</text></partstat>
           </parameters>
           ...
         </attendee>
         ...
       </components>
     </vcalendar>
   </icalendar>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       ...
       <components>
         ...
         <attendee>
           <parameters>
             <partstat><text>NEEDS-ACTION</text></partstat>
           </parameters>
           ...
         </attendee>
         ...
       </components>
     </vcalendar>
   </icalendar>
        

Each XML parameter element contains one or more child XML elements representing iCalendar value types.

每个XML参数元素包含一个或多个子XML元素,表示iCalendar值类型。

As an example, the table below shows iCalendar-to-xCal mappings for current iCalendar parameters. Any new iCalendar parameters added in the future will be converted in the same way.

例如,下表显示了当前iCalendar参数的iCalendar到xCal映射。将来添加的任何新iCalendar参数都将以相同的方式进行转换。

       +----------------+-------------------+---------------------+
       | Parameter      | XML element       | XML Definition      |
       +----------------+-------------------+---------------------+
       | ALTREP         | IC:altrep         | Appendix A # 3.2.1  |
       | CN             | IC:cn             | Appendix A # 3.2.2  |
       | CUTYPE         | IC:cutype         | Appendix A # 3.2.3  |
       | DELEGATED-FROM | IC:delegated-from | Appendix A # 3.2.4  |
       | DELEGATED-TO   | IC:delegated-to   | Appendix A # 3.2.5  |
       | DIR            | IC:dir            | Appendix A # 3.2.6  |
       | ENCODING       | IC:encoding       | Appendix A # 3.2.7  |
       | FMTTYPE        | IC:fmttype        | Appendix A # 3.2.8  |
       | FBTYPE         | IC:fbtype         | Appendix A # 3.2.9  |
       | LANGUAGE       | IC:language       | Appendix A # 3.2.10 |
       | MEMBER         | IC:member         | Appendix A # 3.2.11 |
       | PARTSTAT       | IC:partstat       | Appendix A # 3.2.12 |
       | RANGE          | IC:range          | Appendix A # 3.2.13 |
       | RELATED        | IC:related        | Appendix A # 3.2.14 |
       | RELTYPE        | IC:reltype        | Appendix A # 3.2.15 |
       | ROLE           | IC:role           | Appendix A # 3.2.16 |
       | RSVP           | IC:rsvp           | Appendix A # 3.2.17 |
       | SENT-BY        | IC:sent-by        | Appendix A # 3.2.18 |
       | TZID           | IC:tzid           | Appendix A # 3.2.19 |
       +----------------+-------------------+---------------------+
        
       +----------------+-------------------+---------------------+
       | Parameter      | XML element       | XML Definition      |
       +----------------+-------------------+---------------------+
       | ALTREP         | IC:altrep         | Appendix A # 3.2.1  |
       | CN             | IC:cn             | Appendix A # 3.2.2  |
       | CUTYPE         | IC:cutype         | Appendix A # 3.2.3  |
       | DELEGATED-FROM | IC:delegated-from | Appendix A # 3.2.4  |
       | DELEGATED-TO   | IC:delegated-to   | Appendix A # 3.2.5  |
       | DIR            | IC:dir            | Appendix A # 3.2.6  |
       | ENCODING       | IC:encoding       | Appendix A # 3.2.7  |
       | FMTTYPE        | IC:fmttype        | Appendix A # 3.2.8  |
       | FBTYPE         | IC:fbtype         | Appendix A # 3.2.9  |
       | LANGUAGE       | IC:language       | Appendix A # 3.2.10 |
       | MEMBER         | IC:member         | Appendix A # 3.2.11 |
       | PARTSTAT       | IC:partstat       | Appendix A # 3.2.12 |
       | RANGE          | IC:range          | Appendix A # 3.2.13 |
       | RELATED        | IC:related        | Appendix A # 3.2.14 |
       | RELTYPE        | IC:reltype        | Appendix A # 3.2.15 |
       | ROLE           | IC:role           | Appendix A # 3.2.16 |
       | RSVP           | IC:rsvp           | Appendix A # 3.2.17 |
       | SENT-BY        | IC:sent-by        | Appendix A # 3.2.18 |
       | TZID           | IC:tzid           | Appendix A # 3.2.19 |
       +----------------+-------------------+---------------------+
        
3.5.1. VALUE Parameter
3.5.1. 值参数

iCalendar defines a "VALUE" property parameter (Section 3.2.20 of [RFC5545]). This property parameter is not mapped to an xCal XML element. Instead, the value type is handled by having different XML elements for each value, and these appear inside of property elements. Thus, when converting from iCalendar to xCal, any "VALUE" property parameters are skipped. When converting from xCal into iCalendar, the appropriate "VALUE" property parameter MUST be included in the iCalendar property if the value type is not the default value type for that property.

iCalendar定义了一个“值”属性参数(RFC5545的第3.2.20节)。此属性参数未映射到xCal XML元素。相反,通过为每个值使用不同的XML元素来处理值类型,这些元素出现在属性元素中。因此,当从iCalendar转换为xCal时,将跳过任何“值”属性参数。从xCal转换为iCalendar时,如果值类型不是该属性的默认值类型,则iCalendar属性中必须包含相应的“VALUE”属性参数。

3.6. Values (RFC 5545, Section 3.3)
3.6. 数值(RFC 5545,第3.3节)

In the typical case, iCalendar value types are mapped into XML elements with a matching name in all lowercase. In the case of the value for a recurrence rule (see below), iCalendar defines "structured" values, and these are mapped into separate child elements for each value element.

在典型情况下,iCalendar值类型被映射到XML元素中,其名称都是小写的。对于重复规则的值(见下文),iCalendar定义了“结构化”值,这些值被映射到每个值元素的单独子元素中。

3.6.1. Binary (RFC 5545, Section 3.3.1)
3.6.1. 二进制(RFC 5545,第3.3.1节)

Description: iCalendar "BINARY" property values are represented by the IC:binary XML element. The content of the element is base64 encoded data, conforming to Section 4 of [RFC4648], which is the base64 method used in [RFC5545]. Whitespace MAY be inserted into the data at any point to "wrap" the data to reasonable line lengths. When converting back to iCalendar, the whitespace MUST first be removed.

描述:iCalendar“二进制”属性值由IC:BINARY XML元素表示。元素内容为base64编码数据,符合[RFC4648]第4节的要求,这是[RFC5545]中使用的base64方法。可以在数据的任何位置插入空格,以将数据“包装”到合理的行长度。当转换回iCalendar时,必须首先删除空白。

XML Definition: Appendix A # 3.3.1

XML定义:附录A#3.3.1

Example:

例子:

   <binary>SGVsbG8gV29ybGQh</binary>
        
   <binary>SGVsbG8gV29ybGQh</binary>
        
3.6.2. Boolean (RFC 5545, Section 3.3.2)
3.6.2. 布尔值(RFC 5545,第3.3.2节)

Description: iCalendar "BOOLEAN" property values are represented by the IC:boolean XML element. The content of the element is a boolean value.

描述:iCalendar“BOOLEAN”属性值由IC:BOOLEAN XML元素表示。元素的内容是一个布尔值。

XML Definition: Appendix A # 3.3.2

XML定义:附录A#3.3.2

Example:

例子:

   <boolean>true</boolean>
        
   <boolean>true</boolean>
        
3.6.3. Calendar User Address (RFC 5545, Section 3.3.3)
3.6.3. 日历用户地址(RFC 5545,第3.3.3节)

Description: iCalendar "CAL-ADDRESS" property values are represented by the IC:cal-address XML element. The content of the element is a URI.

描述:iCalendar“CAL-ADDRESS”属性值由IC:CAL-ADDRESS XML元素表示。元素的内容是一个URI。

XML Definition: Appendix A # 3.3.3

XML定义:附录A#3.3.3

Example:

例子:

   <cal-address>mailto:cyrus@example.com</cal-address>
        
   <cal-address>mailto:cyrus@example.com</cal-address>
        
3.6.4. Date (RFC 5545, Section 3.3.4)
3.6.4. 日期(RFC 5545,第3.3.4节)

Description: iCalendar "DATE" property values are represented by the IC:date XML element. The content of the element is the same date value specified by [RFC5545], with the exception that the date components are separated by "-" characters, for consistency with [W3C.REC-xmlschema-2-20041028].

描述:iCalendar“DATE”属性值由IC:DATE XML元素表示。元素的内容与[RFC5545]指定的日期值相同,但日期组件以“-”字符分隔,以与[W3C.REC-xmlschema-2-20041028]保持一致。

XML Definition: Appendix A # 3.3.4

XML定义:附录A#3.3.4

Example:

例子:

   <date>2011-05-17</date>
        
   <date>2011-05-17</date>
        
3.6.5. Date-Time (RFC 5545, Section 3.3.5)
3.6.5. 日期时间(RFC 5545,第3.3.5节)

Description: iCalendar "DATE-TIME" property values are represented by the IC:date-time XML element. The content of the element is the same date-time value specified by [RFC5545], with the exception that the date components are separated by "-" characters, and the time components are separated by ":" characters, for consistency with [W3C.REC-xmlschema-2-20041028]. Note that while [W3C.REC-xmlschema-2-20041028] allows for a UTC offset to be included in date/time values, xCal does not use that, and instead follows the iCalendar behavior of using time zone definitions via the "TZID" property parameter.

描述:iCalendar“日期时间”属性值由IC:DATE-TIME XML元素表示。元素的内容与[RFC5545]指定的日期-时间值相同,但日期组件用“-”字符分隔,时间组件用“:”字符分隔,以与[W3C.REC-xmlschema-2-20041028]保持一致。请注意,[W3C.REC-xmlschema-2-20041028]允许在日期/时间值中包含UTC偏移量,但xCal不使用该值,而是遵循iCalendar行为,通过“TZID”属性参数使用时区定义。

XML Definition: Appendix A # 3.3.5

XML定义:附录A#3.3.5

Example:

例子:

   <date-time>2011-05-17T12:00:00</date-time>
        
   <date-time>2011-05-17T12:00:00</date-time>
        
3.6.6. Duration (RFC 5545, Section 3.3.6)
3.6.6. 持续时间(RFC 5545,第3.3.6节)

Description: iCalendar "DURATION" property values are represented by the IC:duration XML element. The content of the element is the same duration value specified by [RFC5545].

描述:iCalendar“DURATION”属性值由IC:DURATION XML元素表示。元素的内容与[RFC5545]指定的持续时间值相同。

XML Definition: Appendix A # 3.3.6

XML定义:附录A#3.3.6

Example:

例子:

   <duration>P1D</duration>
        
   <duration>P1D</duration>
        
3.6.7. Float (RFC 5545, Section 3.3.7)
3.6.7. 浮子(RFC 5545,第3.3.7节)

Description: iCalendar "FLOAT" property values are represented by the IC:float XML element. The content of the element is a text representation of a floating point number.

描述:iCalendar“FLOAT”属性值由IC:FLOAT XML元素表示。元素的内容是浮点数的文本表示形式。

XML Definition: Appendix A # 3.3.7

XML定义:附录A#3.3.7

Example:

例子:

   <float>0.5</float>
        
   <float>0.5</float>
        
3.6.8. Integer (RFC 5545, Section 3.3.8)
3.6.8. 整数(RFC 5545,第3.3.8节)

Description: iCalendar "INTEGER" property values are represented by the IC:integer XML element. The content of the element is a text representation of an integer number.

描述:iCalendar“INTEGER”属性值由IC:INTEGER XML元素表示。元素的内容是整数的文本表示形式。

XML Definition: Appendix A # 3.3.8

XML定义:附录A#3.3.8

Examples:

示例:

   <integer>50</integer>
   <integer>-100</integer>
        
   <integer>50</integer>
   <integer>-100</integer>
        
3.6.9. Period of Time (RFC 5545, Section 3.3.9)
3.6.9. 时间段(RFC 5545,第3.3.9节)

Description: iCalendar "PERIOD" property values are represented by the IC:period XML element. The content of the element is child elements representing the start, end, or duration components of the period.

描述:iCalendar“PERIOD”属性值由IC:PERIOD XML元素表示。元素的内容是表示时段的开始、结束或持续时间组件的子元素。

XML Definition: Appendix A # 3.3.9

XML定义:附录A#3.3.9

Example:

例子:

   <period>
     <start>2011-05-17T12:00:00</start>
     <duration>P1H</duration>
   </period>
        
   <period>
     <start>2011-05-17T12:00:00</start>
     <duration>P1H</duration>
   </period>
        
3.6.10. Recurrence Rule (RFC 5545, Section 3.3.10)
3.6.10. 重复规则(RFC 5545,第3.3.10节)

Description: iCalendar "RECUR" property values are represented by the IC:recur XML element. The content of the element is child elements representing the various components of a recurrence rule.

描述:iCalendar“RECUR”属性值由IC:RECUR XML元素表示。元素的内容是表示重复规则的各个组件的子元素。

XML Definition: Appendix A # 3.3.10

XML定义:附录A#3.3.10

Example:

例子:

   <recur>
     <freq>YEARLY</freq>
     <count>5</count>
     <byday>-1SU</byday>
     <bymonth>10</bymonth>
   </recur>
        
   <recur>
     <freq>YEARLY</freq>
     <count>5</count>
     <byday>-1SU</byday>
     <bymonth>10</bymonth>
   </recur>
        
3.6.11. Text (RFC 5545, Section 3.3.11)
3.6.11. 文本(RFC 5545,第3.3.11节)

Description: iCalendar "TEXT" property values are represented by the IC:text XML element. The content of the element is simple text.

描述:iCalendar“TEXT”属性值由IC:TEXT XML元素表示。元素的内容是简单的文本。

XML Definition: Appendix A # 3.3.11

XML定义:附录A#3.3.11

Example:

例子:

   <text>Hello World!</text>
        
   <text>Hello World!</text>
        
3.6.12. Time (RFC 5545, Section 3.3.12)
3.6.12. 时间(RFC 5545,第3.3.12节)

Description: iCalendar "TIME" property values are represented by the IC:time XML element. The content of the element is the same time value specified by [RFC5545], with the exception that the time components are separated by ":" characters, for consistency with [W3C.REC-xmlschema-2-20041028]. Note that while [W3C.REC-xmlschema-2-20041028] allows for a UTC offset to be included in date/time values, xCal does not use that, and instead follows the iCalendar behavior of using time zone definitions via the "TZID" property parameter.

描述:iCalendar“TIME”属性值由IC:TIME XML元素表示。元素的内容与[RFC5545]指定的时间值相同,但时间组件之间用“:”字符分隔,以与[W3C.REC-xmlschema-2-20041028]保持一致。请注意,[W3C.REC-xmlschema-2-20041028]允许在日期/时间值中包含UTC偏移量,但xCal不使用该值,而是遵循iCalendar行为,通过“TZID”属性参数使用时区定义。

XML Definition: Appendix A # 3.3.12

XML定义:附录A#3.3.12

Example:

例子:

   <time>12:00:00</time>
        
   <time>12:00:00</time>
        
3.6.13. URI (RFC 5545, Section 3.3.13)
3.6.13. URI(RFC 5545,第3.3.13节)

Description: iCalendar "URI" property values are represented by the IC:uri XML element. The content of the element is a URI.

描述:iCalendar“URI”属性值由IC:uriXML元素表示。元素的内容是一个URI。

XML Definition: Appendix A # 3.3.13

XML定义:附录A#3.3.13

Example:

例子:

   <uri>http://calendar.example.com</uri>
        
   <uri>http://calendar.example.com</uri>
        
3.6.14. UTC Offset (RFC 5545, Section 3.3.14)
3.6.14. UTC偏移量(RFC 5545,第3.3.14节)

Description: iCalendar "UTC-OFFSET" property values are represented by the IC:utc-offset XML element. The content of the element is the same UTC offset value specified by [RFC5545], with the exception that the hour, minute, and second components are separated by a ":" character, for consistency with [W3C.REC-xmlschema-2-20041028].

说明:iCalendar“UTC-OFFSET”属性值由IC:UTC OFFSET XML元素表示。元素的内容与[RFC5545]指定的UTC偏移值相同,但小时、分钟和秒分量用“:”字符分隔,以与[W3C.REC-xmlschema-2-20041028]保持一致。

XML Definition: Appendix A # 3.3.14

XML定义:附录A#3.3.14

Example:

例子:

   <utc-offset>-05:00</utc-offset>
        
   <utc-offset>-05:00</utc-offset>
        
3.7. Extensions
3.7. 扩展

iCalendar extension properties and property parameters (those with an "X-" prefix in their name) are handled in the same way as other properties and property parameters: the property or property parameter is represented by an XML element with the same name, but in lowercase, e.g., the "X-FOO" property in iCalendar turns into the IC: x-foo element in xCal. However, see Section 5 for how to deal with default values for unrecognized extension properties or property parameters.

iCalendar扩展属性和属性参数(名称中带有“X-”前缀的属性和参数)的处理方式与其他属性和属性参数相同:属性或属性参数由具有相同名称但小写的XML元素表示,例如“X-FOO”属性转换为xCal中的IC:x-foo元素。但是,有关如何处理无法识别的扩展属性或属性参数的默认值,请参见第5节。

4. Converting from xCal into iCalendar
4. 从xCal转换为iCalendar

When converting component, property, and property parameter values, the names SHOULD be converted to uppercase. Although iCalendar names are case insensitive, common practice is to keep them all uppercase following the actual definitions in [RFC5545].

转换组件、特性和特性参数值时,名称应转换为大写。尽管iCalendar名称不区分大小写,但通常的做法是按照[RFC5545]中的实际定义将它们全部大写。

BACKSLASH character encoding and line folding MUST be applied to the resulting iCalendar data as required by [RFC5545].

根据[RFC5545]的要求,反斜杠字符编码和折线必须应用于生成的iCalendar数据。

Non-binary value types MUST NOT be base64 encoded.

非二进制值类型不得采用base64编码。

4.1. Converting XML Extensions into iCalendar
4.1. 将XML扩展转换为iCalendar

XML extensions are converted back to iCalendar in one of two ways, depending on whether the extensions are in the iCalendar XML namespace or in an external namespace.

XML扩展通过以下两种方式之一转换回iCalendar,具体取决于扩展是在iCalendar XML命名空间中还是在外部命名空间中。

Extensions that are part of the iCalendar XML namespace MUST have element names that begin with "x-", and will be converted back to the equivalent extension property in iCalendar. For example, the "x-foo" element will convert to the "X-FOO" iCalendar property.

作为iCalendar XML命名空间一部分的扩展必须具有以“x-”开头的元素名称,并且将转换回iCalendar中的等效扩展属性。例如,“x-foo”元素将转换为“x-foo”iCalendar属性。

Extensions that are in a namespace other than the iCalendar XML namespace SHOULD be preserved in the iCalendar representation using the "XML" iCalendar property described in Section 4.2. Only those extension elements that are immediate child elements of the IC: properties element are converted, any others are ignored.

iCalendar XML命名空间以外的命名空间中的扩展应使用第4.2节中描述的“XML”iCalendar属性保留在iCalendar表示中。只有那些作为IC:properties元素的直接子元素的扩展元素被转换,任何其他元素都被忽略。

4.2. The XML Property for iCalendar
4.2. iCalendar的XML属性

This section describes an extension property for iCalendar, as covered in Section 8.2.3 of [RFC5545].

本节描述了iCalendar的扩展属性,如[RFC5545]第8.2.3节所述。

Property name: XML

属性名称:XML

Purpose: To embed extended XML-encoded iCalendar data in the iCalendar format.

目的:以iCalendar格式嵌入扩展XML编码的iCalendar数据。

Value type: The default value type is "TEXT". The value type can also be set to "BINARY" to indicate base64 encoded content.

值类型:默认值类型为“文本”。值类型也可以设置为“二进制”,以指示base64编码的内容。

Property parameters: IANA, non-standard, inline encoding, and value data type property parameters can be specified on this property.

属性参数:可以在此属性上指定IANA、非标准、内联编码和值数据类型属性参数。

Conformance: The property can be specified multiple times in any calendar component.

一致性:可以在任何日历组件中多次指定该属性。

Description: The value of this property is a single XML 1.0 [W3C.REC-xml-20081126] element. The "XML" property MUST NOT be used to contain properties that are already defined in iCalendar. Since all elements in the urn:ietf:params:xml:ns:icalendar-2.0 namespace convert to a well-defined iCalendar object, the elements in this property MUST NOT be in the urn:ietf:params:xml:ns:icalendar-2.0 namespace. The XML element that is the value of this property MUST have an XML namespace declaration.

描述:此属性的值是单个XML 1.0[W3C.REC-XML-20081126]元素。“XML”属性不得用于包含已在iCalendar中定义的属性。由于urn:ietf:params:xml:ns:icalendar-2.0命名空间中的所有元素都转换为定义良好的icalendar对象,因此此属性中的元素不得位于urn:ietf:params:xml:ns:icalendar-2.0命名空间中。作为此属性值的XML元素必须具有XML命名空间声明。

The default value type for this property is "TEXT", and normal BACKSLASH character encoding rules for that value MUST be applied. Note that the source XML can contain characters not allowed in "TEXT" property values. If this is the case, then the XML data MUST be base64 encoded. As required by [RFC5545], the "ENCODING" property parameter MUST be present and set to "BASE64", and the "VALUE" property parameter MUST be present and set to "BINARY".

此属性的默认值类型为“TEXT”,必须应用该值的常规反斜杠字符编码规则。请注意,源XML可以包含“TEXT”属性值中不允许的字符。如果是这种情况,那么XML数据必须是base64编码的。根据[RFC5545]的要求,“ENCODING”属性参数必须存在并设置为“BASE64”,而“VALUE”属性参数必须存在并设置为“BINARY”。

The ordering of "XML" properties is not preserved in the conversion between xCal and iCalendar.

xCal和iCalendar之间的转换不会保留“XML”属性的顺序。

Format definition: This property is defined by the following notation:

格式定义:此属性由以下符号定义:

xml = "XML" xmlparam ( ":" text ) / ( ";" "ENCODING" "=" "BASE64" ";" "VALUE" "=" "BINARY" ":" binary ) CRLF

xml=“xml”xmlparam(“:”text)/(“;”编码“=”BASE64“;”值“=”二进制“:”二进制)CRLF

   xmlparam     = *(";" other-param)
        
   xmlparam     = *(";" other-param)
        

Example: The following is an example of a location embedded in KML markup inside the "XML" property.

示例:以下是嵌入在“XML”属性内的KML标记中的位置示例。

   XML:<kml xmlns="http://www.opengis.net/kml/2.2">\n
      <Document>\n
        <name>KML Sample</name>\n
        <open>1</open>\n
        <description>An incomplete example of a KML docum
    ent - used as an example!</description>\n
      </Document>\n
    </kml>
        
   XML:<kml xmlns="http://www.opengis.net/kml/2.2">\n
      <Document>\n
        <name>KML Sample</name>\n
        <open>1</open>\n
        <description>An incomplete example of a KML docum
    ent - used as an example!</description>\n
      </Document>\n
    </kml>
        
5. Handling Unrecognized Properties or Parameters
5. 处理无法识别的属性或参数

In iCalendar, properties have a default value type specified by their definition, e.g., "SUMMARY"'s value type is "TEXT" and "DURATION"'s is "DURATION". When a property uses its default value type, the "VALUE" property parameter does not need to be specified on the property.

在iCalendar中,属性具有由其定义指定的默认值类型,例如,“SUMMARY”的值类型为“TEXT”,而“DURATION”的值类型为“DURATION”。当属性使用其默认值类型时,不需要在属性上指定“value”属性参数。

When new properties are defined or "X-" properties are used, an iCalendar<->xCal converter might not recognize them, and know what the appropriate default value types are, yet they need to be able to preserve the values. A similar issue arises for unrecognized property parameters. As a result, the following rules are applied when dealing with unrecognized properties and property parameters:

定义新属性或使用“X-”属性时,iCalendar<->xCal转换器可能无法识别它们,并且知道适当的默认值类型,但它们需要能够保留这些值。对于无法识别的属性参数,也会出现类似的问题。因此,在处理无法识别的属性和属性参数时,将应用以下规则:

o When converting iCalendar into xCal:

o 将iCalendar转换为xCal时:

* Any property that does not include a "VALUE" property parameter and whose default value type is not known MUST be converted using the value type XML element IC:unknown. The content of that element is the unprocessed value text.

* 任何不包含“VALUE”属性参数且其默认值类型未知的属性都必须使用值类型XML元素IC:unknown进行转换。该元素的内容是未处理的值文本。

* Any unrecognized property parameter MUST be converted using the value type XML element IC:unknown, with its content set to the property parameter value text, treated as if it were a "TEXT" value or list of "TEXT" values.

* 任何无法识别的属性参数都必须使用值类型XML元素IC:unknown进行转换,其内容设置为属性参数值text,将其视为“text”值或“text”值列表。

o When converting xCal into iCalendar:

o 将xCal转换为iCalendar时:

* Any IC:unknown property value XML elements are converted directly into iCalendar values. The containing property MUST NOT have a "VALUE" property parameter.

* 任何IC:unknown属性值XML元素都直接转换为iCalendar值。包含的属性不能有“VALUE”属性参数。

* Any IC:unknown parameter value XML elements are converted as if they were IC:text value type XML elements.

* 任何IC:unknown参数值XML元素都将被转换为IC:text值类型的XML元素。

Example: The following is an example of an unrecognized iCalendar property (that uses a "DATE-TIME" value as its default) and the equivalent xCal representation of that property.

示例:以下是无法识别的iCalendar属性(使用“日期-时间”值作为其默认值)和该属性的等效xCal表示形式的示例。

iCalendar:

伊卡伦达:

X-PROPERTY:20110512T120000Z

X-属性:20110512T120000Z

xCal:

xCal:

   <x-property>
     <unknown>20110512T120000Z</unknown>
   </x-property>
        
   <x-property>
     <unknown>20110512T120000Z</unknown>
   </x-property>
        

Example: The following is an example of an unrecognized iCalendar property parameter (that uses a "DURATION" value as its default) specified on a recognized iCalendar property, and the equivalent xCal representation of that property and property parameter.

示例:以下是在已识别iCalendar属性上指定的未识别iCalendar属性参数(使用“DURATION”值作为其默认值)的示例,以及该属性和属性参数的等效xCal表示形式。

iCalendar:

伊卡伦达:

   DTSTART;X-PARAM=PT30M:20110512T130000Z
        
   DTSTART;X-PARAM=PT30M:20110512T130000Z
        

xCal:

xCal:

   <dtstart>
     <parameters>
       <x-param><unknown>PT30M</unknown></x-param>
     </parameters>
     <date-time>2011-05-12T13:00:00Z</date-time>
   </dtstart>
        
   <dtstart>
     <parameters>
       <x-param><unknown>PT30M</unknown></x-param>
     </parameters>
     <date-time>2011-05-12T13:00:00Z</date-time>
   </dtstart>
        
6. Security Considerations
6. 安全考虑

For security considerations specific to calendar data, see Section 7 of [RFC5545]. Since this specification is a mapping from iCalendar, no new security concerns are introduced related to calendar data.

有关特定于日历数据的安全注意事项,请参阅[RFC5545]的第7节。由于此规范是iCalendar的映射,因此没有引入与日历数据相关的新安全问题。

The use of XML as a format does have security risks. Section 7 of [RFC3470] discusses these risks. See also the security discussion for the application/xml type in [RFC3023].

使用XML作为格式确实存在安全风险。[RFC3470]第7节讨论了这些风险。另请参见[RFC3023]中有关应用程序/xml类型的安全性讨论。

7. IANA Considerations
7. IANA考虑

This document defines a new URN to identify a new XML namespace for iCalendar data. The URN conforms to a registry mechanism described in [RFC3688].

本文档定义了一个新的URN,用于标识iCalendar数据的新XML命名空间。URN符合[RFC3688]中描述的注册表机制。

This document defines a new media type. The registration is in Section 7.2.

本文档定义了一种新的媒体类型。注册见第7.2节。

This document defines a new property for iCalendar. The registration is in Section 7.3.

本文档为iCalendar定义了一个新属性。注册见第7.3节。

7.1. Namespace Registration
7.1. 命名空间注册

Registration request for the iCalendar namespace:

iCalendar命名空间的注册请求:

   URI: urn:ietf:params:xml:ns:icalendar-2.0
        
   URI: urn:ietf:params:xml:ns:icalendar-2.0
        

Registrant Contact: See the "Authors' Addresses" section of this document.

注册人联系人:请参阅本文件的“作者地址”部分。

XML: None. Namespace URIs do not represent an XML specification.

XML:没有。命名空间URI不表示XML规范。

7.2. Media Type
7.2. 媒体类型

This section defines the MIME media type for use with iCalendar in XML data.

本节定义用于XML数据中iCalendar的MIME媒体类型。

Type name: application

类型名称:应用程序

Subtype name: calendar+xml

子类型名称:日历+xml

Required parameters: None

所需参数:无

Optional parameters: method, component, and optinfo as defined for the text/calendar media type in [RFC5545]; charset as defined for application/xml in [RFC3023]; per [RFC3023], use of the charset property parameter with the value "utf-8" is STRONGLY RECOMMENDED.

可选参数:方法、组件和optinfo,如[RFC5545]中为文本/日历媒体类型定义的;[RFC3023]中为应用程序/xml定义的字符集;根据[RFC3023],强烈建议使用值为“utf-8”的字符集属性参数。

Encoding considerations: Same as encoding considerations of application/xml as specified in [RFC3023].

编码注意事项:与[RFC3023]中指定的应用程序/xml的编码注意事项相同。

Security considerations: See Section 6.

安全注意事项:见第6节。

Interoperability considerations: This media type provides an alternative format for iCalendar data based on XML.

互操作性注意事项:这种媒体类型为基于XML的iCalendar数据提供了另一种格式。

Published specification: This specification.

已发布规范:本规范。

Applications that use this media type: Applications that currently make use of the text/calendar media type can use this as an alternative.

使用此媒体类型的应用程序:当前使用文本/日历媒体类型的应用程序可以使用此作为替代。

Additional information:

其他信息:

Magic number(s): None

幻数:无

File extension(s): xcs

文件扩展名:xcs

Macintosh file type code(s): None specified.

Macintosh文件类型代码:未指定。

Person & email address to contact for further information: calsify@ietf.org

联系人和电子邮件地址,以获取更多信息:calsify@ietf.org

Intended usage: COMMON

预期用途:普通

Restrictions on usage: There are no restrictions on where this media type can be used.

使用限制:此媒体类型的使用位置没有限制。

Author: See the "Authors' Addresses" section of this document.

作者:请参阅本文件的“作者地址”部分。

Change controller: IETF

更改控制器:IETF

7.3. iCalendar Property Registrations
7.3. iCalendar财产登记

This document defines the following new iCalendar property to be added to the registry defined in Section 8.2.3 of [RFC5545]:

本文件定义了要添加到[RFC5545]第8.2.3节中定义的注册表中的以下新iCalendar属性:

              +----------+---------+-----------------------+
              | Property | Status  | Reference             |
              +----------+---------+-----------------------+
              | XML      | Current | RFC 6321, Section 4.2 |
              +----------+---------+-----------------------+
        
              +----------+---------+-----------------------+
              | Property | Status  | Reference             |
              +----------+---------+-----------------------+
              | XML      | Current | RFC 6321, Section 4.2 |
              +----------+---------+-----------------------+
        
8. Acknowledgments
8. 致谢

The authors would like to thank the following for their valuable contributions: Toby Considine, Bernard Desruisseaux, Keith Moore, Filip Navara, Simon Perreault, Arnaud Quillaud, Peter Saint-Andre, and Dave Thewlis. This specification originated from the work of the XML technical committee of the Calendaring and Scheduling Consortium.

作者要感谢以下人士的宝贵贡献:托比·康西丁、伯纳德·德鲁伊斯、基思·摩尔、菲利普·纳瓦拉、西蒙·佩雷尔特、阿诺·基劳德、彼得·圣安德烈和戴夫·泰利斯。本规范源于日历和调度联盟的XML技术委员会的工作。

9. References
9. 工具书类
9.1. Normative References
9.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", RFC 3023, January 2001.

[RFC3023]Murata,M.,St.Laurent,S.,和D.Kohn,“XML媒体类型”,RFC 3023,2001年1月。

[RFC3470] Hollenbeck, S., Rose, M., and L. Masinter, "Guidelines for the Use of Extensible Markup Language (XML) within IETF Protocols", BCP 70, RFC 3470, January 2003.

[RFC3470]Hollenbeck,S.,Rose,M.,和L.Masinter,“IETF协议中可扩展标记语言(XML)的使用指南”,BCP 70,RFC 3470,2003年1月。

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004.

[RFC3688]Mealling,M.“IETF XML注册表”,BCP 81,RFC 3688,2004年1月。

[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, October 2006.

[RFC4648]Josefsson,S.,“Base16、Base32和Base64数据编码”,RFC4648,2006年10月。

[RFC5545] Desruisseaux, B., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, September 2009.

[RFC5545]Desruisseaux,B.“互联网日历和调度核心对象规范(iCalendar)”,RFC 55452009年9月。

[W3C.REC-xml-20081126] Sperberg-McQueen, C., Yergeau, F., Bray, T., Paoli, J., and E. Maler, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", World Wide Web Consortium Recommendation REC-xml-20081126, November 2008, <http://www.w3.org/TR/2008/REC-xml-20081126>.

[W3C.REC-xml-20081126]Sperberg McQueen,C.,Yergeau,F.,Bray,T.,Paoli,J.,和E.Maler,“可扩展标记语言(xml)1.0(第五版)”,万维网联盟建议REC-xml-20081126,2008年11月<http://www.w3.org/TR/2008/REC-xml-20081126>.

9.2. Informative References
9.2. 资料性引用

[W3C.REC-xmlschema-2-20041028] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-2-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

[W3C.REC-xmlschema-2-20041028]Malhotra,A.和P.Biron,“XML模式第2部分:数据类型第二版”,万维网联盟建议REC-xmlschema-2-20041028,2004年10月<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

Appendix A. RELAX NG Schema
附录A.RELAXNG模式

Below is a RELAX NG schema for iCalendar in XML. The schema is non-normative and given for reference only.

下面是iCalendar的XML RELAXNG模式。该模式不规范,仅供参考。

This schema uses the compact notation of RELAX NG. The numeric section numbers given in the comments refer to sections in [RFC5545]. The ordering of elements follows the section ordering of [RFC5545].

此模式使用RELAX NG的紧凑表示法。注释中给出的数字章节号参考[RFC5545]中的章节。元素的排序遵循[RFC5545]的章节排序。

The RELAX NG compact notation "?" operator is used to indicate an unordered list of items. However, that operator, as defined, allows "mixing" each element that it operates on at any depth within the other elements, rather than just allowing "mixing" of siblings only. As a result, the schema provided allows certain constructs that are not allowed in iCalendar. Given that there is no sibling-only unordered list operator in RELAX NG, this is the best representation that can be given.

RELAX NG紧凑表示法“?”运算符用于表示无序的项目列表。但是,根据定义,该操作符允许在其他元素的任何深度上“混合”其操作的每个元素,而不仅仅是允许兄弟元素的“混合”。因此,提供的模式允许某些iCalendar中不允许的构造。鉴于RELAXNG中没有仅同级无序列表运算符,这是可以给出的最佳表示形式。

Patterns for date/time, duration, and UTC offset values are given because those differ from the values used in iCalendar. More restrictive schema with patterns and numerical limits could be derived from the example schema here if more comprehensive schema validation is required.

给出了日期/时间、持续时间和UTC偏移值的模式,因为它们与iCalendar中使用的值不同。如果需要更全面的模式验证,则可以从这里的示例模式中导出具有模式和数字限制的更严格的模式。

# RELAX NG Schema for iCalendar in XML

#XML中iCalendar的RELAXNG模式

   default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
        
   default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
        

# 3.2 Property Parameters

#3.2特性参数

# 3.2.1 Alternate Text Representation

#3.2.1替代文本表示法

   altrepparam = element altrep {
       value-uri
   }
        
   altrepparam = element altrep {
       value-uri
   }
        

# 3.2.2 Common Name

#3.2.2通用名称

   cnparam = element cn {
       value-text
   }
        
   cnparam = element cn {
       value-text
   }
        

# 3.2.3 Calendar User Type

#3.2.3日历用户类型

   cutypeparam = element cutype {
       element text {
           "INDIVIDUAL" |
           "GROUP" |
           "RESOURCE" |
           "ROOM" |
           "UNKNOWN"
       }
   }
        
   cutypeparam = element cutype {
       element text {
           "INDIVIDUAL" |
           "GROUP" |
           "RESOURCE" |
           "ROOM" |
           "UNKNOWN"
       }
   }
        

# 3.2.4 Delegators

#3.2.4授权人

   delfromparam = element delegated-from {
       value-cal-address+
   }
        
   delfromparam = element delegated-from {
       value-cal-address+
   }
        

# 3.2.5 Delegatees

#3.2.5被授权人

   deltoparam = element delegated-to {
       value-cal-address+
   }
        
   deltoparam = element delegated-to {
       value-cal-address+
   }
        

# 3.2.6 Directory Entry Reference

#3.2.6目录条目参考

   dirparam = element dir {
       value-uri
   }
        
   dirparam = element dir {
       value-uri
   }
        

# 3.2.7 Inline Encoding

#3.2.7内联编码

   encodingparam = element encoding {
       element text {
           "8BIT" |
           "BASE64"
       }
   }
        
   encodingparam = element encoding {
       element text {
           "8BIT" |
           "BASE64"
       }
   }
        

# 3.2.8 Format Type

#3.2.8格式类型

   fmttypeparam = element fmttype {
       value-text
   }
        
   fmttypeparam = element fmttype {
       value-text
   }
        

# 3.2.9 Free/Busy Time Type

#3.2.9忙/闲时间类型

   fbtypeparam = element fbtype {
       element text {
           "FREE" |
           "BUSY" |
           "BUSY-UNAVAILABLE" |
           "BUSY-TENTATIVE"
       }
   }
        
   fbtypeparam = element fbtype {
       element text {
           "FREE" |
           "BUSY" |
           "BUSY-UNAVAILABLE" |
           "BUSY-TENTATIVE"
       }
   }
        

# 3.2.10 Language

#3.2.10语言

   languageparam = element language {
       value-text
   }
        
   languageparam = element language {
       value-text
   }
        

# 3.2.11 Group or List Membership

#3.2.11团体或名单成员

   memberparam = element member {
       value-cal-address+
   }
        
   memberparam = element member {
       value-cal-address+
   }
        

# 3.2.12 Participation Status

#3.2.12参与情况

   partstatparam = element partstat {
       type-partstat-event |
       type-partstat-todo |
       type-partstat-jour
   }
        
   partstatparam = element partstat {
       type-partstat-event |
       type-partstat-todo |
       type-partstat-jour
   }
        
   type-partstat-event = (
       element text {
           "NEEDS-ACTION" |
           "ACCEPTED" |
           "DECLINED" |
           "TENTATIVE" |
           "DELEGATED"
       }
   )
        
   type-partstat-event = (
       element text {
           "NEEDS-ACTION" |
           "ACCEPTED" |
           "DECLINED" |
           "TENTATIVE" |
           "DELEGATED"
       }
   )
        
   type-partstat-todo = (
       element text {
           "NEEDS-ACTION" |
           "ACCEPTED" |
           "DECLINED" |
           "TENTATIVE" |
           "DELEGATED" |
           "COMPLETED" |
           "IN-PROCESS"
       }
   )
        
   type-partstat-todo = (
       element text {
           "NEEDS-ACTION" |
           "ACCEPTED" |
           "DECLINED" |
           "TENTATIVE" |
           "DELEGATED" |
           "COMPLETED" |
           "IN-PROCESS"
       }
   )
        
   type-partstat-jour = (
       element text {
           "NEEDS-ACTION" |
           "ACCEPTED" |
           "DECLINED"
       }
   )
        
   type-partstat-jour = (
       element text {
           "NEEDS-ACTION" |
           "ACCEPTED" |
           "DECLINED"
       }
   )
        

# 3.2.13 Recurrence Identifier Range

#3.2.13重复标识符范围

   rangeparam = element range {
       element text {
           "THISANDFUTURE"
       }
   }
        
   rangeparam = element range {
       element text {
           "THISANDFUTURE"
       }
   }
        

# 3.2.14 Alarm Trigger Relationship

#3.2.14报警触发关系

   trigrelparam = element related {
       element text {
           "START" |
           "END"
       }
   }
        
   trigrelparam = element related {
       element text {
           "START" |
           "END"
       }
   }
        

# 3.2.15 Relationship Type

#3.2.15关系类型

   reltypeparam = element reltype {
       element text {
           "PARENT" |
           "CHILD" |
           "SIBLING"
       }
   }
        
   reltypeparam = element reltype {
       element text {
           "PARENT" |
           "CHILD" |
           "SIBLING"
       }
   }
        

# 3.2.16 Participation Role

#3.2.16参与角色

   roleparam = element role {
       element text {
           "CHAIR" |
           "REQ-PARTICIPANT" |
           "OPT-PARTICIPANT" |
           "NON-PARTICIPANT"
       }
   }
        
   roleparam = element role {
       element text {
           "CHAIR" |
           "REQ-PARTICIPANT" |
           "OPT-PARTICIPANT" |
           "NON-PARTICIPANT"
       }
   }
        

# 3.2.17 RSVP Expectation

#3.2.17 RSVP期望值

   rsvpparam = element rsvp {
       value-boolean
   }
        
   rsvpparam = element rsvp {
       value-boolean
   }
        

# 3.2.18 Sent By

#3.2.18发送人:

   sentbyparam = element sent-by {
       value-cal-address
   }
        
   sentbyparam = element sent-by {
       value-cal-address
   }
        

# 3.2.19 Time Zone Identifier

#3.2.19时区标识符

   tzidparam = element tzid {
       value-text
   }
        
   tzidparam = element tzid {
       value-text
   }
        

# 3.3 Property Value Data Types

#3.3属性值数据类型

# 3.3.1 BINARY

#3.3.1二进制

   value-binary =  element binary {
       xsd:string
   }
        
   value-binary =  element binary {
       xsd:string
   }
        

# 3.3.2 BOOLEAN

#3.3.2布尔型

   value-boolean = element boolean {
       xsd:boolean
   }
        
   value-boolean = element boolean {
       xsd:boolean
   }
        

# 3.3.3 CAL-ADDRESS

#3.3.3校准地址

   value-cal-address = element cal-address {
       xsd:anyURI
   }
        
   value-cal-address = element cal-address {
       xsd:anyURI
   }
        

# 3.3.4 DATE

#3.3.4日期

   pattern-date = xsd:string {
       pattern = "\d\d\d\d-\d\d-\d\d"
   }
        
   pattern-date = xsd:string {
       pattern = "\d\d\d\d-\d\d-\d\d"
   }
        
   value-date = element date {
       pattern-date
   }
        
   value-date = element date {
       pattern-date
   }
        

# 3.3.5 DATE-TIME

#3.3.5日期和时间

   pattern-date-time = xsd:string {
       pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
   }
        
   pattern-date-time = xsd:string {
       pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
   }
        
   value-date-time = element date-time {
       pattern-date-time
   }
        
   value-date-time = element date-time {
       pattern-date-time
   }
        

# 3.3.6 DURATION

#3.3.6持续时间

   pattern-duration = xsd:string {
       pattern = "(+|-)?P(\d+W)|(\d+D)?"
               ~ "(T(\d+H(\d+M)?(\d+S)?)|"
               ~   "(\d+M(\d+S)?)|"
               ~   "(\d+S))?"
   }
        
   pattern-duration = xsd:string {
       pattern = "(+|-)?P(\d+W)|(\d+D)?"
               ~ "(T(\d+H(\d+M)?(\d+S)?)|"
               ~   "(\d+M(\d+S)?)|"
               ~   "(\d+S))?"
   }
        
   value-duration = element duration {
       pattern-duration
   }
        
   value-duration = element duration {
       pattern-duration
   }
        

# 3.3.7 FLOAT

#3.3.7浮动

   value-float = element float {
       xsd:float
   }
        
   value-float = element float {
       xsd:float
   }
        

# 3.3.8 INTEGER

#3.3.8整数

   value-integer = element integer {
       xsd:integer
   }
        
   value-integer = element integer {
       xsd:integer
   }
        

# 3.3.9 PERIOD

#3.3.9期间

   value-period = element period {
       element start {
           pattern-date-time
       },
       (
           element end {
               pattern-date-time
           } |
           element duration {
               pattern-duration
           }
       )
   }
        
   value-period = element period {
       element start {
           pattern-date-time
       },
       (
           element end {
               pattern-date-time
           } |
           element duration {
               pattern-duration
           }
       )
   }
        

# 3.3.10 RECUR

#3.3.10复发

   value-recur = element recur {
       type-freq,
       (type-until | type-count)?,
       element interval {
           xsd:positiveInteger
       }?,
       type-bysecond*,
       type-byminute*,
       type-byhour*,
       type-byday*,
       type-bymonthday*,
       type-byyearday*,
       type-byweekno*,
       type-bymonth*,
       type-bysetpos*,
       element wkst { type-weekday }?
   }
        
   value-recur = element recur {
       type-freq,
       (type-until | type-count)?,
       element interval {
           xsd:positiveInteger
       }?,
       type-bysecond*,
       type-byminute*,
       type-byhour*,
       type-byday*,
       type-bymonthday*,
       type-byyearday*,
       type-byweekno*,
       type-bymonth*,
       type-bysetpos*,
       element wkst { type-weekday }?
   }
        
   type-freq = element freq {
       "SECONDLY" |
       "MINUTELY" |
       "HOURLY"   |
       "DAILY"    |
       "WEEKLY"   |
       "MONTHLY"  |
       "YEARLY"
   }
        
   type-freq = element freq {
       "SECONDLY" |
       "MINUTELY" |
       "HOURLY"   |
       "DAILY"    |
       "WEEKLY"   |
       "MONTHLY"  |
       "YEARLY"
   }
        
   type-until = element until {
       type-date |
       type-date-time
   }
        
   type-until = element until {
       type-date |
       type-date-time
   }
        
   type-count = element count {
       xsd:positiveInteger
   }
        
   type-count = element count {
       xsd:positiveInteger
   }
        
   type-bysecond = element bysecond {
       xsd:positiveInteger
   }
        
   type-bysecond = element bysecond {
       xsd:positiveInteger
   }
        
   type-byminute = element byminute {
       xsd:positiveInteger
   }
        
   type-byminute = element byminute {
       xsd:positiveInteger
   }
        
   type-byhour = element byhour {
       xsd:positiveInteger
   }
        
   type-byhour = element byhour {
       xsd:positiveInteger
   }
        
   type-weekday = (
       "SU" |
       "MO" |
       "TU" |
       "WE" |
       "TH" |
       "FR" |
       "SA"
   )
        
   type-weekday = (
       "SU" |
       "MO" |
       "TU" |
       "WE" |
       "TH" |
       "FR" |
       "SA"
   )
        
   type-byday = element byday {
       xsd:integer?,
       type-weekday
   }
        
   type-byday = element byday {
       xsd:integer?,
       type-weekday
   }
        
   type-bymonthday = element bymonthday {
       xsd:integer
   }
        
   type-bymonthday = element bymonthday {
       xsd:integer
   }
        
   type-byyearday = element byyearday {
       xsd:integer
   }
        
   type-byyearday = element byyearday {
       xsd:integer
   }
        
   type-byweekno = element byweekno {
       xsd:integer
   }
        
   type-byweekno = element byweekno {
       xsd:integer
   }
        
   type-bymonth = element bymonth {
       xsd:positiveInteger
   }
        
   type-bymonth = element bymonth {
       xsd:positiveInteger
   }
        
   type-bysetpos = element bysetpos {
       xsd:integer
   }
        
   type-bysetpos = element bysetpos {
       xsd:integer
   }
        

# 3.3.11 TEXT

#3.3.11文本

   value-text = element text {
       xsd:string
   }
        
   value-text = element text {
       xsd:string
   }
        

# 3.3.12 TIME

#3.3.12时间

   pattern-time = xsd:string {
       pattern = "\d\d:\d\d:\d\dZ?"
   }
        
   pattern-time = xsd:string {
       pattern = "\d\d:\d\d:\d\dZ?"
   }
        
   value-time = element time {
       pattern-time
   }
        
   value-time = element time {
       pattern-time
   }
        

# 3.3.13 URI

#3.3.13 URI

   value-uri = element uri {
       xsd:anyURI
   }
        
   value-uri = element uri {
       xsd:anyURI
   }
        

# 3.3.14 UTC-OFFSET

#3.3.14 UTC偏移量

   value-utc-offset = element utc-offset {
       xsd:string { pattern = "(+|-)\d\d:\d\d(:\d\d)?" }
   }
        
   value-utc-offset = element utc-offset {
       xsd:string { pattern = "(+|-)\d\d:\d\d(:\d\d)?" }
   }
        

# UNKNOWN

#不为人知

   value-unknown = element unknown {
       xsd:string
   }
        
   value-unknown = element unknown {
       xsd:string
   }
        

# 3.4 iCalendar Stream

#3.4伊卡伦达河

   start = element icalendar {
       vcalendar+
   }
        
   start = element icalendar {
       vcalendar+
   }
        

# 3.6 Calendar Components

#3.6日历组件

   vcalendar = element vcalendar {
       type-calprops,
       type-component
   }
        
   vcalendar = element vcalendar {
       type-calprops,
       type-component
   }
        
   type-calprops = element properties {
       property-prodid &
       property-version &
       property-calscale? &
       property-method?
   }
        
   type-calprops = element properties {
       property-prodid &
       property-version &
       property-calscale? &
       property-method?
   }
        
   type-component = element components {
       (
           component-vevent |
           component-vtodo |
           component-vjournal |
           component-vfreebusy |
           component-vtimezone
       )*
   }
        
   type-component = element components {
       (
           component-vevent |
           component-vtodo |
           component-vjournal |
           component-vfreebusy |
           component-vtimezone
       )*
   }
        

# 3.6.1 Event Component

#3.6.1事件组件

   component-vevent = element vevent {
       type-eventprop,
       element components {
           component-valarm+
       }?
   }
        
   component-vevent = element vevent {
       type-eventprop,
       element components {
           component-valarm+
       }?
   }
        

type-eventprop = element properties { property-dtstamp & property-dtstart & property-uid &

类型eventprop=元素属性{property dtstamp&property dtstart&property uid&

property-class? & property-created? & property-description? & property-geo? & property-last-mod? & property-location? & property-organizer? & property-priority? & property-seq? & property-status-event? &

物业类别&创建属性?&物业说明及地产地理信息系统最后一个模块和物业位置?&物业管理公司&物业优先权?&房地产序列和属性状态事件&

property-summary? & property-transp? & property-url? & property-recurid? &

物业摘要&房地产运输公司属性url?&财产重现&

property-rrule? &

财产腐败&

(property-dtend | property-duration)? &

(财产dtend |财产期限)&

property-attach* & property-attendee* & property-categories* & property-comment* & property-contact* & property-exdate* & property-rstatus* & property-related* & property-resources* & property-rdate* }

属性附加*&属性与会者*&属性类别*&属性评论*&属性联系人*&属性截止日期*&属性状态*&属性相关*&属性资源*&属性日期*}

# 3.6.2 To-do Component

#3.6.2待办事项

   component-vtodo = element vtodo {
       type-todoprop,
       element components {
           component-valarm+
       }?
   }
        
   component-vtodo = element vtodo {
       type-todoprop,
       element components {
           component-valarm+
       }?
   }
        

type-todoprop = element properties { property-dtstamp & property-uid &

类型todoprop=元素属性{property dtstamp&property uid&

property-class? & property-completed? & property-created? & property-description? & property-geo? & property-last-mod? & property-location? & property-organizer? & property-percent? & property-priority? & property-recurid? & property-seq? & property-status-todo? & property-summary? &

物业类别&物业完工?&创建属性?&物业说明及地产地理信息系统最后一个模块和物业位置?&物业管理公司&财产百分比?&物业优先权?&房地产再投资?&房地产序列和物业状态待办事项&财产摘要&

property-url? &

属性url&

property-rrule? &

财产腐败&

( (property-dtstart?, property-dtend? ) | (property-dtstart, property-duration)? ) &

((属性dtstart?,属性dtend?)|(属性dtstart,属性持续时间)?)&

property-attach* & property-attendee* & property-categories* & property-comment* & property-contact* & property-exdate* & property-rstatus* & property-related* & property-resources* & property-rdate* }

属性附加*&属性与会者*&属性类别*&属性评论*&属性联系人*&属性截止日期*&属性状态*&属性相关*&属性资源*&属性日期*}

# 3.6.3 Journal Component

#3.6.3轴颈组件

   component-vjournal = element vjournal {
       type-jourprop
   }
        
   component-vjournal = element vjournal {
       type-jourprop
   }
        

type-jourprop = element properties { property-dtstamp & property-uid &

类型jourprop=元素属性{property dtstamp&property uid&

property-class? & property-created? & property-dtstart? & property-last-mod? & property-organizer? & property-recurid? & property-seq? & property-status-jour? & property-summary? & property-url? &

物业类别&创建属性?&属性dtstart?&最后一个模块和物业管理公司&房地产再投资?&房地产序列和物业状况报告物业摘要&属性url&

property-rrule? &

财产腐败&

property-attach* & property-attendee* & property-categories* & property-comment* &

酒店附加*&酒店与会者*&酒店类别*&酒店评论*&

property-contact* & property-description? & property-exdate* & property-related* & property-rdate* & property-rstatus* }

物业联系人*&物业描述?&属性exdate*&属性相关*&属性rdate*&属性rstatus*}

# 3.6.4 Free/Busy Component

#3.6.4忙/闲组件

   component-vfreebusy = element vfreebusy {
       type-fbprop
   }
        
   component-vfreebusy = element vfreebusy {
       type-fbprop
   }
        

type-fbprop = element properties { property-dtstamp & property-uid &

类型fbprop=元素属性{property dtstamp&property uid&

property-contact? & property-dtstart? & property-dtend? & property-duration? & property-organizer? & property-url? &

物业联络处&属性dtstart?&物业数据终端&物业期限&物业管理公司&属性url&

property-attendee* & property-comment* & property-freebusy* & property-rstatus* }

酒店与会者*&酒店评论*&酒店忙/闲*&酒店状态*}

# 3.6.5 Time Zone Component

#3.6.5时区部分

   component-vtimezone = element vtimezone {
       element properties {
           property-tzid &
        
   component-vtimezone = element vtimezone {
       element properties {
           property-tzid &
        
           property-last-mod? &
           property-tzuurl?
       },
       element components {
           (component-standard | component-daylight) &
           component-standard* &
           component-daylight*
       }
   }
        
           property-last-mod? &
           property-tzuurl?
       },
       element components {
           (component-standard | component-daylight) &
           component-standard* &
           component-daylight*
       }
   }
        
   component-standard = element standard {
       type-tzprop
   }
        
   component-standard = element standard {
       type-tzprop
   }
        
   component-daylight = element daylight {
       type-tzprop
   }
        
   component-daylight = element daylight {
       type-tzprop
   }
        

type-tzprop = element properties { property-dtstart & property-tzoffsetto & property-tzoffsetfrom &

类型tzprop=元素属性{property dtstart&property tzoffsetto&property tzoffsetfrom&

property-rrule? &

财产腐败&

property-comment* & property-rdate* & property-tzname* }

属性注释*&property-rdate*&property-tzname*}

# 3.6.6 Alarm Component

#3.6.6报警组件

   component-valarm = element valarm {
       audioprop | dispprop | emailprop
   }
        
   component-valarm = element valarm {
       audioprop | dispprop | emailprop
   }
        

type-audioprop = element properties { property-action &

类型audioprop=元素属性{属性操作&

property-trigger &

属性触发器&

(property-duration, property-repeat)? &

(属性持续时间、属性重复)&

property-attach? }

属性附加?}

type-dispprop = element properties { property-action & property-description & property-trigger & property-summary &

类型dispprop=元素属性{属性操作和属性描述&属性触发器和属性摘要&

property-attendee+ &

酒店与会者+&

(property-duration, property-repeat)? &

(属性持续时间、属性重复)&

property-attach* }

属性附加*}

type-emailprop = element properties { property-action & property-description & property-trigger &

类型emailprop=元素属性{属性操作、属性描述和属性触发器&

(property-duration, property-repeat)? }

(属性持续时间,属性重复)?}

# 3.7 Calendar Properties

#3.7日历属性

# 3.7.1 Calendar Scale

#3.7.1日历比例尺

property-calscale = element calscale {

属性calscale=元素calscale{

element parameters { empty }?,

元素参数{empty}?,

       element text { "GREGORIAN" }
   }
        
       element text { "GREGORIAN" }
   }
        

# 3.7.2 Method

#3.7.2方法

property-method = element method {

属性方法=元素方法{

element parameters { empty }?,

元素参数{empty}?,

value-text }

值文本}

# 3.7.3 Product Identifier

#3.7.3产品标识符

property-prodid = element prodid {

属性prodid=元素prodid{

element parameters { empty }?,

元素参数{empty}?,

value-text }

值文本}

# 3.7.4 Version

#3.7.4版本

property-version = element version {

属性版本=元素版本{

element parameters { empty }?,

元素参数{empty}?,

       element text { "2.0" }
   }
        
       element text { "2.0" }
   }
        

# 3.8 Component Properties

#3.8部件特性

# 3.8.1 Descriptive Component Properties

#3.8.1描述性部件特性

# 3.8.1.1 Attachment

#3.8.1.1附件

property-attach = element attach {

属性附加=元素附加{

element parameters { fmttypeparam? & encodingparam? }?,

元素参数{fmttypeparam?&encodingparam?}?,

value-uri | value-binary }

值uri |值二进制}

# 3.8.1.2 Categories

#3.8.1.2类别

property-categories = element categories {

属性类别=元素类别{

element parameters { languageparam? & }?,

元素参数{languageparam?&}?,

value-text+ }

值文本+}

# 3.8.1.3 Classification

#3.8.1.3分类

property-class = element class {

属性类=元素类{

element parameters { empty }?,

元素参数{empty}?,

       element text {
           "PUBLIC" |
           "PRIVATE" |
           "CONFIDENTIAL"
       }
   }
        
       element text {
           "PUBLIC" |
           "PRIVATE" |
           "CONFIDENTIAL"
       }
   }
        

# 3.8.1.4 Comment

#3.8.1.4评论

property-comment = element comment {

属性注释=元素注释{

element parameters { altrepparam? & languageparam? }?,

元素参数{altrepparam?&languageparam?}?,

value-text }

值文本}

# 3.8.1.5 Description

#3.8.1.5说明

property-description = element description {

属性描述=元素描述{

element parameters { altrepparam? & languageparam? }?,

元素参数{altrepparam?&languageparam?}?,

value-text }

值文本}

# 3.8.1.6 Geographic Position

#3.8.1.6地理位置

property-geo = element geo {

属性geo=元素geo{

element parameters { empty }?,

元素参数{empty}?,

       element latitude  { xsd:float },
       element longitude { xsd:float }
   }
        
       element latitude  { xsd:float },
       element longitude { xsd:float }
   }
        

# 3.8.1.7 Location

#3.8.1.7位置

property-location = element location {

属性位置=元素位置{

element parameters {

元素参数{

altrepparam? & languageparam? }?,

altrepparam?&languageparam?}?,

value-text }

值文本}

# 3.8.1.8 Percent Complete

#3.8.1.8完成百分比

property-percent = element percent-complete {

属性百分比=元素完成百分比{

element parameters { empty }?,

元素参数{empty}?,

value-integer }

值整数}

# 3.8.1.9 Priority

#3.8.1.9优先权

property-priority = element priority {

属性优先级=元素优先级{

element parameters { empty }?,

元素参数{empty}?,

value-integer }

值整数}

# 3.8.1.10 Resources

#3.8.1.10资源

property-resources = element resources {

属性资源=元素资源{

element parameters { altrepparam? & languageparam? }?,

元素参数{altrepparam?&languageparam?}?,

value-text+ }

值文本+}

# 3.8.1.11 Status

#3.8.1.11状态

property-status-event = element status {

属性状态事件=元素状态{

element parameters { empty }?,

元素参数{empty}?,

       element text {
           "TENTATIVE" |
           "CONFIRMED" |
           "CANCELLED"
       }
   }
        
       element text {
           "TENTATIVE" |
           "CONFIRMED" |
           "CANCELLED"
       }
   }
        

property-status-todo = element status {

属性状态todo=元素状态{

element parameters { empty }?,

元素参数{empty}?,

       element text {
           "NEEDS-ACTION" |
           "COMPLETED" |
           "IN-PROCESS" |
           "CANCELLED"
       }
   }
        
       element text {
           "NEEDS-ACTION" |
           "COMPLETED" |
           "IN-PROCESS" |
           "CANCELLED"
       }
   }
        

property-status-jour = element status {

属性状态jour=元素状态{

element parameters { empty }?,

元素参数{empty}?,

       element text {
           "DRAFT" |
           "FINAL" |
           "CANCELLED"
       }
   }
        
       element text {
           "DRAFT" |
           "FINAL" |
           "CANCELLED"
       }
   }
        

# 3.8.1.12 Summary

#3.8.1.12总结

property-summary = element summary {

属性摘要=元素摘要{

element parameters { altrepparam? & languageparam? }?,

元素参数{altrepparam?&languageparam?}?,

value-text }

值文本}

# 3.8.2 Date and Time Component Properties

#3.8.2日期和时间组件属性

# 3.8.2.1 Date/Time Completed

#3.8.2.1完成日期/时间

property-completed = element completed {

属性已完成=元素已完成{

element parameters { empty }?,

元素参数{empty}?,

value-date-time }

值日期时间}

# 3.8.2.2 Date/Time End

#3.8.2.2日期/时间结束

property-dtend = element dtend {

属性dtend=元素dtend{

element parameters { tzidparam? }?,

元素参数{tzidparam?}?,

value-date-time | value-date }

价值日期时间|价值日期}

# 3.8.2.3 Date/Time Due

#3.8.2.3到期日期/时间

property-due = element due {

属性到期=元素到期{

element parameters { tzidparam? }?,

元素参数{tzidparam?}?,

value-date-time | value-date }

价值日期时间|价值日期}

# 3.8.2.4 Date/Time Start

#3.8.2.4开始日期/时间

property-dtstart = element dtstart {

属性dtstart=元素dtstart{

element parameters { tzidparam? }?,

元素参数{tzidparam?}?,

value-date-time | value-date }

价值日期时间|价值日期}

# 3.8.2.5 Duration

#3.8.2.5持续时间

property-duration = element duration {

属性持续时间=元素持续时间{

element parameters { empty }?,

元素参数{empty}?,

value-duration }

值持续时间}

# 3.8.2.6 Free/Busy Time

#3.8.2.6忙/闲时间

property-freebusy = element freebusy {

属性freebusy=元素freebusy{

element parameters { fbtypeparam? }?,

元素参数{fbtypeparam?}?,

value-period+ }

值周期+}

# 3.8.2.7 Time Transparency

#3.8.2.7时间透明度

property-transp = element transp {

属性传输=元素传输{

element parameters { empty }?,

元素参数{empty}?,

       element text {
           "OPAQUE" |
           "TRANSPARENT"
       }
   }
        
       element text {
           "OPAQUE" |
           "TRANSPARENT"
       }
   }
        

# 3.8.3 Time Zone Component Properties

#3.8.3时区组件属性

# 3.8.3.1 Time Zone Identifier

#3.8.3.1时区标识符

property-tzid = element tzid {

属性tzid=元素tzid{

element parameters { empty }?,

元素参数{empty}?,

value-text }

值文本}

# 3.8.3.2 Time Zone Name

#3.8.3.2时区名称

property-tzname = element tzname {

属性tzname=元素tzname{

element parameters { languageparam? }?,

元素参数{languageparam?}?,

value-text }

值文本}

# 3.8.3.3 Time Zone Offset From

#3.8.3.3与的时区偏移

property-tzoffsetfrom = element tzoffsetfrom {

属性tzoffsetfrom=元素tzoffsetfrom{

element parameters { empty }?,

元素参数{empty}?,

value-utc-offset }

值utc偏移量}

# 3.8.3.4 Time Zone Offset To

#3.8.3.4到的时区偏移

property-tzoffsetto = element tzoffsetto {

属性Tzoffetto=元素Tzoffetto{

element parameters { empty }?,

元素参数{empty}?,

value-utc-offset }

值utc偏移量}

# 3.8.3.5 Time Zone URL

#3.8.3.5时区URL

property-tzurl = element tzurl {

属性tzurl=元素tzurl{

element parameters { empty }?,

元素参数{empty}?,

value-uri }

值uri}

# 3.8.4 Relationship Component Properties

#3.8.4组件属性之间的关系

# 3.8.4.1 Attendee

#3.8.4.1与会者

property-attendee = element attendee {

属性与会者=元素与会者{

element parameters { cutypeparam? & memberparam? & roleparam? & partstatparam? & rsvpparam? & deltoparam? & delfromparam? & sentbyparam? & cnparam? & dirparam? & languageparam? }?,

元素参数{cutypeparam?&memberparam?&roleparam?&partstatparam?&rsvpparam?&deltoparam?&delfromparam?&sentbyparam?&Cparam?&dirparam?&languageparam?}?,

value-cal-address }

值cal地址}

# 3.8.4.2 Contact

#3.8.4.2联系方式

property-contact = element contact {

属性接触=元素接触{

element parameters { altrepparam? & languageparam? }?,

元素参数{altrepparam?&languageparam?}?,

value-text }

值文本}

# 3.8.4.3 Organizer

#3.8.4.3组织者

property-organizer = element organizer {

属性管理器=元素管理器{

element parameters { cnparam? & dirparam? & sentbyparam? & languageparam? }?,

元素参数{cnparam?&dirparam?&sentbyparam?&languageparam?}?,

value-cal-address }

值cal地址}

# 3.8.4.4 Recurrence ID

#3.8.4.4重复ID

property-recurid = element recurrence-id {

property recurid=元素重复id{

element parameters { tzidparam? & rangeparam? }?,

元素参数{tzidparam?&rangeparam?}?,

value-date-time | value-date }

价值日期时间|价值日期}

# 3.8.4.5 Related-To

#3.8.4.5有关

property-related = element related-to {

property related=与属性相关的元素{

element parameters { reltypeparam? }?,

元素参数{reltypeparam?}?,

value-text }

值文本}

# 3.8.4.6 Uniform Resource Locator

#3.8.4.6统一资源定位器

property-url = element url {

属性url=元素url{

element parameters { empty }?,

元素参数{empty}?,

value-uri }

值uri}

# 3.8.4.7 Unique Identifier

#3.8.4.7唯一标识符

property-uid = element uid {

属性uid=元素uid{

element parameters { empty }?,

元素参数{empty}?,

value-text }

值文本}

# 3.8.5 Recurrence Component Properties

#3.8.5部件特性

# 3.8.5.1 Exception Date/Times

#3.8.5.1例外日期/时间

property-exdate = element exdate {

属性exdate=元素exdate{

element parameters { tzidparam? }?,

元素参数{tzidparam?}?,

value-date-time+ | value-date+ }

值日期时间+|值日期+}

# 3.8.5.2 Recurrence Date/Times

#3.8.5.2复发日期/次数

property-rdate = element rdate {

属性rdate=元素rdate{

element parameters { tzidparam? }?,

元素参数{tzidparam?}?,

value-date-time+ | value-date+ | value-period+ }

价值日期时间+|价值日期+|价值期间+}

# 3.8.5.3 Recurrence Rule

#3.8.5.3重现规则

property-rrule = element rrule {

属性rrule=元素rrule{

element parameters { empty }?,

元素参数{empty}?,

value-recur }

值重现}

# 3.8.6 Alarm Component Properties

#3.8.6报警组件特性

# 3.8.6.1 Action

#3.8.6.1行动

property-action = element action {

属性动作=元素动作{

element parameters { empty }?,

元素参数{empty}?,

       element text {
           "AUDIO" |
           "DISPLAY" |
           "EMAIL"
       }
   }
        
       element text {
           "AUDIO" |
           "DISPLAY" |
           "EMAIL"
       }
   }
        

# 3.8.6.2 Repeat Count

#3.8.6.2重复计数

property-repeat = element repeat {

属性重复=元素重复{

element parameters { empty }?,

元素参数{empty}?,

value-integer }

值整数}

# 3.8.6.3 Trigger

#3.8.6.3触发器

property-trigger = element trigger {

属性触发器=元素触发器{

( element parameters { trigrelparam? }?,

(元素参数{trigrelparam?}?,

value-duration ) | ( element parameters { empty }?,

值持续时间)|(元素参数{empty}?,

value-date-time ) }

值(日期时间)}

# 3.8.7 Change Management Component Properties

#3.8.7变更管理组件属性

# 3.8.7.1 Date/Time Created

#3.8.7.1创建日期/时间

property-created = element created {

属性已创建=元素已创建{

element parameters { empty }?,

元素参数{empty}?,

value-date-time }

值日期时间}

# 3.8.7.2 Date/Time Stamp

#3.8.7.2日期/时间戳

property-dtstamp = element dtstamp {

属性dtstamp=元素dtstamp{

element parameters { empty }?,

元素参数{empty}?,

value-date-time }

值日期时间}

# 3.8.7.3 Last Modified

#3.8.7.3最后修改

property-last-mod = element last-modified {

属性last mod=上次修改的元素{

element parameters { empty }?,

元素参数{empty}?,

value-date-time }

值日期时间}

# 3.8.7.4 Sequence Number

#3.8.7.4序列号

property-seq = element sequence {

属性seq=元素序列{

element parameters { empty }?,

元素参数{empty}?,

value-integer }

值整数}

# 3.8.8 Miscellaneous Component Properties

#3.8.8其他部件特性

# 3.8.8.3 Request Status

#3.8.8.3请求状态

property-rstatus = element request-status {

属性rstatus=元素请求状态{

element parameters { languageparam? }?,

元素参数{languageparam?}?,

       element code { xsd:string },
       element description { xsd:string },
       element data { xsd:string }?
   }
        
       element code { xsd:string },
       element description { xsd:string },
       element data { xsd:string }?
   }
        
Appendix B. Examples
附录B.示例

This section contains two examples of iCalendar objects with their xCal representation.

本节包含两个iCalendar对象及其xCal表示的示例。

B.1. Example 1
B.1. 例1
B.1.1. iCalendar Data
B.1.1. iCalendar数据
   BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//Example Inc.//Example Calendar//EN
   VERSION:2.0
   BEGIN:VEVENT
   DTSTAMP:20080205T191224Z
   DTSTART:20081006
   SUMMARY:Planning meeting
   UID:4088E990AD89CB3DBB484909
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   CALSCALE:GREGORIAN
   PRODID:-//Example Inc.//Example Calendar//EN
   VERSION:2.0
   BEGIN:VEVENT
   DTSTAMP:20080205T191224Z
   DTSTART:20081006
   SUMMARY:Planning meeting
   UID:4088E990AD89CB3DBB484909
   END:VEVENT
   END:VCALENDAR
        
B.1.2. XML Data
B.1.2. XML数据
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
    <vcalendar>
     <properties>
      <calscale>
        <text>GREGORIAN</text>
      </calscale>
      <prodid>
       <text>-//Example Inc.//Example Calendar//EN</text>
      </prodid>
      <version>
        <text>2.0</text>
      </version>
     </properties>
     <components>
      <vevent>
       <properties>
        <dtstamp>
          <date-time>2008-02-05T19:12:24Z</date-time>
        </dtstamp>
        <dtstart>
          <date>2008-10-06</date>
        </dtstart>
        <summary>
         <text>Planning meeting</text>
        
   <?xml version="1.0" encoding="utf-8"?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
    <vcalendar>
     <properties>
      <calscale>
        <text>GREGORIAN</text>
      </calscale>
      <prodid>
       <text>-//Example Inc.//Example Calendar//EN</text>
      </prodid>
      <version>
        <text>2.0</text>
      </version>
     </properties>
     <components>
      <vevent>
       <properties>
        <dtstamp>
          <date-time>2008-02-05T19:12:24Z</date-time>
        </dtstamp>
        <dtstart>
          <date>2008-10-06</date>
        </dtstart>
        <summary>
         <text>Planning meeting</text>
        
        </summary>
        <uid>
         <text>4088E990AD89CB3DBB484909</text>
        </uid>
       </properties>
      </vevent>
     </components>
    </vcalendar>
   </icalendar>
        
        </summary>
        <uid>
         <text>4088E990AD89CB3DBB484909</text>
        </uid>
       </properties>
      </vevent>
     </components>
    </vcalendar>
   </icalendar>
        
B.2. Example 2
B.2. 例2
B.2.1. iCalendar Data
B.2.1. iCalendar数据
   VERSION:2.0
   PRODID:-//Example Corp.//Example Client//EN
   BEGIN:VTIMEZONE
   LAST-MODIFIED:20040110T032845Z
   TZID:US/Eastern
   BEGIN:DAYLIGHT
   DTSTART:20000404T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   BEGIN:STANDARD
   DTSTART:20001026T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   END:VTIMEZONE
   BEGIN:VEVENT
   DTSTAMP:20060206T001121Z
   DTSTART;TZID=US/Eastern:20060102T120000
   DURATION:PT1H
   RRULE:FREQ=DAILY;COUNT=5
   RDATE;TZID=US/Eastern;VALUE=PERIOD:20060102T150000/PT2H
   SUMMARY:Event #2
   DESCRIPTION:We are having a meeting all this week at 12 pm fo
    r one hour\, with an additional meeting on the first day 2 h
    ours long.\nPlease bring your own lunch for the 12 pm meetin
    gs.
   UID:00959BC664CA650E933C892C@example.com
   END:VEVENT
   BEGIN:VEVENT
        
   VERSION:2.0
   PRODID:-//Example Corp.//Example Client//EN
   BEGIN:VTIMEZONE
   LAST-MODIFIED:20040110T032845Z
   TZID:US/Eastern
   BEGIN:DAYLIGHT
   DTSTART:20000404T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZNAME:EDT
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0400
   END:DAYLIGHT
   BEGIN:STANDARD
   DTSTART:20001026T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZNAME:EST
   TZOFFSETFROM:-0400
   TZOFFSETTO:-0500
   END:STANDARD
   END:VTIMEZONE
   BEGIN:VEVENT
   DTSTAMP:20060206T001121Z
   DTSTART;TZID=US/Eastern:20060102T120000
   DURATION:PT1H
   RRULE:FREQ=DAILY;COUNT=5
   RDATE;TZID=US/Eastern;VALUE=PERIOD:20060102T150000/PT2H
   SUMMARY:Event #2
   DESCRIPTION:We are having a meeting all this week at 12 pm fo
    r one hour\, with an additional meeting on the first day 2 h
    ours long.\nPlease bring your own lunch for the 12 pm meetin
    gs.
   UID:00959BC664CA650E933C892C@example.com
   END:VEVENT
   BEGIN:VEVENT
        
   DTSTAMP:20060206T001121Z
   DTSTART;TZID=US/Eastern:20060104T140000
   DURATION:PT1H
   RECURRENCE-ID;TZID=US/Eastern:20060104T120000
   SUMMARY:Event #2 bis
   UID:00959BC664CA650E933C892C@example.com
   END:VEVENT
   END:VCALENDAR
        
   DTSTAMP:20060206T001121Z
   DTSTART;TZID=US/Eastern:20060104T140000
   DURATION:PT1H
   RECURRENCE-ID;TZID=US/Eastern:20060104T120000
   SUMMARY:Event #2 bis
   UID:00959BC664CA650E933C892C@example.com
   END:VEVENT
   END:VCALENDAR
        
B.2.2. XML Data
B.2.2. XML数据
   <?xml version="1.0" encoding="utf-8" ?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       <properties>
         <prodid>
           <text>-//Example Inc.//Example Client//EN</text>
         </prodid>
         <version>
           <text>2.0</text>
         </version>
       </properties>
       <components>
         <vtimezone>
           <properties>
             <last-modified>
               <date-time>2004-01-10T03:28:45Z</date-time>
             </last-modified>
             <tzid>US/Eastern</tzid>
           </properties>
           <components>
             <daylight>
               <properties>
                 <dtstart>
                   <date-time>2000-04-04T02:00:00</date-time>
                 </dtstart>
                 <rrule>
                   <recur>
                     <freq>YEARLY</freq>
                     <byday>1SU</byday>
                     <bymonth>4</bymonth>
                   </recur>
                 </rrule>
                 <tzname>
                   <text>EDT</text>
                 </tzname>
                 <tzoffsetfrom>
                   <utc-offset>-05:00</utc-offset>
        
   <?xml version="1.0" encoding="utf-8" ?>
   <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
     <vcalendar>
       <properties>
         <prodid>
           <text>-//Example Inc.//Example Client//EN</text>
         </prodid>
         <version>
           <text>2.0</text>
         </version>
       </properties>
       <components>
         <vtimezone>
           <properties>
             <last-modified>
               <date-time>2004-01-10T03:28:45Z</date-time>
             </last-modified>
             <tzid>US/Eastern</tzid>
           </properties>
           <components>
             <daylight>
               <properties>
                 <dtstart>
                   <date-time>2000-04-04T02:00:00</date-time>
                 </dtstart>
                 <rrule>
                   <recur>
                     <freq>YEARLY</freq>
                     <byday>1SU</byday>
                     <bymonth>4</bymonth>
                   </recur>
                 </rrule>
                 <tzname>
                   <text>EDT</text>
                 </tzname>
                 <tzoffsetfrom>
                   <utc-offset>-05:00</utc-offset>
        
                 </tzoffsetfrom>
                 <tzoffsetto>
                   <utc-offset>-04:00</utc-offset>
                 </tzoffsetto>
               </properties>
             </daylight>
             <standard>
               <properties>
                 <dtstart>
                   <date-time>2000-10-26T02:00:00</date-time>
                 </dtstart>
                 <rrule>
                   <recur>
                     <freq>YEARLY</freq>
                     <byday>-1SU</byday>
                     <bymonth>10</bymonth>
                   </recur>
                 </rrule>
                 <tzname>
                   <text>EST</text>
                 </tzname>
                 <tzoffsetfrom>
                   <utc-offset>-04:00</utc-offset>
                 </tzoffsetfrom>
                 <tzoffsetto>
                   <utc-offset>-05:00</utc-offset>
                 </tzoffsetto>
               </properties>
             </standard>
           </components>
         </vtimezone>
         <vevent>
           <properties>
             <dtstamp>
               <date-time>2006-02-06T00:11:21Z</date-time>
             </dtstamp>
             <dtstart>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <date-time>2006-01-02T12:00:00</date-time>
             </dtstart>
             <duration>
               <duration>PT1H</duration>
             </duration>
             <rrule>
               <recur>
                 <freq>DAILY</freq>
        
                 </tzoffsetfrom>
                 <tzoffsetto>
                   <utc-offset>-04:00</utc-offset>
                 </tzoffsetto>
               </properties>
             </daylight>
             <standard>
               <properties>
                 <dtstart>
                   <date-time>2000-10-26T02:00:00</date-time>
                 </dtstart>
                 <rrule>
                   <recur>
                     <freq>YEARLY</freq>
                     <byday>-1SU</byday>
                     <bymonth>10</bymonth>
                   </recur>
                 </rrule>
                 <tzname>
                   <text>EST</text>
                 </tzname>
                 <tzoffsetfrom>
                   <utc-offset>-04:00</utc-offset>
                 </tzoffsetfrom>
                 <tzoffsetto>
                   <utc-offset>-05:00</utc-offset>
                 </tzoffsetto>
               </properties>
             </standard>
           </components>
         </vtimezone>
         <vevent>
           <properties>
             <dtstamp>
               <date-time>2006-02-06T00:11:21Z</date-time>
             </dtstamp>
             <dtstart>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <date-time>2006-01-02T12:00:00</date-time>
             </dtstart>
             <duration>
               <duration>PT1H</duration>
             </duration>
             <rrule>
               <recur>
                 <freq>DAILY</freq>
        
                 <count>5</count>
               </recur>
             </rrule>
             <rdate>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <period>
                 <start>2006-01-02T15:00:00</start>
                 <duration>PT2H</duration>
               </period>
             </rdate>
             <summary>
               <text>Event #2</text>
             </summary>
             <description>
               <text>We are having a meeting all this week at 12
   pm for one hour, with an additional meeting on the first day
   2 hours long.&#x0a;Please bring your own lunch for the 12 pm
   meetings.</text>
             </description>
             <uid>
               <text>00959BC664CA650E933C892C@example.com</text>
             </uid>
           </properties>
         </vevent>
         <vevent>
           <properties>
             <dtstamp>
               <date-time>2006-02-06T00:11:21Z</date-time>
             </dtstamp>
             <dtstart>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <date-time>2006-01-04T14:00:00</date-time>
             </dtstart>
             <duration>
               <duration>PT1H</duration>
             </duration>
             <recurrence-id>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <date-time>2006-01-04T12:00:00</date-time>
             </recurrence-id>
             <summary>
               <text>Event #2 bis</text>
        
                 <count>5</count>
               </recur>
             </rrule>
             <rdate>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <period>
                 <start>2006-01-02T15:00:00</start>
                 <duration>PT2H</duration>
               </period>
             </rdate>
             <summary>
               <text>Event #2</text>
             </summary>
             <description>
               <text>We are having a meeting all this week at 12
   pm for one hour, with an additional meeting on the first day
   2 hours long.&#x0a;Please bring your own lunch for the 12 pm
   meetings.</text>
             </description>
             <uid>
               <text>00959BC664CA650E933C892C@example.com</text>
             </uid>
           </properties>
         </vevent>
         <vevent>
           <properties>
             <dtstamp>
               <date-time>2006-02-06T00:11:21Z</date-time>
             </dtstamp>
             <dtstart>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <date-time>2006-01-04T14:00:00</date-time>
             </dtstart>
             <duration>
               <duration>PT1H</duration>
             </duration>
             <recurrence-id>
               <parameters>
                 <tzid><text>US/Eastern</text></tzid>
               </parameters>
               <date-time>2006-01-04T12:00:00</date-time>
             </recurrence-id>
             <summary>
               <text>Event #2 bis</text>
        
             </summary>
             <uid>
               <text>00959BC664CA650E933C892C@example.com</text>
             </uid>
           </properties>
         </vevent>
       </components>
     </vcalendar>
   </icalendar>
        
             </summary>
             <uid>
               <text>00959BC664CA650E933C892C@example.com</text>
             </uid>
           </properties>
         </vevent>
       </components>
     </vcalendar>
   </icalendar>
        

Authors' Addresses

作者地址

Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 USA

Cyrus Daboo苹果公司,美国加利福尼亚州库珀蒂诺市无限环路1号,邮编95014

   EMail: cyrus@daboo.name
   URI:   http://www.apple.com/
        
   EMail: cyrus@daboo.name
   URI:   http://www.apple.com/
        

Mike Douglass Rensselaer Polytechnic Institute 110 8th Street Troy, NY 12180 USA

迈克·道格拉斯·伦斯勒理工学院,美国纽约州特洛伊市第八街110号,邮编:12180

   EMail: douglm@rpi.edu
   URI:   http://www.rpi.edu/
        
   EMail: douglm@rpi.edu
   URI:   http://www.rpi.edu/
        

Steven Lees Microsoft Corporation One Microsoft Way Redmond, WA 98052 USA

Steven Lees微软公司美国华盛顿州雷德蒙微软大道一号,邮编:98052

   EMail: steven.lees@microsoft.com
   URI:   http://www.microsoft.com/
        
   EMail: steven.lees@microsoft.com
   URI:   http://www.microsoft.com/