Can you summarize the following document?
        
  iCalendar是由網際網路工程任務組的日曆與計劃工作組設計(OpenText公司的Anik Ganguly主導),並由蓮花公司的Frank Dawson和微軟的Derik Stenerson發表。iCalendar本身是基於因特網郵件協會(IMC)的vCalendar開發設計而來的。它通常是以檔名字尾為.ics或.ifb的文字檔案儲存的。現有標準是於2009年九月釋出的RFC 5545,上一個標準是RFC 2445。  以.ics為字尾名的檔案(在Apple Mac系統中使用"iCal"型別程式碼),表示該檔案包含了日曆和計劃資訊。而以.ifb為字尾名的檔案(在Apple Mac系統中使用"iFBf"型別程式碼),表示該檔案包含 了空閒和忙碌時間資訊。  通常iCalendar使用UTF-8字元編碼;但也可以使用MIME中的charset引數來指其它的字元編碼(如果它的傳送協議支援MIME的話)。  在iCalendar檔案中,每一行必須以CR+LF(十六進位制程式碼為0D0A)為結尾。每一行不得超過75位元組/八位元組。如果一行資料長於這個限制,則必須換行;後面一行使用空格符(十六進位制程式碼為20)或者製表符(十六進位制程式碼為09)作開始,以表示本行內容是上面一行內容的繼續。內容資料中的換行符,可以反斜槓符'/'後跟數字(UTF-8中為5C 6E或5C 4E)來表示。  iCalendar的MIME型別被定義為"text/calendar"。

  iCalendar格式只是被設計用來傳送日曆和計劃表資料,如事件;而故意沒有定義操作這些資料的行為。因為,在編寫程式時需要協商如何操作它們。  iCalendar本意是提供一種公共格式來定義開放的因特網可交換的日曆和計劃表資料。當這些特性被廣泛支援應用後,很多效能問題逐漸顯現出來了。比如,大多數應用都不支援旅行(VJOURNAL)。"在標準中,迴圈重複的會議有一些含糊不清,這導致在現有不同的應用之間仍然無法真正地互動。"  iCalendar中的日曆無法相容非格里高利曆,比如以色列的希伯來曆和沙烏地阿拉伯的伊斯歷都是陰曆。  “日曆訪問協議”備忘錄(RFC 4324)首次嘗試建立一個統一的建立實時日曆系統。可能是因為過於複雜,這個協議最終被放棄了。  無論如何,像GroupDav和CalDAV這些基於iCalendar的協議已經越來越廣泛地應用在客戶端和服務端軟體包中了。  網際網路工程任務組的日曆與計劃工作組 已經提交了關於iCalendar標準的附加修改提案。但這個工作組於2011年一月份被解散了。他們大部分工作重心轉移到了前一個標準的條款解釋。而後續的創新工作由日曆和計劃協會(簡稱為Calconnect)來完成。

  

  iCalendar中的頂級元素是日曆和計劃核心物件,一組日曆和計劃資訊。通常情況下,這些資訊應該只包含單一的iCalendar物件。但可以宣告一個組包含多個iCalendar物件。  第一行必須是"BEGIN:VCALENDER",最後一行必須是"END:VCALENDER";兩行之間資料稱之為"icalbody"。  icalbody由一系列日曆屬性和一個以上的日曆元件組成。日曆屬性被應用於整個日曆。日曆元件則是由若干日曆屬性描述成的一個日曆語義。比如,日曆元件可以指定一個事件、一個待辦事項列表、一個旅行事項、時區資訊、繁忙/空閒時間資訊,或者一個警報。在許多協議實現(比如Google Calendar)中不允許出現空行。  下在是一個簡單的iCalendar物件示例,它描述了法國國慶日,即從1997年七月14日 17:00到1997年七月15日 03:59:59的巴士底日。

  VEVENT描述一個事件,在日曆上一系列計劃好的時間點。通常,當使用者接受一個日曆事件,這將導致在那個時間裡,使用者被認為是忙碌的。VEVENT可以包含一個VALARM物件來允許一個警報。事件應該有一個DTSTART來描述事件的開始時間,和一個DTEND來描述事件的結束時間。如果事件是迴圈的,則DTSTART應該設定第一個事件的開始時間。  VEVENT同樣可以應用在沒有特定時間的日曆事件上,比如週年紀念日、每日提醒。  如果你需要傳送取消事件的請求。那麼在請求中事件元件中,UID屬性應該與原事件一致並且,下面這些屬性應該設定成cancel。  為了傳送事件的更新請求,除了設定UID和其它更新屬性值外。還需要設定新序列值  比如,第一個更新版本  在Microsoft Outlook中,SUMMARY屬性應當與"Appointment"中的"Subject"項一致,DESCRIPTION 屬性緊跟著SUBJECT屬性。另外,Outlook 2003要求指定UID和DTSTAMP屬性。

  VTODO描述一條待辦事項。  下面的例子描述了一個應於1998年四月15日的待辦事項。屆時一個響鈴將會響起。在待辦事項完成前,將會一小時提醒一次,共提醒四次。SEQUENCE屬性顯示這條提醒在建立之後,還被修改了兩次。

  VJOURNAL是一個旅行事項。它們將一段描述文字關聯一個詳細的日曆日期上,這可以被使用者記錄活動和成長日誌,或者描述待辦事項的進展。VJOURNAL日曆元件不會影響日曆上的時間狀況,所以不會對空閒和繁忙狀態有任何影響。在實踐上,有很少的程式支援VJOURNAL項,不過也有存在一些實現。比如:Plum Canary's Chirp軟體將VJOURNAL和VTODO一起使用。KDE中的KOrganizer也支援VJOURNAL。  下面就是旅行事項的例子  注意: 這個例子中來自於RFC 2445。在這裡將原文中的CATEGORY修正為CATEGORIES,這是原文中的一個錯誤。

  VFREEBUSY被用在 空閒/繁忙時間 設定請求,這種請求的迴應,以及繁忙時間的釋出中。 下面就是一個系統時間釋出的例子。

  其它元件型別還有VTIMEZONE(時區)和VALARAM(警報)。還有一些元件允許包含其它元件(VALARAM通常被包含於其它元件)。

  當計劃事件更改,UID欄位將釋出更新。首先事件建立時會生成一個全域性唯一識別符號作為UID。之後當有一個事件跟隨這個UID釋出,則認為這是早先事件的修改版本,並替換掉它。

  iCalendar支援私有擴充套件,即在屬性名前冠以"X-"字首。  比如:
iCalendar是“日曆資料交換”的標準(RFC 5545)。 此標準有時指的是“iCal”,即蘋果公司的出品的一款同名日曆軟體(見iCal),這個軟體也是此標準的一種實現方式。