XOXO 1.0: Extensible Open XHTML Outlines

From Microformats Wiki
Jump to navigation Jump to search

XOXO itu sederhana, susunan garis besarnya ditulis dalam XHTML stardar dan cocok ditancapkan di (X)HTML, Atom, RSS, dan seluruh XML. XOXO adalah salah satu dari beberapa standar microformat terbuka.

Spesifikasi Konsep 2004-10-01

Editor

Tantek Çelik (Technorati, Inc)

Pencipta

Hak Cipta

This specification is (C) 2003-2024 by the authors. However, the authors intend to submit (or already have submitted, see details in the spec) this specification to a standards body with a liberal copyright/licensing policy such as the GMPG, IETF, and/or W3C. Anyone wishing to contribute should read their copyright principles, policies and licenses (e.g. the GMPG Principles) and agree to them, including licensing of all contributions under all required licenses (e.g. CC-by 1.0 and later), before contributing.

  • Saya memberikan seluruh kontribusi kepada spesifikasi ini untuk domain publik dan Saya menganjurkan pencipta lainnya melakukan hal yang sama.
    • Ketika semua penulis / editor telah melakukannya, kita dapat menghapus referensi template MicroFormatCopyrightStatement dan menggantinya dengan MicroFormatPublicDomainContributionStatement.

Paten

This specification is subject to a royalty free patent policy, e.g. per the W3C Patent Policy, and IETF RFC3667 & RFC3668.

Pengantar

When we were discussing Attention.xml, Tantek pointed out that XHTML has everything necessary for semantically expressing outlines and blogroll-like subscriptions in an XML format that is both interactively renderable by browsers and parsable by strict XML engines. This page is here to discuss this idea.

Nama

XOXO adalah singkatan dari eXtensible Open XHTML Outlines, dan diucapkan dengan berbagai cara, seperti 'Ecks Ecks oh oh', 'zho-zho', atau 'sho-sho'.

Abstrak

XOXO is one of several microformats. This specification defines a new XHTML document type that is based upon the module framework and modules defined in Modularization of XHTML (XHTMLMOD). The purpose of the XOXO document type is to serve as the basis for XHTML friendly outlines for processing by XML engines and for easy interactive rendering by browsers.

The XOXO Document Type

The XOXO document type is made up of the following XHTML modules. The elements, attributes, and minimal content models associated with these modules are defined in "Modularization of XHTML" (XHTMLMOD). The elements are listed here for information purposes, but the definitions in "Modularization of XHTML" should be considered definitive. In the on-line version of this document, the module names in the list below link into the definitions of the modules within the current version of "Modularization of XHTML".

Structure Module

 body, head, html, title

Hypertext Module

 a

List Module

 dl, dt, dd, ol, ul, li

Metainformation Module

 meta

Stylesheet Module

 style element

Style Attribute Module

 style attribute

Link Module

 link

Legacy Module

 Attribute compact on ol and ul

The XOXO Profile

See xoxo-profile for the XMDP profile of XOXO which defines the XOXO values for the class attribute.

Simple XOXO Fragment

Markup

<ol class='xoxo'>
  <li>Subject 1
    <ol>
        <li>subpoint a</li>
        <li>subpoint b</li>
    </ol>
  </li>
  <li>Subject 2
    <ol compact="compact">
        <li>subpoint c</li>
        <li>subpoint d</li>
    </ol>
  </li>
  <li>Subject 3
    <ol>
        <li>subpoint e</li>
    </ol>
  </li>
</ol>

Sample Rendering

   1. Subject 1
      a. subpoint a
      b. subpoint b
   2. Subject 2
   3. Subject 3
      a. subpoint e

Usage of 'compact' attribute

Note the use of the 'compact' attribute to indicate that the subpoints of the headline "Subject 2" are not in an expanded state. The absence of the 'compact' attribute elsewhere indicates that the other headlines are in an expanded state.

Possible Default Style Rules for Sample Rendering

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


More Simple Examples

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

Properties of Outline Items

Outlines typically consist of a hierarchy of points and subpoints. Each of those points (outline items) itself may have some properties (AKA attributes or metadata) that need to be represented. Perhaps the most common additional property on outline items in practice is the URL as demonstrated in Mark Pilgrim's examples above. Even the text label/title of an outline item could be considered a common property. A few such common properties:

  • text
  • description
  • url (often called xmlurl or htmlurl; sometimes called permalink)
  • title
  • type (hint of the MIME type of the resource indicated by the URL)

In general, properties on an outline item <li> are represented by a nested definition list <dl>. Strictly speaking, it is the first <dl> inside the <li> and before any following <ol>, <ul>, or <li>, e.g. here is an item "item 1" with a description property (the subpoints are there purely as a point of reference to an earlier example).

<ol class='xoxo'>
  <li>item 1
    <dl>
      <dt>description</dt>
        <dd>This item represents the main point we're trying to make.</dd>
    </dl>
    <ol>
      <li>subpoint a</li>
      <li>subpoint b</li>
    </ol>
  </li>

Special Properties

There are a handful of special properties which we are able to represent more directly and conveniently with the semantic XHTML building blocks that we have included, instead of terms in a definition list. Mostly taken from the above list of common properties, these are:

  • text, url, title, type, and rel (short for relationship)

If we were to represent them simply as definition terms (including the "description" property from the previous example), they might look something like this:

Example for the sake of discussion only / not a canonical XOXO example:

<ol class='xoxo'>
  <li>
    <dl>
      <dt>text</dt>
        <dd>item 1</dd>
      <dt>description</dt>
        <dd> This item represents the main point we're trying to make.</dd>
      <dt>url</dt>
        <dd>http://example.com/more.xoxo</dd>
      <dt>title</dt>
        <dd>title of item 1</dd>
      <dt>type</dt>
        <dd>text/xml</dd>
      <dt>rel</dt>
        <dd>help</dd>
    </dl>
  </li>

However, by taking advantage of the semantic <a href> element, we are able to dramatically simplify the common cases that utilize these properties. From a parser's perspective, this applies to the first <a href> element directly inside the <li>.

Actual XOXO Example:

<ol class='xoxo'>
  <li><a href="http://example.com/more.xoxo"
         title="title of item 1"
         type="text/xml"
         rel="help">item 1</a> 
<!-- note how the "text" property is simply the contents of the <a> element -->
      <dl>
        <dt>description</dt>
          <dd>This item represents the main point we're trying to make.</dd>
      </dl>
  </li>

Any other properties are simply added to the definition list in the same way as the "description" property.

Multi-value Properties

Properties that have multiple values are added using a list, nested inside of the corresponding dl element:

<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>

Publishing XOXO

XOXO may be published in two forms, valid XHTML, and simple well-formed XML.

Valid XHTML XOXO

A valid XHTML XOXO page is a complete XHTML document.

<!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 page</title>
</head>
<body>
<ol class="xoxo">
 <li><a href="URL-one">TEXT-one</a></li>
 <li><a href="URL-two">TEXT-two</a></li>
 ...
</ol>
</body>
</html>

Simple well-formed XML XOXO

The root element of a simple well-formed XML XOXO page is either an ol or ul with class name of "xoxo". This variant is ideal for syndication and transclusion into (X)HTML pages with AHAH.

<ol class="xoxo">
 <li><a href="URL-one">TEXT-one</a></li>
 <li><a href="URL-two">TEXT-two</a></li>
 ...
</ol>

Content-Type

Valid or well-formed XHTML XOXO SHOULD be served with this Content-Type header for maximum browser compatibility.

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

It MUST be served with one of these Content-Type headers:

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

Examples in the Wild

This section is informative.

There are many wild examples. Nearly every blogroll on the Web can be parsed as XOXO, since they are typically an unordered list of list items of hyperlinks, which is within the XOXO profile. List examples here, when the list becomes too long we can move to a dedicated page.

Implementations

This section is informative.

Contoh Kode

  • Lihat halaman xoxo-sample-code untuk contoh kode open source untuk membaca dan menulis berkas XOXO.
  • Lihat juga halaman xoxo-compact-sample dengan sumber untuk CSS dan JS yang mengubah tampilan dan nuansa XOXO yang sangat polos agar memiliki segitiga twiddlable untuk sekumpulan daftar yang menghargai attribut dengan baik.

Skema XOXO

Bagian ini adalah informatif.

Catatan: mungkin sudah usang dan perlu diperbaharui untuk mencerminkan penggunaan <dl> untuk membubuhi keterangan tiap-tiap XOXO dengan properti secara acak.

Referensi

Referensi yang normatif

Referensi yang Informatif

Bagian ini adalah informatif.

Similar Work

  • XHTML Outlines - DannyAyers independently came up with idea in 2003 October (just a month or two before Kevin and Tantek independently came up with XOXO) to use a simple profile of XHTML to semantically represent outlines using existing building blocks from XHTML.
  • XOW - making them editable, producing RDF and bookmark lists from them (DannyAyers)
  • XBEL, or the XML Bookmark Exchange Language, an open XML standard for sharing Internet URIs, also known as bookmarks (or favorites in Internet Explorer).
  • OPML (Outline Processor Markup Language), an XML format for outlines.

Bacaan yang terkait

Bacaan yang tidak terkait

Promotional Materials / Schwag

Discussions

This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. There is a separate document where we are keeping our brainstorms and other explorations relating to XOXO:

Tanya Jawab

  • Jika Anda memiliki pertanyaan seputar XOXO, silahkan kunjungi xoxo-faq dan jika Anda tidak menemukan jawabannya, tambahkan pertanyaan Anda pada halaman tersebut.

Isu

  • Silahkan menambahkan isu dengan spesifikasi apapun ke dokumen terpisah xoxo-issues.