hcard-ru: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
No edit summary
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{working-ru|original=hcard}}
{{working-ru|original=hcard}}
<h1>hCard</h1>
<h1>hCard</h1>
{{TOC-right}}
hCard — это простой, открытый микроформат для описания людей, компаний, организаций и мест, используя всю мощь vCard ([[rfc-2426|RFC 2426 (англ.)]]). Имена классов hCard полностью отображают имена соответствующих полей vCard на [[semantic-xhtml-ru|семантический (X)HTML]]. hCard — это один из открытых [[microformats-ru|микроформатов]], который можно внедрить в HTML, XHTML, ATOM, RSS и XML.
hCard — это простой, открытый микроформат для описания людей, компаний, организаций и мест, используя всю мощь vCard ([[rfc-2426|RFC 2426 (англ.)]]). Имена классов hCard полностью отображают имена соответствующих полей vCard на [[semantic-xhtml-ru|семантический (X)HTML]]. hCard — это один из открытых [[microformats-ru|микроформатов]], который можно внедрить в HTML, XHTML, ATOM, RSS и XML.


Хотите разметить собственный hCard? Попробуйте начать с [http://microformats.org/code/hcard/creator генератора hCard] или создайте разметку данного микроформата самостоятельно, следуя [[hcard-authoring-ru|подсказкам]] по внедрению на существующие страницы.
Хотите разметить собственный hCard? Попробуйте начать с [http://microformats.org/code/hcard/creator генератора hCard] или создайте разметку данного микроформата самостоятельно, следуя [[hcard-authoring-ru|подсказкам]] по внедрению на существующие страницы.


== Спецификация ==
{{authoring-ru|date=|authors=
 
<div class="vcard">
<div class="vcard">
; <span class="role">Редактор</span>  
; <span class="role">Редактор</span>  
Line 14: Line 12:
; Авторы: [http://tantek.com/ Tantek Çelik] (членство в организациях указано выше)
; Авторы: [http://tantek.com/ Tantek Çelik] (членство в организациях указано выше)
: <span class="vcard"><span class="fn">[[User:Brian|Brian Suda]]</span> (<span class="url">http://suda.co.uk/</span>)</span>
: <span class="vcard"><span class="fn">[[User:Brian|Brian Suda]]</span> (<span class="url">http://suda.co.uk/</span>)</span>
|rights=
; Официальные подтверждения: См. [[hcard#Официальные подтверждения|официальные подтверждения]].
; Защита прав
: См. [[hcard#Авторские права|авторские права]] и заявки на [[hcard#Патенты|патенты]].}}
<!-- TOC START -->
{{TOC-right}}
<!-- TOC END -->
== Введение ==
Стандарт vCard ([[rfc-2426|RFC 2426 (англ.)]]) был широко внедрен для обеспечения взаимодействия между различными приложениями (например, приложение «Address Book» компании Apple, встроенное в Mac OS X).Помимо этого, многие блоггеры идентифицируют себя по имени и обсуждают своих друзей и семью на страницах блогов. С помощью небольшой структуризации, блоггеры могут обсуждать (описывать) людей в своих блогах таким образом, что поисковые роботы и другие программы-обработчики смогут запросить эту информацию, автоматически конвертируя её в vCard и используя её впоследствии в любом сервисе или приложении, работающем с vCard.
Эта спецификация представляет формат '''hCard''', который проецирует вышеупомянутый стандарт vCard в семантический HTML. Блоггеры могут внедрять hCard напрямую в Web-документы и оформлять их спомощью CSS для придания им желаемого внешнего вида. Также hCard позволяет приложениям запрашивать информацию прямиком из Web-документов, без обращений к отдельным файлам.
Вы можете использовать [http://microformats.org/code/hcard/creator генератор hCard] и скопировать HTML-код, который он сгенерирует, в ваш блог или Web-сайт для публикации контактной информации.
<!-- {{rfc-2119-intro}} -->
== Формат ==
=== Особенности ===
Основополагающим стандартом для hCard является vCard.
В hCard используются имена объектов/свойств vCard, преобразованные в нижний регистр для использования в качетсве имён классов и для создания иерархии HTML-элементов.
=== Корневой класс ===
Корневым классом для hCard является "vcard". Элемент с именем класса "vcard" называется ''hCard''.
=== Свойства ===
Свойства hCard — это элементы внутри hCard. Элементы с именами классов указанных свойств представляют собой значения таких свойств. Некоторые свойства могут иметь более сложную вложенную структуру других свойств, но в целом их структура идентична.
=== Список свойств ===
Свойства hCard
'''Обязательные:'''
* '''fn'''
* <span id="property-list-n">'''n'''<sup style="font-size:smaller">[[#note1|1]]</sup> (family-name, given-name, additional-name, honorific-prefix, honorific-suffix)</span>
'''Необязательные''':
* nickname, sort-string
* url, email (тип, значение), <span id="property-list-tel">tel<sup style="font-size:smaller">[[#note2|2]]</sup> (тип, значение)</span>
* adr (post-office-box, extended-address, street-address, locality, region, postal-code, country-name, type, value), label
* geo (latitude, longitude), tz
* photo, logo, sound, bday
* title, role, org (organization-name, organization-unit)
* category, note
* class, key, mailer, uid, rev
=== Дополнительные указания ===
<span id="note1">[[#property-list-n|1. ^]]</span>: ''n'' не является обязательным атрибутом (см. [[hcard#Оптимизация раздел об оптимизации]]<br />
<span id="note2">[[#property-list-tel|2. ^]]</span>: Используя ''tel'', авторы могут следовать стандарту [http://en.wikipedia.org/wiki/E.123 E.123] для записи телефонных номеров. Символьные значения (например, +1-555-FORMATS) должны быть сконвертированы в числа. Используйте <code>abbr</code>, чтобы отображать символьное представление и предоставлять числовое значение. Например:
<code><nowiki><abbr title="+15553676287">+1-555-FORMATS</abbr></nowiki></code>.
=== Единичные и множественные свойства ===
Список свойств, которые должны однозначно использоваться в формате (только один раз):
* 'fn'
* 'n'
* 'bday'
* 'tz'
* 'geo'
* 'sort-string'
* 'uid'
* 'class'
Для таких свойств только первый дочерний элемент с таким классом должен иметь значение, остальные должны игнорироваться.
Все другие свойства могут встречаться несколько раз. Каждый новый подобный класс создаёт новый параметр со значением данного свойства.
=== Читабельность для человека и машины ===
Человеку доступно всё, что является содержимым элементов (это, собственно, и является содержимым определённого свойства микроформата), с некоторыми нюансами:
* Если элемент ''<code>abbr</code>'' используется для описания свойства, то атрибут ''<code>title</code>'' (если обозначен) данного элемента является значением данного свойства, вместо содержимого данного элемента, которое, в данном случае, предоставляет более приемлемую для осознавания человеком информацию.
* Если для одного или нескольких свойств используется элемент ''<code>a</code>'', он должен трактоваться следующим образом:
** Для свойства ''photo'' и любого другого свойства, состоящего из URI, значением является значение атрибута ''href''.
** Для любых других свойств значением является содержимое элемента.
* Если для одного или нескольких свойств используется элемент img, он должен трактоваться следующим образом:
** Для свойства ''photo'' и любого другого свойства, которое получает URI в качестве своего значения, значением является значение атрибута ''src''.
** Для других свойств, атрибут ''alt'' содержит в себе их значение.
* Если используется элемент ''object'' для указания одного или нескольких свойств, он должен распознаваться следующим образом:
** Для свойства ''photo'' и подобных этому свойству свойств, атрибут ''data'' является значением таких свойств.
** Для других свойств, содержимое элемента является их значением.
=== Частичные значения ===
Иногда только часть элемента используется как значение определённого свойства. Такое часто происходит в тот момент, когда у свойства есть подтип (например, ''tel''). В данном случае используется специальное имя класса ''value'', чтобы выделить ту часть элемента, которая и будет являться значением свойства.
Вот фрагмент hCard для разметки домашнего номера телефона:<br />
vCard:
<source lang=html4strict>
TEL;TYPE=HOME:+1.415.555.1212
</source>
hCard:
<source lang=html4strict>
<span class="tel">
<span class="type">Домашний телефон</span>:
<span class="value">+1.415.555.1212</span>
</span>
</source>
Данный фрагмент hCard будет отображён следующим образом:
<div style="border: thin dashed black; width: 95%; padding: .5em 1em;">
<span class="tel">
<span class="type">Домашний телефон</span>:
<span class="value">+1.415.555.1212</span>
</span>
</div>
<!--
note for Tantek: review/edit property casing from here on
RUSSIAN_TRANSLATION_STANDART
-->
=== Исключения из свойств ===
У стандарта vCard есть несколько свойств, которые не играют особой роли или их роль берут на себя другие элементы на Web-странице. Этот раздел описывает, что с ними нужно делать.
# Свойства '''NAME''', '''PROFILE''', '''SOURCE''', '''PRODID''', '''VERSION''' в vCard (как определено в разделах .1.2, 2.1.3, 2.1.4, 3.6.3, 3.6.9 [[rfc-2426-ru|RFC 2426]]. Авторы не должны использовать эти свойства в своих hCard, так же как и парсеры должны '''игнорировать''' данные свойства, если они будут обнаружены при обработке hCard. Напротив, конвертерам hCard-в-vCard следует использовать заголовок страницы, где hCard был обнаружен (элемент ''title'' в (X)HTML-документах), чтобы создать свойство NAME, могут вывести свойство PROFILE в соответствии с [[rfc-2426-ru|RFC 2426]], могут использовать URI страницы, где был обнаружен hCard, чтобы заполнить свойство SOURCE. Только приложения, которые создают vCard, должны записывать свойства PRODIF и VERSION (3.0) в соответствии с [[rfc-2426-ru|RFC 2426]].
=== Информация об организации ===
Если свойства ''FN'' и ''ORG'' имеют одинаковые значения (например, данные классы могут относится к одному элементу, подобно ''class="fn org"''), hCard представляет собой информацию о связи с компанией, организацией и их следует считать такими. В этом случае авторы '''не должны''' использовать свойство ''N'', но они могут устанавливать их в пустую строку. Из этого следует, что парсеры должны поступать таким же образом.
=== Рекомендации по оптимизации ''n'' ===
Несмотря на то, что vCard обязует использовать свойство ''N'', сами авторы спецификации vCard не включают это свойство почти до конца спецификации (бывает и такое, да). Данное противоречие может быть разрешено следующим путём: необходимо позволить свойству ''FN'' заменять своим присутствием свойство ''N''. Это и было сделано в hCard.
Если свойства ''FN'' и ''ORG'' не совпадают (см. предыдущий раздел) и значение свойства ''FN'' равно двум словам, разделённых пробелом и не указано свойство ''N'', то свойство ''N'' «получается» из свойства ''FN''. Если же ''FN'' не состоит ровно из двух слов, то авторы обязаны разметить свойство ''N'', если они не создают hCard для организации, конечно.
# Содержимое ''FN'' разбито на два слова, разделённых пробелом.
# ''Первое'' слово в свойстве ''FN'' — это ''given-name'' для свойства ''N''.
# ''Второе (последнее)'' слово в этом свойстве интерпретируется как ''family-name'' для свойства ''N''.
# '''Исключение''': если первое слово заканчивается запятой «,» '''или''' второе слово состоит только из одного символа (после которого может  следовать точка «.»), то первое слово (не считая запятой) интерпретируется как ''family-name'', а второе слово — как ''given-name''.
Вот примеры типичных ситуаций:
* given-name (пробел) family-name
* family-name (запятая) given-name
* family-name (запятая) given-name-first-initial
* family-name (пробел) given-name-first-initial (необязательная точка)
=== Рекомендации по оптимизации ''nickname'' ===
Исходя из того, что в сети Интернет, в основном, используются никнеймы/псевдонимы для указания человека (автора), hCard также включает в себя свойство ''nickname''.
По аналогии с оптимизацией ''n'', если свойства ''FN'' и ''ORG'' не совпадают и значением свойства ''FN'' является ровно одно слово, при этом отдельного свойства ''N'' не указано, то:
# Содержимое ''FN'' должно считаться значением свойства ''nickname''.
# Обработчикам (парсерам) следует заполнить пустыми значениями пропущенное свойство ''N''.
Авторы hCard должны непосредственно указывать свойство ''nickname'', например:
<source lang=html4strict>
<span class="vcard">
<span class="fn nickname">daveman692</span>
</span>
</source>
hCard может иметь отдельный элемент с классом ''nickname'', значение которого и будет являться значением одноимённого свойства.
=== Оптимизации ''organization-name'' ===
Свойство ''ORG'' включает в себя два подсвойства: ''organization-name'' и ''organization-unit''. Очень часто авторы публикуют только ''organization-name''. Из этого следует, что если ''organization-name'' не указано внутри ''ORG'', содержимое ''ORG'' должно трактоваться как ''organization-name''.
=== Теги как категории ===
Категории в hCard могут быть представлены как теги c использованием микроформата [[rel-tag-ru|rel-tag]]. Когда категория размечена с помощью rel-tag, сам тег (как определено спецификацией rel-tag) и является этой категорией.
=== Пары значений ''Тип(type)'' и ''Значение(value)'' ===
Подсвойство ''type'' может принимать различные значения, зависящие от того, к какому свойству оно принадлежит. Значения данного подсвойства являются нечувствительными к регистру (это значит, что «Рабочий» — то же самое, что и «рабочий»). Пример:
vCard:
<source lang=html4strict>
TEL;TYPE=HOME,PREF:+1.415.555.1212
</source>
hCard:
<source lang=html4strict>
<span class="tel"><span class="type">Home</span> (<span class="type">pref</span>erred):
<span class="value">+1.415.555.1212</span>
</span>
</source>
Будет показано следующим образом:
<div style="border: thin dashed black; width: 95%; padding: .5em 1em; ">
<span class="tel"><span class="type">Home</span> (<span class="type">pref</span>erred):
<span class="value">+1.415.555.1212</span>
</span>
</div>
==== ''type'' без указанного ''value'' ====
Когда указан ''type'' свойства и не указан ''value'' свойства, всё, что не является ''type'', считается ''value'' данного свойства, например:
<source lang=html4strict>
<span class="tel"><span class="type">Home</span> +1.415.555.1212</span>
</source>
Равносильно следующему:
<source lang=html4strict>
<span class="tel"><span class="type">Home</span><span class="value"> +1.415.555.1212</span></span>
</source>
Следовательно, ''type'' — это «home», а значение — это «+1.415.555.1212»
==== Возможные значения ''type'' для adr, tel и email ====
<em>См. также разделы 3.2.1 ADR, 3.3.1 TEL и 3.3.2 EMAIL в [[rfc-2426-ru|RFC 2426]] для нормативных сведений. Значение по умолчанию (даже если это несколько значений) — это первое значение в данном списке.
* '''adr''': INTL, POSTAL, PARCEL, WORK, dom, home, pref
* '''tel''': VOICE, home, msg, work, pref, fax, cell, video, pager, bbs, modem, [http://flickr.com/photos/tags/carcellphone/ car], isdn, pcs
* '''email''': INTERNET, x400, pref, "other IANA registered address types"
=== Профиль XMDP ===
См. [http://gmpg.org/xmdp XMDP] [[hcard-profile-ru|профиль hCard]], который содержит все указанные выше свойства.
=== Информация об обработке ===
См. [[hcard-parsing|обработка hCard]].
== Примеры ==
<em>Данный раздел является информативным</em>
=== Пример vCard ===
Это пример vCard:
<source lang=html4strict>
BEGIN:VCARD
VERSION:3.0
N:Çelik;Tantek
FN:Tantek Çelik
URL:http://tantek.com/
END:VCARD
</source>
и эквивалент вышеприведённого vCard в разметке hCard: <!-- NOTE_TRANS:  See [[hcard-example1-steps| hCard Example 1]] for the derivation.  -->
<source lang=html4strict>
<div class="vcard">
<a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
</div>
</source>
Этот hCard будет отображён следующим образом:
<div style="border: thin dashed black; width: 95%; padding: .5em 1em;">
[http://tantek.com/ Tantek Çelik]
</div>
''Замечание: информацию о версии не обязательно указывать в разметке hCard, так как эта информация будет включена в профиль hCard,  который будет использован путём утилизации атрибута '''profile''' в HTML-элементе '''head'''.''
=== Пример ===
Информация о связи с компанией [http://www.commerce.net/ Commercenet]. Данный микроформат уже сейчас можно определить на этой странице с помощью различных утилит.
<div class="vcard">
<div class="fn org">'''CommerceNet'''</div>
<div class="url">'''<nowiki>http://www.commerce.net/</nowiki>'''</div>
<div class="adr">'''<span class="type">Work</span>:'''
<div class="street-address">'''169 University Avenue'''</div>
<span class="locality">'''Palo Alto'''</span>, <span class="region">'''CA'''</span>&nbsp;&nbsp;<span class="postal-code">'''94301'''</span>
<div class="country-name">'''USA'''</div>
</div>
<div class="tel">'''<span class="type">Work</span> +1-650-289-4040'''</div>
<div class="tel">'''<span class="type">Fax</span> +1-650-289-4041'''</div>
<div>'''Email <span class="email"><nowiki>info@commerce.net</nowiki></span>'''</div>
</div>
Ниже представлена разметка с некоторыми семантическими улучшениями:
* <code>abbr</code> используется для аббревиатур
* Имя организации представлено в виде ссылки
<source lang=html4strict>
<div class="vcard">
  <a class="fn org url" href="http://www.commerce.net/">CommerceNet</a>
  <div class="adr">
    <span class="type">Work</span>:
    <div class="street-address">169 University Avenue</div>
    <span class="locality">Palo Alto</span>, 
    <abbr class="region" title="California">CA</abbr>&nbsp;&nbsp;
    <span class="postal-code">94301</span>
    <div class="country-name">USA</div>
  </div>
  <div class="tel">
  <span class="type">Work</span> +1-650-289-4040
  </div>
  <div class="tel">
    <span class="type">Fax</span> +1-650-289-4041
  </div>
  <div>Email:
  <span class="email">info@commerce.net</span>
  </div>
</div>
</source>
=== Дополнительные примеры ===
Дополнительные примеры вы найдёте на странице [[hcard-examples-ru|примеров hCard]]. Там также представлены примеры конвертированных из vCard hCard.
== Кнопки ==
Вы можете использовать следующие кнопки на вашей странице вместе с микроформатом hCard: <!-- [[buttons#hCard]] -->
* http://www.davidjanes.com/images/mf_hcard.png
* http://rbach.priv.at/2006/buttons/hcard.png
* http://www.boogdesign.com/images/buttons/microformat_hcard.png
<!-- * CSS-powered button, as evidenced at [http://re-run.com/about/microformat-badges microformat badges @ re-run] -->
== Примеры в сети ==
Данный раздел является информативным. Количество примеров в сети очень большое, поэтому было решено переместить их на [[hcard-examples-in-wild-ru|отдельную страницу]]
== Реализации ==
Данный раздел является информативным.
См. [[hcard-implementations-ru|реализации]].
== Ссылки ==
=== Нормативные ===
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]
* [http://www.ietf.org/rfc/rfc2426.txt vCard RFC 2426]
* [http://www.itu.int/rec/T-REC-E.123-200102-I/en Рекомендации ITU E.123] по записи телефонных номеров
* [[rfc-2119-ru|RFC 2119]]
=== Информативные ===
* [[hcard-history-ru|История hCard]]
** [http://wiki.oreillynet.com/foocamp04/index.cgi?SimpleSemanticFormats Презентация «Simple Semantic Formats» на FOO Camp 2004 (10 сентября 2004)]
** [http://tantek.com/log/2004/09.html#hcard Введение термина hCard (30 сентября 2004)]
** Некоторые материалы взяты с [http://developers.technorati.com/wiki/hCard Technorati Wiki для разработчиков]
* [http://www.dante.net/np/ds/osi/9594-6-X.520.A4.ps X.520 в Postscript] ([http://72.14.253.104/search?q=cache:FjqzsFu4h20J:www.dante.net/np/ds/osi/9594-6-X.520.A4.ps Google Cached материал]) - информация об свойстве ROLE.
* [http://www.w3.org/2002/12/cal/rfc2426 HTML-версия RFC 2426]
* [http://w3.org/TR/REC-CSS1 CSS1]
* [http://www.w3.org/TR/xhtml11 XHTML 1.1]
* [http://en.wikipedia.org/wiki/E.123 Статья в Wikipedia о рекоменациях ITU-T по E.123] - для значений "TEL".
* [http://www.imc.org/pdi/ vCard и vCalendar (Internet Mail Consortium)]
* [[iso-8601|ISO 8601]]
==== Спецификации, связанные с hCard ====
* [[adr-ru|adr]]
* [[geo-ru|geo]]
* [[hcalendar-ru|hCalendar]]
* [[hreview-ru|hReview]]
==== Подобные работы ====
* [http://www.intertwingly.net/wiki/pie/PaceBetterPersonElement Atom PaceBetterPersonElement]
* [http://www.jabber.org/jeps/jep-0054.html JEP-0054: vcard-temp]
==== Идея ====
Спасибо моему хорошему другу [http://vadim.com/ Вадиму], который познакомил меня с vCard ''много'' лет назад. Если бы я был более внимательным, то многим людям не пришлось бы тратить своё время, изобретая колесо.
==== Создание форматов на основе hCard ====
''Данный раздел является информативным.''
См. [[hcard-design-methodology-ru|методологию дизайна hCard]].
<!--
=== More Semantic Equivalents ===
For some properties there are HTML elements which better match and convey their semantics.  The following properties SHOULD be encoded with the following HTML:
* <code>URL</code> in vCard becomes  <code><a class="url" href="...">...</a></code> inside the element with <code>class="vcard"</code> in hCard.
* Similarly, <code>EMAIL</code> in vCard becomes <code><nowiki><a class="email" href="mailto:...">...</a></nowiki></code>
* <code>PHOTO</code> in vCard becomes <code><img class="photo" src="..." alt="Photo of ..." /></code> or <code><object class="photo" data="..." type="...">Photo of ...</object></code>
* <code>UID</code> in vCard simply becomes another semantic applied to a specific URL (or EMAIL) for an hCard.


; Официальные подтверждения: Смотрите [[hcard#Inspiration_and_Acknowledgements|Официальные подтверждения]].
=== Singular and Plural derivations ===
The [[hcard#Singular_vs._Plural_Properties|lists of singular and plural properties]] have been derived by analyzing the semantics of the individual properties in vCard RFC2426 and determining logically that they MUST be singular per their semantics.  See [[hcard-singular-properties]] for explanations.


[[hcard#Copyright|авторские права]] и  заявки на [[hcard#Patents|патенты]].
==== Plural Properties Singularized ====
Since plural property names become their singular equivalents, even if the original plural property permitted only a single value with multiple components, those multiple components are represented each with their own singularly named property and the the property is effectively multivalued and subject to the above treatment of multivalued properties.-->
<!--
== Информация для ознакомления ==
* [http://www.digital-web.com/articles/microformats_primer/ Digital Web Magazine: Microformats Primer] by Garrett Dimon has a good intro to hCard
* [http://24ways.org/advent/practical-microformats-with-hcard Practical Microformats with hCard] by Drew McLellan
* [http://www.naturalsearchblog.com/archives/2006/09/28/tips-for-local-search-engine-optimization-for-your-site/ Local Search Engine Optimization using Microformats] by Chris Silver Smith
* [http://thedredge.org/ Andrew D. Hume] has written a blog post on [http://usabletype.com/articles/2005/usable-microformats/ usable microformats] which discusses hCard
* [http://www.thefutureoftheweb.com/blog/2006/1/hcard Jesse Skinner's introduction to hCard]
* [http://blog.usweb.com/ Shaun Shull's] great post on [http://blog.usweb.com/archives/how-microformats-affect-search-engine-optimization-seo How Microformats Affect SEO], including his [[hcard|hCard]] as an example.
* [http://24ways.org/2006/styling-hcards-with-css 24 Ways: Styling hCards with CSS] A 24 Ways article - John Allsopp on styling hCard using CSS
* See also [http://www.technorati.com/cosmos/referer.html blogs discussing this page] and the [http://technorati.com/tags/hcard hCard tag]
* [http://www.rfc-editor.org/rfc/rfc4770.txt <nowiki>RFC 4770</nowiki> Extensions for Instant Messaging]
* [http://ungeekdapo.wordpress.com/2008/04/30/a-real-life-use-case-of-microformat-hcard-in-action/ A real life use case of Microformat hCard in action] by Bob Ngu
-->
<!-- == См. также ==
{{hcard-related-pages}}
-->

Latest revision as of 14:27, 19 June 2014

!

Вы прошли по ссылке на статью, перевод которой ещё не завершён. См. оригинал статьи

Вы можете помочь перевести её до конца, соблюдая стиль и общие правила перевода.

Напоминаем, что ваш перевод может быть изменён другими участниками сообщества, поэтому старайтесь переводить статьи точнее и более читабельнее.

hCard

hCard — это простой, открытый микроформат для описания людей, компаний, организаций и мест, используя всю мощь vCard (RFC 2426 (англ.)). Имена классов hCard полностью отображают имена соответствующих полей vCard на семантический (X)HTML. hCard — это один из открытых микроформатов, который можно внедрить в HTML, XHTML, ATOM, RSS и XML.

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

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

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

Авторы

Редактор
Tantek Çelik (http://tantek.com/, ранее в Technorati, Inc., и в Microsoft Corporation)
Авторы
Tantek Çelik (членство в организациях указано выше)
Brian Suda (http://suda.co.uk/)

Права

Официальные подтверждения
См. официальные подтверждения.
Защита прав
См. авторские права и заявки на патенты.

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

Патенты

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

Введение

Стандарт vCard (RFC 2426 (англ.)) был широко внедрен для обеспечения взаимодействия между различными приложениями (например, приложение «Address Book» компании Apple, встроенное в Mac OS X).Помимо этого, многие блоггеры идентифицируют себя по имени и обсуждают своих друзей и семью на страницах блогов. С помощью небольшой структуризации, блоггеры могут обсуждать (описывать) людей в своих блогах таким образом, что поисковые роботы и другие программы-обработчики смогут запросить эту информацию, автоматически конвертируя её в vCard и используя её впоследствии в любом сервисе или приложении, работающем с vCard.

Эта спецификация представляет формат hCard, который проецирует вышеупомянутый стандарт vCard в семантический HTML. Блоггеры могут внедрять hCard напрямую в Web-документы и оформлять их спомощью CSS для придания им желаемого внешнего вида. Также hCard позволяет приложениям запрашивать информацию прямиком из Web-документов, без обращений к отдельным файлам.

Вы можете использовать генератор hCard и скопировать HTML-код, который он сгенерирует, в ваш блог или Web-сайт для публикации контактной информации.


Формат

Особенности

Основополагающим стандартом для hCard является vCard.

В hCard используются имена объектов/свойств vCard, преобразованные в нижний регистр для использования в качетсве имён классов и для создания иерархии HTML-элементов.


Корневой класс

Корневым классом для hCard является "vcard". Элемент с именем класса "vcard" называется hCard.


Свойства

Свойства hCard — это элементы внутри hCard. Элементы с именами классов указанных свойств представляют собой значения таких свойств. Некоторые свойства могут иметь более сложную вложенную структуру других свойств, но в целом их структура идентична.

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

Свойства hCard

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

  • fn
  • n1 (family-name, given-name, additional-name, honorific-prefix, honorific-suffix)

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

  • nickname, sort-string
  • url, email (тип, значение), tel2 (тип, значение)
  • adr (post-office-box, extended-address, street-address, locality, region, postal-code, country-name, type, value), label
  • geo (latitude, longitude), tz
  • photo, logo, sound, bday
  • title, role, org (organization-name, organization-unit)
  • category, note
  • class, key, mailer, uid, rev

Дополнительные указания

1. ^: n не является обязательным атрибутом (см. hcard#Оптимизация раздел об оптимизации
2. ^: Используя tel, авторы могут следовать стандарту E.123 для записи телефонных номеров. Символьные значения (например, +1-555-FORMATS) должны быть сконвертированы в числа. Используйте abbr, чтобы отображать символьное представление и предоставлять числовое значение. Например:

<abbr title="+15553676287">+1-555-FORMATS</abbr>.

Единичные и множественные свойства

Список свойств, которые должны однозначно использоваться в формате (только один раз):

  • 'fn'
  • 'n'
  • 'bday'
  • 'tz'
  • 'geo'
  • 'sort-string'
  • 'uid'
  • 'class'

Для таких свойств только первый дочерний элемент с таким классом должен иметь значение, остальные должны игнорироваться.

Все другие свойства могут встречаться несколько раз. Каждый новый подобный класс создаёт новый параметр со значением данного свойства.

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

Человеку доступно всё, что является содержимым элементов (это, собственно, и является содержимым определённого свойства микроформата), с некоторыми нюансами:

  • Если элемент abbr используется для описания свойства, то атрибут title (если обозначен) данного элемента является значением данного свойства, вместо содержимого данного элемента, которое, в данном случае, предоставляет более приемлемую для осознавания человеком информацию.
  • Если для одного или нескольких свойств используется элемент a, он должен трактоваться следующим образом:
    • Для свойства photo и любого другого свойства, состоящего из URI, значением является значение атрибута href.
    • Для любых других свойств значением является содержимое элемента.
  • Если для одного или нескольких свойств используется элемент img, он должен трактоваться следующим образом:
    • Для свойства photo и любого другого свойства, которое получает URI в качестве своего значения, значением является значение атрибута src.
    • Для других свойств, атрибут alt содержит в себе их значение.
  • Если используется элемент object для указания одного или нескольких свойств, он должен распознаваться следующим образом:
    • Для свойства photo и подобных этому свойству свойств, атрибут data является значением таких свойств.
    • Для других свойств, содержимое элемента является их значением.

Частичные значения

Иногда только часть элемента используется как значение определённого свойства. Такое часто происходит в тот момент, когда у свойства есть подтип (например, tel). В данном случае используется специальное имя класса value, чтобы выделить ту часть элемента, которая и будет являться значением свойства.

Вот фрагмент hCard для разметки домашнего номера телефона:

vCard:

TEL;TYPE=HOME:+1.415.555.1212

hCard:

<span class="tel">
 <span class="type">Домашний телефон</span>:
 <span class="value">+1.415.555.1212</span>
</span>

Данный фрагмент hCard будет отображён следующим образом:

Домашний телефон: +1.415.555.1212


Исключения из свойств

У стандарта vCard есть несколько свойств, которые не играют особой роли или их роль берут на себя другие элементы на Web-странице. Этот раздел описывает, что с ними нужно делать.

  1. Свойства NAME, PROFILE, SOURCE, PRODID, VERSION в vCard (как определено в разделах .1.2, 2.1.3, 2.1.4, 3.6.3, 3.6.9 RFC 2426. Авторы не должны использовать эти свойства в своих hCard, так же как и парсеры должны игнорировать данные свойства, если они будут обнаружены при обработке hCard. Напротив, конвертерам hCard-в-vCard следует использовать заголовок страницы, где hCard был обнаружен (элемент title в (X)HTML-документах), чтобы создать свойство NAME, могут вывести свойство PROFILE в соответствии с RFC 2426, могут использовать URI страницы, где был обнаружен hCard, чтобы заполнить свойство SOURCE. Только приложения, которые создают vCard, должны записывать свойства PRODIF и VERSION (3.0) в соответствии с RFC 2426.

Информация об организации

Если свойства FN и ORG имеют одинаковые значения (например, данные классы могут относится к одному элементу, подобно class="fn org"), hCard представляет собой информацию о связи с компанией, организацией и их следует считать такими. В этом случае авторы не должны использовать свойство N, но они могут устанавливать их в пустую строку. Из этого следует, что парсеры должны поступать таким же образом.

Рекомендации по оптимизации n

Несмотря на то, что vCard обязует использовать свойство N, сами авторы спецификации vCard не включают это свойство почти до конца спецификации (бывает и такое, да). Данное противоречие может быть разрешено следующим путём: необходимо позволить свойству FN заменять своим присутствием свойство N. Это и было сделано в hCard.

Если свойства FN и ORG не совпадают (см. предыдущий раздел) и значение свойства FN равно двум словам, разделённых пробелом и не указано свойство N, то свойство N «получается» из свойства FN. Если же FN не состоит ровно из двух слов, то авторы обязаны разметить свойство N, если они не создают hCard для организации, конечно.

  1. Содержимое FN разбито на два слова, разделённых пробелом.
  2. Первое слово в свойстве FN — это given-name для свойства N.
  3. Второе (последнее) слово в этом свойстве интерпретируется как family-name для свойства N.
  4. Исключение: если первое слово заканчивается запятой «,» или второе слово состоит только из одного символа (после которого может следовать точка «.»), то первое слово (не считая запятой) интерпретируется как family-name, а второе слово — как given-name.

Вот примеры типичных ситуаций:

  • given-name (пробел) family-name
  • family-name (запятая) given-name
  • family-name (запятая) given-name-first-initial
  • family-name (пробел) given-name-first-initial (необязательная точка)

Рекомендации по оптимизации nickname

Исходя из того, что в сети Интернет, в основном, используются никнеймы/псевдонимы для указания человека (автора), hCard также включает в себя свойство nickname.

По аналогии с оптимизацией n, если свойства FN и ORG не совпадают и значением свойства FN является ровно одно слово, при этом отдельного свойства N не указано, то:

  1. Содержимое FN должно считаться значением свойства nickname.
  2. Обработчикам (парсерам) следует заполнить пустыми значениями пропущенное свойство N.

Авторы hCard должны непосредственно указывать свойство nickname, например:

<span class="vcard">
	<span class="fn nickname">daveman692</span>
</span>

hCard может иметь отдельный элемент с классом nickname, значение которого и будет являться значением одноимённого свойства.

Оптимизации organization-name

Свойство ORG включает в себя два подсвойства: organization-name и organization-unit. Очень часто авторы публикуют только organization-name. Из этого следует, что если organization-name не указано внутри ORG, содержимое ORG должно трактоваться как organization-name.

Теги как категории

Категории в hCard могут быть представлены как теги c использованием микроформата rel-tag. Когда категория размечена с помощью rel-tag, сам тег (как определено спецификацией rel-tag) и является этой категорией.


Пары значений Тип(type) и Значение(value)

Подсвойство type может принимать различные значения, зависящие от того, к какому свойству оно принадлежит. Значения данного подсвойства являются нечувствительными к регистру (это значит, что «Рабочий» — то же самое, что и «рабочий»). Пример:

vCard:

TEL;TYPE=HOME,PREF:+1.415.555.1212

hCard:

<span class="tel"><span class="type">Home</span> (<span class="type">pref</span>erred):
 <span class="value">+1.415.555.1212</span>
</span>

Будет показано следующим образом:

Home (preferred): +1.415.555.1212

type без указанного value

Когда указан type свойства и не указан value свойства, всё, что не является type, считается value данного свойства, например:

<span class="tel"><span class="type">Home</span> +1.415.555.1212</span>

Равносильно следующему:

<span class="tel"><span class="type">Home</span><span class="value"> +1.415.555.1212</span></span>

Следовательно, type — это «home», а значение — это «+1.415.555.1212»

Возможные значения type для adr, tel и email

См. также разделы 3.2.1 ADR, 3.3.1 TEL и 3.3.2 EMAIL в RFC 2426 для нормативных сведений. Значение по умолчанию (даже если это несколько значений) — это первое значение в данном списке.

  • adr: INTL, POSTAL, PARCEL, WORK, dom, home, pref
  • tel: VOICE, home, msg, work, pref, fax, cell, video, pager, bbs, modem, car, isdn, pcs
  • email: INTERNET, x400, pref, "other IANA registered address types"

Профиль XMDP

См. XMDP профиль hCard, который содержит все указанные выше свойства.

Информация об обработке

См. обработка hCard.

Примеры

Данный раздел является информативным

Пример vCard

Это пример vCard:

BEGIN:VCARD
VERSION:3.0
N:Çelik;Tantek
FN:Tantek Çelik
URL:http://tantek.com/
END:VCARD

и эквивалент вышеприведённого vCard в разметке hCard:

<div class="vcard">
	<a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
</div>

Этот hCard будет отображён следующим образом:

Замечание: информацию о версии не обязательно указывать в разметке hCard, так как эта информация будет включена в профиль hCard, который будет использован путём утилизации атрибута profile в HTML-элементе head.

Пример

Информация о связи с компанией Commercenet. Данный микроформат уже сейчас можно определить на этой странице с помощью различных утилит.

CommerceNet
http://www.commerce.net/
Work:
169 University Avenue

Palo Alto, CA  94301

USA
Work +1-650-289-4040
Fax +1-650-289-4041
Email

Ниже представлена разметка с некоторыми семантическими улучшениями:

  • abbr используется для аббревиатур
  • Имя организации представлено в виде ссылки
<div class="vcard">
  <a class="fn org url" href="http://www.commerce.net/">CommerceNet</a>
  <div class="adr">
    <span class="type">Work</span>:
    <div class="street-address">169 University Avenue</div>
    <span class="locality">Palo Alto</span>,  
    <abbr class="region" title="California">CA</abbr>&nbsp;&nbsp;
    <span class="postal-code">94301</span>
    <div class="country-name">USA</div>
  </div>
  <div class="tel">
   <span class="type">Work</span> +1-650-289-4040
  </div>
  <div class="tel">
    <span class="type">Fax</span> +1-650-289-4041
  </div>
  <div>Email: 
   <span class="email">info@commerce.net</span>
  </div>
</div>

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

Дополнительные примеры вы найдёте на странице примеров hCard. Там также представлены примеры конвертированных из vCard hCard.

Кнопки

Вы можете использовать следующие кнопки на вашей странице вместе с микроформатом hCard:

  • mf_hcard.png
  • hcard.png
  • microformat_hcard.png

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

Данный раздел является информативным. Количество примеров в сети очень большое, поэтому было решено переместить их на отдельную страницу

Реализации

Данный раздел является информативным.

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

Ссылки

Нормативные

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

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

Подобные работы

Идея

Спасибо моему хорошему другу Вадиму, который познакомил меня с vCard много лет назад. Если бы я был более внимательным, то многим людям не пришлось бы тратить своё время, изобретая колесо.

Создание форматов на основе hCard

Данный раздел является информативным.

См. методологию дизайна hCard.