hcalendar-ru

From Microformats Wiki
Jump to navigation Jump to search

hCalendar

hCalendar является простым, открытым, распределённым форматом для разметки календарных и иного рода событий. Данный микроформат основан на стандарте iCalendar (RFC 2445). hCalendar можно внедрить в HTML, XHTML и XML-подобные языки разметки. hCalendar — один из микроформатов.

Хотите уже сейчас разметить события на своих страницах с помощью hCalendar? Попробуйте использовать генератор hCalendar. Помимо автоматического создания микроформата, вы можете самостоятельно его разметить, используя пошаговую инструкцию.

Авторство и правовые вопросы

Ниже расположена информация об авторах данного микроформата и правах, по которым он доступен.

Авторы

Редактор
Tantek Çelik (Technorati, Inc)
Авторы
Tantek Çelik (Technorati, Inc)
Brian Suda

Права

Автор указал, что данная работа является работой под лицензией Public Domain. Все редакторы данной страницы соглашаются с тем, что их правки также будут распространяться под Public Domain. Редакторы могут выразить своё согласие, вставив шаблон на свою страницу (инструкции). В противном случае все правки могут быть отменены или удалены.

Патенты

Данная спецификация — субъект политики патентования. См. подробнее:


Введение

Стандарт iCalendar (RFC 2445) уже довольно долгое время используется в сети и в прикладных приложениях (например, iCal в Mac OS X).

В дополнение к этому, блоггеры очень часто обсуждают различные события в своих блогах: грядущие события или описания старых. С добавлением небольших изменений, блоггеры смогут обсуждать события в своём блоге таким образом, что различные поисковые роботы и другие аггрегаторы смогут автоматически их получать, конвертировать в iCalendar, а затем использовать в любых прикладных приложениях или сервисах.

Данная спецификация включает в себя описание формата hCalendar в качестве проекции стандарта iCalendar на семантический (X)HTML. Таким образом, авторы блогов могут включать данный формат напрямую в свои страницы, а не ссылаться на определённый внешний файл.


Особенности реализации в XHTML

Стоит заметить, что поддержка <abbr> в Internet Explorer далека от совершенства и для полной работоспособности данного элемента могут понадобиться другие средства.

См. подробнее особенности семантики.

Формат

Детальное описание

Стандарт iCalendar (RFC 2445) является основой для микроформата hCalendar.

Одной из целью hCalendar является использование названий свойств iCalendar в нижнем регистре для имён классов и создания иерархии из XHTML-элементов, похожей на иерархию элементов iCalendar.

Имя корневого класса

Корневым классом для hCalendar является vcalendar, отсюда следует, что элемент с таким классом и будет называться hCalendar.

Корневым классом для событий является vevent. Элемент с таким классом называется событием hCalendar (hCalendar event).

Для облегчения внедрения формата и его последующей автоматической обработки, оба класса, vevent и vcalendar, считаются корневыми. Если документ содержит элементы с именем класса vevent, но не содержит элементов с классом vcalendar, значит весь документ принимает на себя контекст vcalendar.

Свойства и подсвойства

Свойства hCalendar представляют собой вложенные внутри hCalendar (элемента с классом vcalendar или vevent) элементы. Элементы с указанными именами классов содержат в себе значения свойств hCalendar. У некоторых свойств есть подсвойства, которые обладают таким же свойством вложенности элементов.

Список свойств

Обязательные:


Необязательные:

  • location
  • url
  • dtend (дата по ISO-стандарту), duration (период по ISO-стандарту)
  • rdate, rrule
  • category, description
  • uid
  • geo (latitude, longitude)

Данный список является незавершённым, но он отображает те свойства, которые используются при разметке hCalendar чаще остальных.

Семантические эквиваленты

Для некоторых свойств существуют более семантичные эквиваленты, поэтому они распознаются особым образом:

  • URL в iCalendar превращается в <a class="url" href="...">...</a> внутри элемента class="vevent" в hCalendar.
  • ATTENDEE, CONTACT и ORGANIZER в iCalendar могут быть представлены с помощью микроформата hCard в hCalendar .
  • Названный LOCATION (с адресом и/или географическими координатами) в iCalendar может быть представлен вложенным в hCalendar hCard. Подобно ему, адрес в LOCATION может быть представлен, используя микроформат adr, а географические данные — geo.
  • UID в iCalendar просто становится URL, где обозначено событие hCalendar.

Однозначные и многозначные свойства

Для свойств, которые встречаются (должны встречаться) только один раз (подобно N и FN из vCard), первый вложенный элемент с таким классом считается эффективным, остальные должны игнорироваться.

Для свойств, которые могут встречаться неоднократно (как TEL из vCard), каждый элемент с таким классом должен создавать новый экземпляр этого свойства. Многозначные свойства с подтипами (как TEL с WORK, HOME, CELL из vCard) могут быть оптимизированы таким образом, чтобы разделять один общий элемент для самого свойства, тогда подтипы становятся потомком элемента, содержащего свойство.


Удобочитаемость со стороны человека и машины

Если для отображения свойства используется элемент <abbr>, тогда применённый к нему атрибут title является значением такого элемента, а не содержимое этого элемента, который, заместо этого, предоставляет удобочитаемый вариант свойства. Данная спецификация рекомендует использовать элемент <abbr></code для отображения таких свойств, как:

  • DTSTART
  • DTEND
  • DURATION
  • RDATE
  • RRULE

Примеры

iCalendar и hCalendar

Пример описания события в iCalendar:


BEGIN:VCALENDAR
PRODID:-//XYZproduct//EN
VERSION:2.0
BEGIN:VEVENT
URL:http://www.web2con.com/
DTSTART:20071005
DTEND:20071020
SUMMARY:Web 2.0 Conference
LOCATION:Argent Hotel\, San Francisco\, CA
END:VEVENT
END:VCALENDAR

Эквивалентная вышеприведённому примеру разметка hCalendar

<div class="vevent">
 <a class="url" href="http://www.web2con.com/">http://www.web2con.com/</a>
  <span class="summary">Web 2.0 Conference</span>: 
  <abbr class="dtstart" title="2007-10-05">October 5</abbr>-
  <abbr class="dtend" title="2007-10-20">19</abbr>,
 at the <span class="location">Argent Hotel, San Francisco, CA</span>
 </div>

Вышеотмеченная разметка hCalendar будет отображена похожим образом:

http://www.web2con.com/  Web 2.0 Conference: October 5- 19, at the Argent Hotel, San Francisco, CA

Заметьте, что парсеры уже сейчас могут найти этот микроформат на этой странице.

hCalendar с размытым событием

Следующий пример отмечает время встречи, которая начинается в 8:30 AM EST, 12 марта 1998 года и заканчивается в 9:30 AM EST, 12 марта 1998 года.

     BEGIN:VCALENDAR
     BEGIN:VEVENT
     UID:guid-1.host1.com
     DTSTAMP:19980309T231000Z
     DESCRIPTION:Project XYZ Review Meeting
     SUMMARY:XYZ Project Review
     DTSTART:19980312T133000Z
     DTEND:19980312T143000Z
     LOCATION:1CP Conference Room 4350
     END:VEVENT
     END:VCALENDAR

Эквивалент вышеприведённому примеру:

<div class="vevent">
<h3 class="summary">XYZ Project Review</h3>
<p class="description">Project XYZ Review Meeting</p>
<p>To be held on <abbr class="dtstart" title="1998-03-12T08:30:00-05:00">12 March 1998 from 8:30am EST</abbr> 
until <abbr class="dtend" title="1998-03-12T09:30:00-05:00">9:30am EST</abbr></p>
<p>Location: <span class="location">1CP Conference Room 4350</span></p>
<small>Booked by: <span class="uid">guid-1.host1.com</span> on 
<abbr class="dtstamp" title="19980309T231000Z">9 Mar 1998 6:00pm</abbr></small>
</div>

Его возможное отображение:

XYZ Project Review

Project XYZ Review Meeting

To be held on 12 March 1998 from 8:30am EST until 9:30am EST

Location: 1CP Conference Room 4350

Booked by: guid-1.host1.com on 9 Mar 1998 6:00pm

Примечания к примеру

  1. Информация о продукте необязательна, так как hCalendar — формат для обмена. Когда hCalendar трансформируется обратно в iCalendar, сам транскодер может добавить его собственный ID (product ID).
  2. Окружение hCalendar элементом <span class="vcalendar"> является необязательным, поэтому данный элемент в примере опущен. Если элемент vcalendar опускается, то vevent начинает принадлежать ко всему документу в целом, который в данном случае игрет роль vcalendar-контейнера. Авторы разметки могут напрямую указывать элементы с vcalendar, если у них, к примеру, на странице содержится несколько календарей, событийных веток.
  3. Информация о версии в hCalendar необязательна, так как её можно получить через атрибут profile элемента head.
  4. Даты по стандарту ISO 8601 (требуемые стандартом iCalendar) не являются слишком дружелюбными человеческому глазу. В добавление к этому, год часто распознаётся читателями из контекста. Именно поэтому спецификация рекомендует использовать элемент <abbr>, с помощью которого можно вынести неудобочитаемые данные в атрибут title, а приемлемые для осознавания сведения поместить в сам элемент.
    1. Для улучшения удобочитаемости следует использовать указанный в RFC 3339 формат данных: YYYY-MM-DDThh:mm:ss
  5. Разница между ISO 8601 датой DTEND (2005-10-08) и удобочитаемой датой (7) не является ошибкой. DTEND — уникальное значение. Это значит, что события кончается прямо перед DTEND. Для событий, начинающихся в один день и заканчивающихся в другой, дата в DTEND должна быть указана на день позже актуальной.
  6. Местоположение в данном примере непосредственно содержит в себе данные, которые можно было бы разметить с помощью hCard.

Другие примеры

См. другие примеры hCalendar.

Примеры в сети

См. отдельную страницу с примерами в сети.

Кнопки


Реализации

См. реализации.

Ссылки

Нормативные

Информативные

Связанные спецификации

Связанные работы

Дополнительный материал

Связанные страницы