xoxo-ru

From Microformats Wiki
Jump to navigation Jump to search

XOXO

XOXO — это микроформат, с помощью которого вы можете разметить на странице информацию о её содержимом, создать оглавление или обособить методы навигации по содержимому на странице. XOXO — это один из микроформатов.

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

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

Авторы

Редакторы
Tantek Çelik (Technorati, Inc)
Авторы
Kevin Marks (Technorati, Inc)
Tantek Çelik (Technorati, Inc, ранее в Microsoft Corporation)
Mark Pilgrim (IBM)
Morten W. Petersen

Права

Данная спецификация находится под лицензией Public Domain (страница Тантека).

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

Патенты

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


Преамбула

Данный формат был предложен при обсуждении Attention.xml Тантеком, который указал на то, что очень часто на страницах используются подобные структуры данных (например, список соседей в блогролле). Было предложено создать такой формат, который легко бы обрабатывался браузерами, не нарушая при этом его строгой и иерархичной структуры.

Имя

XOXO (Extensible Open XHTML Outline) — расширяемая сводка содержимого, оглавление и т.п. Произносится как «Икс-о-икс-о», «Жо-жо» или «Шо-шо».

Общее описание

XOXO — это один из микроформатов. Данная спецификация определяет новый тип в XHTML, который основан на модульности последнего. Назначение XOXO указано в преамбуле.

Тип документа XOXO

XOXO построен на основе следующих элементарных XHTML-модулей. Элементы, атрибуты и минимальное содержимое указано в «Модуляризации XHTML» (см. подробности). Элементы указаны здесь в информативных целях; нормативно он указаны в ранее упомянутом документе W3C.

Структурный модуль (structure module)

 body, head, html, title

Модуль гиперссылок (hypertext module)

 a

Модуль список (list module)

 dl, dt, dd, ol, ul, li

Модуль метаинформации (metainformation module)

 meta

Модуль стилей (stylesheet module)

 Элемент style

Модуль атрибутов стилей (style attribute module)

 Атрибут style

Модуль прикрепляемого содержимого (link module)

 link

Модуль атрибутов списков (legacy module)

 Атрибут compact в элемента ol и ul

XMDP

См. XMDP XOXO профиль.

Простой XOXO фрагмент

Разметка

<ol class='xoxo'>
  <li>Тема 1
    <ol>
        <li>Подтема А</li>
        <li>Подтема Б</li>
    </ol>
  </li>
  <li>Тема 2
    <ol compact="compact">
        <li>Подтема В</li>
        <li>Подтема Г</li>
    </ol>
  </li>
  <li>Тема 3
    <ol>
        <li>Подтема Д</li>
    </ol>
  </li>
</ol>

Рендеринг

   1. Тема 1
      a. Подтема А
      b. Подтема Б
   2. Тема 2
   3. Тема 3
      a. Подтема Д

Использование атрибута 'compact'

Использование атрибута compact указывает на скрытие даной ветки (подветки). Отсутствие данного атрибута где-либо говорит об обратном.

Возможные стили по умолчанию.

ol.xoxo { list-style:decimal; }
ol.xoxo ol { list-style:lower-latin; }
ol[compact="compact"] { display:none; }


Простые примеры

MarkP has a set of examples that demonstrates both the simplicity of the markup and the presentational richness that is possible:

Основные свойства оглавлений

Оглавления часто состоят из иерархии пунктов и подпунктов. Каждый пункт может иметь несколько свойств (т.н. метаданные), которые должны быть представлены. Вот некоторые свойства:

  • text
  • description
  • url (часто называется xmlurl или htmlurl; иногда — permalink)
  • title
  • type (указание MIME-типа документа по URL)

В целом, свойства пункта на элементе <li> отображаются через вложенный лист <dl>. Строго говоря, это первый <dl> внутри <li> перед последующим <ol>, <ul> или <li>.

Например:

<ol class='xoxo'>
  <li>Пункт 1
    <dl>
      <dt>description</dt>
        <dd>Данный пункт описывает основное, что мы должны сделать, к примеру.</dd>
    </dl>
    <ol>
      <li>Подпункт А</li>
      <li>Подпункт Б</li>
    </ol>
  </li>

Специальные свойства оглавлений

Существует также некоторое количество специальных свойств, которые мы можем представить более семантично, используя существующие блоки XHTML. Наиболее часто используемые свойства:

  • text
  • url
  • title
  • type
  • rel (отношение, relation)

Например:

<ol class='xoxo'>
  <li>
    <dl>
      <dt>text</dt>
        <dd>Пункт 1</dd>
      <dt>description</dt>
        <dd>Данный пункт описывает основное, что мы должны сделать, к примеру.</dd>
      <dt>url</dt>
        <dd>http://example.com/more.xoxo</dd>
      <dt>title</dt>
        <dd>Заголовок 1 пункта</dd>
      <dt>type</dt>
        <dd>text/xml</dd>
      <dt>rel</dt>
        <dd>help</dd>
    </dl>
  </li>

Помимо этого, используя преимущества семантики элемента a, мы можем во многих случаях упростить более общие случаи разметки. Парсеры же должны смотреть на первый элемент a, вложенный в <li>.

Пример XOXO с использованием элемента a:

<ol class='xoxo'>
  <li><a href="http://example.com/more.xoxo"
         title="Заголовок пункта 1"
         type="text/xml"
         rel="help">Пункт 1</a> 
<!-- Заметьте, что свойство ''text'' теперь просто является содержимым ссылки -->
      <dl>
        <dt>description</dt>
          <dd>Данный пункт описывает основное, что мы должны сделать, к примеру.</dd>
      </dl>
  </li>

Все другие свойства добавляются аналогично использованному нами свойству description..

Свойства с мультизначениями

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

<ol class='xoxo'>
  <li>item 1
    <dl>
      <dt>multivalproperty1</dt>
      <dd><ul>
       <li>value-a</li>
       <li>value-b</li>
      </ul></dd>
    </dl>
  </li>
</ol>

Публикация XOXO

XOXO может быть опубликован в двух формах:

  • Валидный XHTML
  • Валидный XML

XOXO в валидном XHTML

Валидная XOXO-страница — это полный XHTML-документ.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Страница XOXO</title>
</head>
<body>
<ol class="xoxo">
 <li><a href="URL-one">Текст 1</a></li>
 <li><a href="URL-two">Текст 2</a></li>
 ...
</ol>
</body>
</html>

XOXO в валидном XML

Корневой элемент в случае внедрения XOXO в XML — это ol или ul с именем класса xoxo. Такой вариант идеален для синдикации и внедрения/использования в (X)HTML-страницы через AHAH.

<ol class="xoxo">
 <li><a href="URL-one">Текст 1</a></li>
 <li><a href="URL-two">Текст 2</a></li>
 ...
</ol>

Content-Type

Валидный XHTML XOXO следует отдавать со следующим Content-Type заголовком для достижения максимальной совместимости:

Content-Type: text/html; charset=utf-8

Он должен быть отдан с одним из следующих заголовков:

Content-Type: text/html; charset=utf-8
Content-Type: application/xhtml+xml
Content-Type: application/xml

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

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

Существует довольно большое количество примеров (возможного) внедрения XOXO. Например, почти каждый blogroll может быть обработан как XOXO, так как они обычно являются несортированными списками или списками с гиперссылками, которые дозволены XOXO-профилем.

Реализации

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

Примеры кода

XOXO-схемы

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


Ссылки

Нормативные

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

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

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

  • XHTML Outlines - подобная идея (октябрь 2003 года, месяц перед тем, как Тантек и Кевин пришли к XOXO) (DannyAyers).
  • XOW - Как сделать их редактируемыми, экспортируемыми в RDF и используемыми в закладках (DannyAyers).
  • XBEL — XML Bookmark Exchange Language
  • OPML (Outline Processor Markup Language), XML-формат для списков оглавлений.

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

Несвязанные работы

Продвижение XOXO

Обсуждения

Работа над спецификацией всё ещё продолжается. Отдельные аспекты реализации XOXO ещё обсуждаются. Вы можете посмотреть текущие наработки и идеи:

См. также