|
|
Line 1: |
Line 1: |
| <entry-title>hAtom 0.1</entry-title>
| | HOW THING THROUGH |
| {{latest|h-entry}}
| | HOW MAKE THING THROUGH |
| {{Template:DraftSpecification}}
| | HOW THING BE THROUGH |
| | | HOW MAKE THING BE THROUGH |
| hAtom is a microformat for content that can be syndicated, primarily but not exclusively weblog postings. hAtom is based on a subset of the [http://www.atomenabled.org/ Atom] syndication format. hAtom will be one of several [[microformats]] open standards.
| | HOW ANYTHING THROUGH |
| __TOC__
| | HOW MAKE ANYTHING THROUGH |
| == Draft Specification ==
| | HOW ANYTHING BE THROUGH |
| | | HOW MAKE ANYTHING BE THROUGH |
| <div class="vcard">
| | HOW EVERYTHING THROUGH |
| ;<span class="role">Editor/Author</span>
| | HOW MAKE EVERYTHING THROUGH |
| :<span class="fn">[http://blogmatrix.blogmatrix.com/ David Janes]</span> <span class="org">([http://www.blogmatrix.com BlogMatrix, Inc.])</span>
| | HOW EVERYTHING BE THROUGH |
| </div>
| | HOW MAKE EVERYTHING BE THROUGH |
| | | HOW UNIVERSE THROUGH |
| ;Contributors
| | HOW MAKE UNIVERSE THROUGH |
| :<span class="vcard"><span class="fn">[http://members.optusnet.com.au/benjamincarlyle/benjamin/blog/ Benjamin Carlyle]</span></span>
| | HOW UNIVERSE BE THROUGH |
| :<span class="vcard"><span class="fn">[[User:Tantek|Tantek Çelik]]</span> (<span class="url">http://tantek.com/</span> and before at [http://technorati.com Technorati, Inc.])</span>
| | HOW MAKE UNIVERSE BE THROUGH |
| | | HOW THING OUT |
| [[hatom#Copyright|copyright]] and [[hatom#Patents|patents]] statements apply.
| | HOW MAKE THING OUT |
| | | HOW THING BE OUT |
| == Status ==
| | HOW MAKE THING BE OUT |
| hAtom 0.1 is a microformats.org draft specification. Public discussion on hAtom takes place on [[hatom-feedback]], the #microformats [[irc]] channel on irc.freenode.net, and [http://microformats.org/discuss/mail/microformats-discuss/ microformats-discuss mailing list].
| | HOW ANYTHING OUT |
| | | HOW MAKE ANYTHING OUT |
| === Available languages ===
| | HOW ANYTHING BE OUT |
| The English version of this specification is the only normative version. For translations of this document see the [[#translations]] section.
| | HOW MAKE ANYTHING BE OUT |
| | | HOW EVERYTHING OUT |
| === Errata and Updates ===
| | HOW MAKE EVERYTHING OUT |
| Known errors and issues in this specification are corrected in [[hatom-issues-resolved|resolved]] and [[hatom-issues-closed|closed]] issues. Please check there before reporting [[hatom-issues|issues]].
| | HOW EVERYTHING BE OUT |
| | | HOW MAKE EVERYTHING BE OUT |
| The hAtom 0.2 update is currently under development and incorporates known errata corrections as well as the [[value-class-pattern]].
| | HOW UNIVERSE OUT |
| | | HOW MAKE UNIVERSE OUT |
| == Introduction ==
| | HOW UNIVERSE BE OUT |
| hAtom is a [[microformat]] for identifying semantic information in weblog posts and practically any other place [http://www.atomenabled.org/ Atom] may be used, such as news articles. hAtom content is easily added to most blogs by simple modifications to the blog's template definitions.
| | HOW MAKE UNIVERSE BE OUT |
| | | HOW THING THROUGH |
| {{rfc-2119-intro}}
| | HOW MAKE THING THROUGH |
| | | HOW THING BE THROUGH |
| == Example ==
| | HOW MAKE THING BE THROUGH |
| Here is a simple blog post example:
| | HOW ANYTHING THROUGH |
| | | HOW MAKE ANYTHING THROUGH |
| <source lang=html4strict>
| | HOW ANYTHING BE THROUGH |
| <article class="hentry">
| | HOW MAKE ANYTHING BE THROUGH |
| <h1 class="entry-title">Microformats are amazing</h1>
| | HOW EVERYTHING THROUGH |
| <p>Published by <span class="author vcard"><span class="fn">W. Developer</span></span>
| | HOW MAKE EVERYTHING THROUGH |
| on <time class="published" datetime="2013-06-13 12:00:00">13<sup>th</sup> June 2013</time>
| | HOW EVERYTHING BE THROUGH |
|
| | HOW MAKE EVERYTHING BE THROUGH |
| <p class="entry-summary">In which I extoll the virtues of using microformats.</p>
| | HOW UNIVERSE THROUGH |
|
| | HOW MAKE UNIVERSE THROUGH |
| <div class="entry-content">
| | HOW UNIVERSE BE THROUGH |
| <p>Blah blah blah</p>
| | HOW MAKE UNIVERSE BE THROUGH |
| </div>
| | HOW THING OUT |
| </article>
| | HOW MAKE THING OUT |
| </source>
| | HOW THING BE OUT |
| | | HOW MAKE THING BE OUT |
| === Get started ===
| | HOW ANYTHING OUT |
| The class '''<code>hentry</code>''' is a ''root class name'' that indicates the presence of an hAtom entry.
| | HOW MAKE ANYTHING OUT |
| | | HOW ANYTHING BE OUT |
| '''<code>entry-title</code>''', '''<code>author</code>''', '''<code>published</code>''', '''<code>entry-summary</code>''', '''<code>entry-content</code>''' and the other hAtom property classnames listed below define properties of the entry.
| | HOW MAKE ANYTHING BE OUT |
| | | HOW EVERYTHING OUT |
| == Format ==
| | HOW MAKE EVERYTHING OUT |
| === In General ===
| | HOW EVERYTHING BE OUT |
| The [http://atomenabled.org/developers/syndication/#person Atom Syndication Format] provides the conceptual basis for this microformat, with the following caveats:
| | HOW MAKE EVERYTHING BE OUT |
| | | HOW UNIVERSE OUT |
| * Atom provides a lot more functionality than we need for a "blog post" microformat, so we've taken the minimal number of elements needed.
| | HOW MAKE UNIVERSE OUT |
| * the "logical" model of hAtom is that of Atom. If there is a conflict, Atom should be taken as correct.
| | HOW UNIVERSE BE OUT |
| * the "physical" model of hAtom -- the actual writing of elements -- is a lot more varied than Atom provides for, due to the variety of ways weblogs are actually produced in the wild. The hAtom microformat provides a number of rules for "bridging the gap"
| | HOW MAKE UNIVERSE BE OUT |
| | |
| === Schema ===
| |
| Schema elements are based on the Atom nomenclature and follow the microformat pattern of prefixing a unique identifier (in this case, '<code>h</code>') on the outermost container elements -- the Feed or Entry. The parts of this microformat are based on analysis of many weblog, bulletin board and media posts and can be read [[blog-post-brainstorming#Discovered_Elements]].
| |
| | |
| The hAtom schema consists of the following:
| |
| | |
| * hfeed ('''<code>hfeed</code>'''). optional.
| |
| ** '''<code>feed category</code>'''. optional. keywords or phrases, using '''[[rel-tag]]'''.
| |
| ** [[hentry]] ('''<code>hentry</code>''').
| |
| *** '''<code>entry-title</code>'''. required. text.
| |
| *** '''<code>entry-content</code>'''. optional (see field description). text. [*]
| |
| *** '''<code>entry-summary</code>'''. optional. text.
| |
| *** '''<code>updated</code>'''. required using [[value-class-pattern#Date_and_time_parsing|value class pattern date and time]]. [*]
| |
| *** '''<code>published</code>'''. optional using [[value-class-pattern#Date_and_time_parsing|value class pattern date and time]].
| |
| *** '''<code>author</code>'''. required using '''[[hcard|hCard]]'''. [*]
| |
| *** '''<code>bookmark</code>''' (permalink). optional, using '''[[rel-bookmark]]'''.
| |
| *** tags. optional. keywords or phrases, using '''[[rel-tag]]'''.
| |
| | |
| [*] Some required elements have defaults if missing, see below.
| |
| | |
| === Field and Element Details ===
| |
| | |
| ===== Feed =====
| |
| * a Feed element is identified by the class name <code>hfeed</code>
| |
| * a Feed element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.1.1 Atom feed]
| |
| * the Feed element is optional and, if missing, is assumed to be the page
| |
| * hAtom documents {{may}} have multiple Feed elements
| |
| | |
| ===== Feed Category =====
| |
| * a Feed Category element is identified by [[rel-tag]]
| |
| * a Feed {{may}} have a Feed Category
| |
| * a Feed Category element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.2 Atom category] inside a [http://www.atomenabled.org/developers/syndication/#optionalFeedElements feed]
| |
| * Feed Category elements {{must}} appear inside a Feed element but not inside an Entry element
| |
| * the [[rel-tag]] <code>href</code> encodes the atom <code>category:term</code>; the link text defines the atom <code>category:label</code>
| |
| | |
| ===== Entry =====
| |
| * an Entry element is identified by class name <code>hentry</code>
| |
| * an Entry element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.1.2 Atom entry]
| |
| * any microformat content inside a <code><blockquote></code> or <code><q></code> element within the Entry should not be considered part of the Entry.
| |
| : ''This allows quoting other microformated data without worry of corrupting the model''
| |
| | |
| ===== Entry Category =====
| |
| * an Entry Category element is identified by [[rel-tag]]
| |
| * an Entry {{may}} have an Entry Category
| |
| * an Entry Category element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.2 Atom category] inside an [http://www.atomenabled.org/developers/syndication/#optionalEntryElements entry]
| |
| * the [[rel-tag]] <code>href</code> encodes the atom <code>category:term</code>; the link text defines the atom <code>category:label</code>
| |
| | |
| ===== Entry Title =====
| |
| * an Entry Title element is identified by the class name <code>entry-title</code>
| |
| * an Entry {{should}} have an Entry Title
| |
| * an Entry Title element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.14 Atom entry title]
| |
| * if the Entry Title is missing, use
| |
| ** the first <code><h#></code> element in the Entry, or
| |
| ** the <code><title></code> of the page, if there is no enclosing Feed element, or
| |
| ** assume it is the empty string
| |
| | |
| ===== Entry Content =====
| |
| * an Entry Content element is identified by class name <code>entry-content</code>
| |
| * an Entry {{should}} have Entry Content
| |
| * an Entry Content element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#atomContent Atom content]
| |
| * an Entry {{may}} have 0 or more Entry Content elements. The "logical Entry Content" of an Entry is the concatenation, in order of appearance, of all the Entry Contents within the Entry
| |
| : ''Many web logs split content into multiple sections with a "Read More" link and JavaScript tricks. This is also needed in cases where Entry Titles are coded in-line and are considered part of the content.''
| |
| * if the Entry Content is missing, assume it is the empty string
| |
| | |
| ===== Entry Summary =====
| |
| * an Entry Summary element is identified by class name <code>entry-summary</code>
| |
| * an Entry Summary element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.13 Atom summary]
| |
| * an Entry {{may}} have 0 or more Entry Summary elements. The "logical Entry Summary" of an Entry is the concatenation, in order of appearance, of all the Entry Summarys within the Entry
| |
| | |
| ===== Entry Permalink =====
| |
| * an Entry Permalink element is identified by [[rel-bookmark]]
| |
| * an Entry {{should}} have an Entry Permalink
| |
| * an Entry Permalink element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.7 Atom link in an entry]
| |
| * if the Entry Permalink is missing, use the URI of the page; if the Entry has an "id" attribute, add that as a fragment to the page URI to distinguish individual entries
| |
| | |
| ===== Entry Updated =====
| |
| * an Entry Updated element is identified by class name <code>updated</code>
| |
| * an Entry Updated element represents the concept of [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.15 Atom updated]
| |
| * an Entry {{should}} have an Entry Updated element
| |
| * use the [[value-class-pattern#Date_and_time_parsing|value class pattern date and time]] to encode the updated datetime
| |
| * if there is no Entry Updated element,
| |
| ** use the Entry Published element, if present
| |
| ** otherwise the page is invalid hAtom
| |
| | |
| ===== Entry Published =====
| |
| * an Entry Published element is identified by the class name <code>published</code>
| |
| * an Entry Published element represents the concept of [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.9 Atom published]
| |
| * use the [[value-class-pattern#Date_and_time_parsing|value class pattern date and time]] to encode the published datetime
| |
| | |
| ===== Entry Author =====
| |
| * an Entry Author element is represented by class name <code>author</code>
| |
| * an Entry Author element represents the concept of an [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.1 Atom author]
| |
| * an Entry Author element {{must}} be encoded in an [[hcard|hCard]]
| |
| * an Entry Author element {{should}} be encoded in an <code><address></code> element
| |
| * an Entry {{should}} have at least one Entry Author element
| |
| * an Entry {{may}} have more than one Entry Author elements
| |
| * if the Entry Author is missing
| |
| ** find the [[algorithm-nearest-in-parent|Nearest In Parent]] <code><address></code> element(s) with class name <code>author</code> and that is/are a valid [[hcard|hCard]]
| |
| ** otherwise the entry is invalid hAtom
| |
| | |
| === XMDP Profile ===
| |
| See [[hatom-profile]].
| |
| | |
| == Examples ==
| |
| | |
| See [[hatom-examples]].
| |
| | |
| === Examples in the wild ===
| |
| | |
| See [[hatom-examples-in-wild]].
| |
| | |
| == Implementations ==
| |
| | |
| See [[hatom-implementations]].
| |
| | |
| == Copyright ==
| |
| {{MicroFormatCopyrightStatement2005}}
| |
| * [[User:Tantek|Tantek]]: I release all my contributions to this specification into the public domain and I encourage the other authors to do so as well.
| |
| ** When all authors/editors have done so, we can remove the MicroFormatCopyrightStatement template reference and replace it with the MicroFormatPublicDomainContributionStatement.
| |
| | |
| == Patents ==
| |
| {{MicroFormatPatentStatement}}
| |
| | |
| == Semantic HTML Design Principles ==
| |
| <div id="Semantic_XHTML_Design_Principles">{{semantic-html-design-principles}}</div>
| |
| | |
| == References ==
| |
| === Normative References ===
| |
| * [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]
| |
| * [http://www.ietf.org/rfc/rfc4287 RFC4287: The Atom Syndication Format]
| |
| * [[hcard-parsing]]
| |
| * [[rfc-2119|RFC 2119]]
| |
| * [[iso-8601|ISO8601]]
| |
| | |
| === Informative References ===
| |
| * [http://www.atomenabled.org/ atomenabled.org]
| |
| | |
| == Further Reading ==
| |
| * [http://www.ablognotlimited.com/articles/getting-semantic-with-microformats-part-5-hatom/ Getting Semantic With Microformats, Part 5: hAtom] by [http://www.ablognotlimited.com/ Emily Lewis]
| |
| | |
| == Work in progress ==
| |
| 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 hAtom:
| |
| | |
| * [[blog-post-brainstorming|blog-post Brainstorming]]
| |
| | |
| === Version 0.1 ===
| |
| | |
| Version 0.1 was released 28 February 2006.
| |
| | |
| == Discussions ==
| |
| | |
| * See [http://www.technorati.com/cosmos/referer.html blogs discussing this page].
| |
| | |
| === Q&A ===
| |
| * If you have any questions about hAtom, check the [[hatom-faq|hAtom FAQ]], and if you don't find answers, add your questions!
| |
| | |
| === Issues ===
| |
| * Please add any issues with the specification to the separate [[hatom-issues|hAtom issues]] document.
| |
| | |
| ==See Also==
| |
| {{hatom-related-pages}}
| |
| * [[rel-enclosure]] - how to semantically reference enclosures (e.g. podcasts) in hAtom
| |
| * [[blog-post-brainstorming]]
| |
| * [[blog-post-formats]]
| |
| * [[blog-post-examples]]
| |
| * [[blog-post-feed-equivalence]]
| |
| * [[blog-description-format]] - how to describe a blog (as opposed to the individual entries, which is what we're doing here)
| |
| * [[xhtml-syndication]]
| |
| | |
| [[Category:Draft Specifications]]
| |
| [[Category:hAtom]]
| |
| | |
| == Translations ==
| |
| Read the hAtom draft specification in additional <span id="languages">languages</span>:
| |
| * [[hatom-fr|français]]
| |