[html5] r4069 - [] (0) Restructure how microdata vocabularies are defined; fix microdata to addr [...]
whatwg at whatwg.org
whatwg at whatwg.org
Sun Oct 4 01:50:11 PDT 2009
Author: ianh
Date: 2009-10-04 01:50:10 -0700 (Sun, 04 Oct 2009)
New Revision: 4069
Modified:
index
source
Log:
[] (0) Restructure how microdata vocabularies are defined; fix microdata to address some issues found while doing that; clean up the RDF conversion.
Modified: index
===================================================================
--- index 2009-10-04 03:53:09 UTC (rev 4068)
+++ index 2009-10-04 08:50:10 UTC (rev 4069)
@@ -44475,9 +44475,10 @@
<li>A <a href=#valid-reversed-dns-identifier>valid reversed DNS identifier</a>, or</li>
- <li>If the item is a <a href=#typed-item>typed item</a>: a string allowed in
- this situation according to the specification that defines the
- <a href=#relevant-type>relevant type</a> for the item, or</li>
+ <li>If the item is a <a href=#typed-item>typed item</a>: a <dfn id=defined-property-name>defined
+ property name</dfn> allowed in this situation according to the
+ specification that defines the <a href=#relevant-type>relevant type</a> for the
+ item, or</li>
<li>If the item is not a <a href=#typed-item>typed item</a>: a string that
contains no U+002E FULL STOP (.) characters and no U+003A COLON (:)
@@ -44811,9 +44812,6 @@
<h3 id=converting-html-to-other-formats><span class=secno>5.4 </span>Converting HTML to other formats</h3>
-
-
-
<h4 id=json><span class=secno>5.4.1 </span>JSON</h4>
<p>Given a list of nodes <var title="">nodes</var> in a
@@ -44998,25 +44996,6 @@
<dt>object <dd> <var title="">item</var>
</dl></li>
-<!--
- <li>
-
- <p>If the element is, or is a descendant of, an
- <code>address</code> element that has no <code>article</code>
- element ancestors, and the <span
- title="concept-item">item</span> has the type <code
- title="md-vcard">vcard</code>, generate the following
- triple:</p>
-
- <dl class="triple">
- <dt>subject <dd> <span>the document's current address</span>
- <dt>predicate <dd> <code title="">http://purl.org/dc/terms/creator</code>
- <dt>object <dd> <var title="">item</var>
- </dl>
-
- </li>
--->
-
</ol></li>
</ol><p>When the user agent is to <dfn id=generate-the-triples-for-an-item>generate the triples for an
@@ -45097,10 +45076,14 @@
<li><p>Let <var title="">predicate</var> have the same value
as <var title="">type</var>.</li>
- <li><p>If <var title="">predicate</var> does not end in a
+ <li><p>If <var title="">predicate</var> does not contain a
U+0023 NUMBER SIGN character (#), then append a U+0023 NUMBER
SIGN character (#) to <var title="">predicate</var>.</li>
+ <li><p>Append a U+003A COLON character (:) to <var title="">predicate</var>.</li> <!-- has to be something
+ not in /name/, so either "." or ":", so that a different
+ type/name combination couldn't generate the same string -->
+
<li><p>Append the value of <var title="">name</var> to <var title="">predicate</var>, with any characters in <var title="">name</var> that are not valid in the <ifragment>
production of the IRI syntax being %-escaped.</li>
@@ -45150,29 +45133,9 @@
<li><p>Append a <code title="">feed</code> element in the
<a href=#atom-namespace>Atom namespace</a> to <var title="">R</var>.</li>
-<!--
- <li>
+ <!-- <atom:author> is required either at the feed level (here) or
+ the entry level (below) but we don't provide it -->
- <p>For each element <var title="">candidate</var> that is, or is a
- descendant of, an <code>address</code> element that has no
- <code>article</code> element ancestors, and that is an <span
- title="concept-item">item</span> that has the type <code
- title="md-vcard">vcard</code>, if there is a property <var
- title="">property</var> named <code title="md-vcard-fn">fn</code>
- whose <span title="concept-item-corresponding">corresponding
- item</span> is <var title="">candidate</var>, and the <span
- title="concept-property-value">value</span> of <var
- title="">property</var> is not an <span
- title="concept-item">item</span>, then append an <code
- title="">author</code> element in the <span>Atom namespace</span>
- to the root element of <var title="">R</var> whose contents is a
- text node with its data set to the <span
- title="concept-property-value">value</span> of <var
- title="">property</var>.</p>
-
- </li>
--->
-
<li>
<p>If there is a <code><a href=#the-link-element>link</a></code> element whose <code title=attr-link-rel><a href=#attr-link-rel>rel</a></code> attribute's value includes the
@@ -45369,31 +45332,9 @@
</li>
-<!--
- <li>
+ <!-- <atom:author> is required either at the feed level (above)
+ or the entry level (here) but we don't provide it -->
- <p>For each element <var title="">candidate</var> that is, or is
- a descendant of, an <code>address</code> element whose nearest
- <code>article</code> element ancestor is <var
- title="">article</var>, and that is an <span
- title="concept-item">item</span> that has the type <code
- title="md-vcard">vcard</code>, if there is a property <var
- title="">property</var> named <code
- title="md-vcard-fn">fn</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">candidate</var>, and the <span
- title="concept-property-value">value</span> of <var
- title="">property</var> is not an <span
- title="concept-item">item</span>, then append an <code
- title="">author</code> element in the <span>Atom
- namespace</span> to <var title="">E</var> whose contents is a
- text node with its data set to the <span
- title="concept-property-value">value</span> of <var
- title="">property</var>.</p>
-
- </li>
--->
-
<li>
<p>Clone <var title="">article</var> and its descendants into an
Modified: source
===================================================================
--- source 2009-10-04 03:53:09 UTC (rev 4068)
+++ source 2009-10-04 08:50:10 UTC (rev 4069)
@@ -49729,9 +49729,10 @@
<li>A <span>valid reversed DNS identifier</span>, or</li>
- <li>If the item is a <span>typed item</span>: a string allowed in
- this situation according to the specification that defines the
- <span>relevant type</span> for the item, or</li>
+ <li>If the item is a <span>typed item</span>: a <dfn>defined
+ property name</dfn> allowed in this situation according to the
+ specification that defines the <span>relevant type</span> for the
+ item, or</li>
<li>If the item is not a <span>typed item</span>: a string that
contains no U+002E FULL STOP (.) characters and no U+003A COLON (:)
@@ -50128,29 +50129,21 @@
<!--END html5-->
-<!--START vocabs-->
+ <h3>Microdata vocabularies</h3>
- <h3>Predefined vocabularies</h3>
+<!--START vocabs-->
- <p>A number of <dfn title="predefined type">predefined types</dfn>
- exist, for describing common structures. Each such type has a set of
- <dfn title="predefined property name">predefined property
- names</dfn> that are used to describe data of that type. In
- addition, there are some <dfn title="predefined global property
- name">predefined global property names</dfn> that can be used for
- any item.</p>
-
-
-
<h4>vCard</h4>
- <p>An item with the <span>predefined type</span> <dfn
- title="md-vcard"><code>vcard</code></dfn> represents a person's or
- organization's contact information.</p>
+<!--START vCard-->
- <p>The following are the type's <span title="predefined property
- name">predefined property names</span>. They are based on the
+ <p>An item with the <span>item type</span> <dfn
+ title="md-vcard"><code>http://microformats.org/profile/hcard</code></dfn>
+ represents a person's or organization's contact information.</p>
+
+ <p>The following are the type's <span title="defined property
+ name">defined property names</span>. They are based on the
vocabulary defined in the vCard specification and its extensions,
where more information on how to interpret the values can be
found. <a href="#refsRFC2426">[RFC2426]</a> <a
@@ -50158,7 +50151,6 @@
<dl>
-
<dt><dfn title="md-vcard-fn"><code>fn</code></dfn></dt>
<dd>
@@ -50172,7 +50164,7 @@
<p>Exactly one property with the name <code
title="md-vcard-fn">fn</code> must be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50196,7 +50188,7 @@
<p>Except when one of the conditions given below applies, exactly
one property with the name <code title="md-vcard-n">n</code> must
be present within each <span title="concept-item">item</span> with
- the type <code title="md-vcard">vcard</code>.</p>
+ the type <code title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
<p>If one of the following conditions does apply, then the <code
title="md-vcard-n">n</code> may be omitted:</p>
@@ -50280,7 +50272,7 @@
<span title="concept-property-value">value</span> of the <code
title="md-vcard-n">n</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50299,7 +50291,7 @@
<span title="concept-property-value">value</span> of the <code
title="md-vcard-n">n</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50318,7 +50310,7 @@
forms the <span title="concept-property-value">value</span> of the
<code title="md-vcard-n">n</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50337,7 +50329,7 @@
forms the <span title="concept-property-value">value</span> of the
<code title="md-vcard-n">n</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50356,7 +50348,7 @@
forms the <span title="concept-property-value">value</span> of the
<code title="md-vcard-n">n</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50380,7 +50372,7 @@
<p>Any number of properties with the name <code
title="md-vcard-nickname">nickname</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50397,7 +50389,7 @@
<p>Any number of properties with the name <code
title="md-vcard-photo">photo</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50414,7 +50406,7 @@
<p>A single property with the name <code
title="md-vcard-bday">bday</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50445,7 +50437,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, then the <span>address type
+ title="md-vcard">http://microformats.org/profile/hcard</code>, then the <span>address type
strings</span> <code title="mv-vcard-type-adr-intl">intl</code>,
<code title="mv-vcard-type-adr-postal">postal</code>, <code
title="mv-vcard-type-adr-parcel">parcel</code>, and <code
@@ -50454,7 +50446,7 @@
<p>Any number of properties with the name <code
title="md-vcard-adr">adr</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50469,7 +50461,7 @@
is equal to one of the <span>address type strings</span>.</p>
<p>Within each <span title="concept-item">item</span> with the
- type <code title="md-vcard">vcard</code>, there must be no more
+ type <code title="md-vcard">http://microformats.org/profile/hcard</code>, there must be no more
than one <code title="md-vcard-adr">adr</code> property <span
title="concept-item">item</span> with a <code
title="md-vcard-adr-type">type</code> property whose value is
@@ -50481,7 +50473,7 @@
title="concept-property-value">value</span> of an <code
title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, but within each such <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, but within each such <code
title="md-vcard-adr">adr</code> property <span
title="concept-item">item</span> there must only be one <code
title="md-vcard-adr-type">type</code> property per distinct
@@ -50505,7 +50497,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50525,7 +50517,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50545,7 +50537,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50565,7 +50557,7 @@
<span title="concept-property-value">value</span> of an <code
title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50585,7 +50577,7 @@
title="concept-property-value">value</span> of an <code
title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50605,7 +50597,7 @@
<span title="concept-property-value">value</span> of an <code
title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50625,7 +50617,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-adr">adr</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50648,7 +50640,7 @@
forms the <span title="concept-property-value">value</span> of a
<code title="md-vcard-label">label</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, or if the <span
+ title="md-vcard">http://microformats.org/profile/hcard</code>, or if the <span
title="concept-property-value">value</span> of such a <code
title="md-vcard-label">label</code> property is text, then the
<span>address type strings</span> <code
@@ -50660,7 +50652,7 @@
<p>Any number of properties with the name <code
title="md-vcard-label">label</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50675,7 +50667,7 @@
is equal to one of the <span>address type strings</span>.</p>
<p>Within each <span title="concept-item">item</span> with the
- type <code title="md-vcard">vcard</code>, there must be no more
+ type <code title="md-vcard">http://microformats.org/profile/hcard</code>, there must be no more
than one <code title="md-vcard-label">label</code> property <span
title="concept-item">item</span> with a <code
title="md-vcard-label-type">type</code> property whose value is
@@ -50687,7 +50679,7 @@
title="concept-property-value">value</span> of a <code
title="md-vcard-label">label</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, but within each such <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, but within each such <code
title="md-vcard-label">label</code> property <span
title="concept-item">item</span> there must only be one <code
title="md-vcard-label-type">type</code> property per distinct
@@ -50711,7 +50703,7 @@
title="concept-property-value">value</span> of a <code
title="md-vcard-label">label</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50735,7 +50727,7 @@
forms the <span title="concept-property-value">value</span> of a
<code title="md-vcard-tel">tel</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, or if the <span
+ title="md-vcard">http://microformats.org/profile/hcard</code>, or if the <span
title="concept-property-value">value</span> of such a <code
title="md-vcard-tel">tel</code> property is text, then the <span
title="telephone type strings">telephone type string</span> <code
@@ -50744,7 +50736,7 @@
<p>Any number of properties with the name <code
title="md-vcard-tel">tel</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50759,7 +50751,7 @@
is equal to one of the <span>telephone type strings</span>.</p>
<p>Within each <span title="concept-item">item</span> with the
- type <code title="md-vcard">vcard</code>, there must be no more
+ type <code title="md-vcard">http://microformats.org/profile/hcard</code>, there must be no more
than one <code title="md-vcard-tel">tel</code> property <span
title="concept-item">item</span> with a <code
title="md-vcard-tel-type">type</code> property whose value is
@@ -50771,7 +50763,7 @@
title="concept-property-value">value</span> of a <code
title="md-vcard-tel">tel</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, but within each such <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, but within each such <code
title="md-vcard-tel">tel</code> property <span
title="concept-item">item</span> there must only be one <code
title="md-vcard-tel-type">type</code> property per distinct
@@ -50797,7 +50789,7 @@
title="concept-property-value">value</span> of a <code
title="md-vcard-tel">tel</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50819,7 +50811,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-email">email</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, or if the <span
+ title="md-vcard">http://microformats.org/profile/hcard</code>, or if the <span
title="concept-property-value">value</span> of such an <code
title="md-vcard-email">email</code> property is text, then the
<span title="e-mail type strings">e-mail type string</span> <code
@@ -50829,7 +50821,7 @@
<p>Any number of properties with the name <code
title="md-vcard-email">email</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50844,7 +50836,7 @@
is equal to one of the <span>e-mail type strings</span>.</p>
<p>Within each <span title="concept-item">item</span> with the
- type <code title="md-vcard">vcard</code>, there must be no more
+ type <code title="md-vcard">http://microformats.org/profile/hcard</code>, there must be no more
than one <code title="md-vcard-email">email</code> property <span
title="concept-item">item</span> with a <code
title="md-vcard-email-type">type</code> property whose value is
@@ -50856,7 +50848,7 @@
title="concept-property-value">value</span> of an <code
title="md-vcard-email">email</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, but within each such <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, but within each such <code
title="md-vcard-email">email</code> property <span
title="concept-item">item</span> there must only be one <code
title="md-vcard-email-type">type</code> property per distinct
@@ -50880,7 +50872,7 @@
title="concept-property-value">value</span> of an <code
title="md-vcard-email">email</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50898,7 +50890,7 @@
<p>Any number of properties with the name <code
title="md-vcard-mailer">mailer</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50932,7 +50924,7 @@
<p>Any number of properties with the name <code
title="md-vcard-tz">tz</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -50987,7 +50979,7 @@
<p>Any number of properties with the name <code
title="md-vcard-geo">geo</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51005,7 +50997,7 @@
<p>Any number of properties with the name <code
title="md-vcard-title">title</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51023,7 +51015,7 @@
<p>Any number of properties with the name <code
title="md-vcard-role">role</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51040,7 +51032,7 @@
<p>Any number of properties with the name <code
title="md-vcard-logo">logo</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51054,13 +51046,13 @@
<p>The <span title="concept-property-value">value</span> must be
either an <span title="concept-item">item</span> with the type
- <code title="md-vcard">vcard</code>, or an <span>absolute
+ <code title="md-vcard">http://microformats.org/profile/hcard</code>, or an <span>absolute
URL</span>, or text.</p>
<p>Any number of properties with the name <code
title="md-vcard-logo">logo</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51082,7 +51074,7 @@
<p>Any number of properties with the name <code
title="md-vcard-org">org</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51101,7 +51093,7 @@
that forms the <span title="concept-property-value">value</span>
of an <code title="md-vcard-org">org</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51120,7 +51112,7 @@
that forms the <span title="concept-property-value">value</span>
of the <code title="md-vcard-org">org</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51138,7 +51130,7 @@
<p>Any number of properties with the name <code
title="md-vcard-categories">categories</code> may be present
within each <span title="concept-item">item</span> with the type
- <code title="md-vcard">vcard</code>.</p>
+ <code title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51156,7 +51148,7 @@
<p>Any number of properties with the name <code
title="md-vcard-note">note</code> may be present
within each <span title="concept-item">item</span> with the type
- <code title="md-vcard">vcard</code>.</p>
+ <code title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51181,7 +51173,7 @@
<p>Any number of properties with the name <code
title="md-vcard-rev">rev</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51199,7 +51191,7 @@
<p>Any number of properties with the name <code
title="md-vcard-sort-string">sort-string</code> may be present
within each <span title="concept-item">item</span> with the type
- <code title="md-vcard">vcard</code>.</p>
+ <code title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51216,12 +51208,12 @@
<p>Any number of properties with the name <code
title="md-vcard-sound">sound</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
- <!-- UID not included - use "about" -->
+ <!-- UID not included - use "itemid" -->
<dt><dfn title="md-vcard-url"><code>url</code></dfn></dt>
@@ -51237,7 +51229,7 @@
<p>Any number of properties with the name <code
title="md-vcard-url">url</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51267,7 +51259,7 @@
<p>Any number of properties with the name <code
title="md-vcard-class">class</code> may be present
within each <span title="concept-item">item</span> with the type
- <code title="md-vcard">vcard</code>.</p>
+ <code title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51295,7 +51287,7 @@
forms the <span title="concept-property-value">value</span> of an
<code title="md-vcard-impp">impp</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, or if the <span
+ title="md-vcard">http://microformats.org/profile/hcard</code>, or if the <span
title="concept-property-value">value</span> of such an <code
title="md-vcard-impp">impp</code> property is an <span>absolute
URL</span>, then no <span>IMPP type strings</span> are
@@ -51304,7 +51296,7 @@
<p>Any number of properties with the name <code
title="md-vcard-impp">impp</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51319,7 +51311,7 @@
is equal to one of the <span>IMPP type strings</span>.</p>
<p>Within each <span title="concept-item">item</span> with the
- type <code title="md-vcard">vcard</code>, there must be no more
+ type <code title="md-vcard">http://microformats.org/profile/hcard</code>, there must be no more
than one <code title="md-vcard-impp">impp</code> property <span
title="concept-item">item</span> with a <code
title="md-vcard-impp-type">type</code> property whose value is
@@ -51331,7 +51323,7 @@
title="concept-property-value">value</span> of an <code
title="md-vcard-impp">impp</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>, but within each such <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, but within each such <code
title="md-vcard-impp">impp</code> property <span
title="concept-item">item</span> there must only be one <code
title="md-vcard-impp-type">type</code> property per distinct
@@ -51356,7 +51348,7 @@
title="concept-property-value">value</span> of an <code
title="md-vcard-impp">impp</code> property of an <span
title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p>
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p>
</dd>
@@ -51538,22 +51530,764 @@
</dl>
+ <h5>Conversion to vCard</h5>
+
+ <p>Given a list of nodes <var title="">nodes</var> in a
+ <code>Document</code>, a user agent must run the following algorithm
+ to <dfn title="extracting a vCard">extract any vCard data
+ represented by those nodes</dfn> (only the first vCard is
+ returned):</p>
+
+ <ol>
+
+ <li><p>If none of the nodes in <var title="">nodes</var> are <span
+ title="concept-item">items</span> with the <span>item type</span>
+ <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, then
+ there is no vCard. Abort the algorithm, returning nothing.</p></li>
+
+ <li><p>Let <var title="">node</var> be the first node in <var
+ title="">nodes</var> that is an <span
+ title="concept-item">item</span> with the <span>item type</span>
+ <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>.</p></li>
+
+ <li><p>Let <var title="">output</var> be an empty string.</p></li>
+
+ <li><p><span>Add a vCard line</span> with the type "<code
+ title="">BEGIN</code>" and the value "<code title="">VCARD</code>"
+ to <var title="">output</var>.</p></li>
+
+ <li><p><span>Add a vCard line</span> with the type "<code
+ title="">PROFILE</code>" and the value "<code
+ title="">VCARD</code>" to <var title="">output</var>.</p></li>
+
+ <li><p><span>Add a vCard line</span> with the type "<code
+ title="">VERSION</code>" and the value "<code title="">3.0</code>"
+ to <var title="">output</var>.</p></li>
+
+ <li><p><span>Add a vCard line</span> with the type "<code
+ title="">SOURCE</code>" and the result of <span>escaping the vCard
+ text string</span> that is the <span>the document's current
+ address</span> as the value to <var title="">output</var>.</p></li>
+
+ <li><p>If <span>the <code>title</code> element</span> is not null,
+ <span>add a vCard line</span> with the type "<code
+ title="">NAME</code>" and with the result of <span>escaping the
+ vCard text string</span> obtained from the <code>textContent</code>
+ of <span>the <code>title</code> element</span> as the value to <var
+ title="">output</var>.</p></li>
+
+ <li><p>If <var title="">node</var> has a <span>global
+ identifier</span>, <span>add a vCard line</span> with the type
+ "<code title="">UID</code>" and with the result of <span>escaping
+ the vCard text string</span> of that <span>global identifier</span>
+ as the value to <var title="">output</var>.</p></li>
+
+ <li><p>Let <var title="">first-n</var>, <var
+ title="">first-org</var>, and <var title="">first-fn</var> be
+ null.</p></li>
+
+ <li>
+
+ <p>For each element <var title="">element</var> that is <span
+ title="the properties of an item">a property of the item</span>
+ <var title="">node</var>: for each name <var title="">name</var>
+ in <var title="">element</var>'s <span>property names</span>, run
+ the following substeps:</p>
+
+ <ol>
+
+ <li><p>Let <var title="">parameters</var> be an empty set of
+ name-value pairs.</p></li>
+
+ <li>
+
+ <p>Run the appropriate set of substeps from the following
+ list. The steps will set a variable <var title="">value</var>,
+ which is used in the next step.</p>
+
+ <dl>
+
+ <dt>If the property's <span
+ title="concept-property-value">value</span> is an <span
+ title="concept-item">item</span> <var title="">subitem</var>
+ and <var title="">name</var> is <code
+ title="md-vcard-n">n</code></dt>
+
+ <dd>
+
+ <ol>
+
+ <li><p>If <var title="">first-n</var> is null, let <var
+ title="">first-n</var> be <var title="">element</var>.</p></li>
+
+ <li><p>Let <var title="">n1</var> be the <span
+ title="concept-property-value">value</span> of the first
+ property named <code
+ title="md-vcard-n-family-name">family-name</code> in <var
+ title="">subitem</var>, or the empty string if there is no
+ such property or the property's value is itself an <span
+ title="concept-item">item</span>.</p></li>
+
+ <li><p>Let <var title="">n2</var> be the <span
+ title="concept-property-value">value</span> of the first
+ property named <code
+ title="md-vcard-n-given-name">given-name</code> in <var
+ title="">subitem</var>, or the empty string if there is no
+ such property or the property's value is itself an <span
+ title="concept-item">item</span>.</p></li>
+
+ <li><p>Let <var title="">n3</var> be the <span
+ title="concept-property-value">value</span> of the first
+ property named <code
+ title="md-vcard-n-additional-name">additional-name</code> in
+ <var title="">subitem</var>, or the empty string if there is
+ no such property or the property's value is itself an <span
+ title="concept-item">item</span>.</p></li>
+
+ <li><p>Let <var title="">n4</var> be the <span
+ title="concept-property-value">value</span> of the first
+ property named <code
+ title="md-vcard-n-honorific-prefix">honorific-prefix</code>
+ in <var title="">subitem</var>, or the empty string if there
+ is no such property or the property's value is itself an
+ <span title="concept-item">item</span>.</p></li>
+
+ <li><p>Let <var title="">n5</var> be the <span
+ title="concept-property-value">value</span> of the first
+ property named <code
+ title="md-vcard-n-honorific-suffix">honorific-suffix</code>
+ in <var title="">subitem</var>, or the empty string if there
+ is no such property or the property's value is itself an
+ <span title="concept-item">item</span>.</p></li>
+
+ <li>
+
+ <p>Let <var title="">value</var> be the concatenation of the
+ following, in this order:</p>
+
+ <ol class="brief">
+ <li>The result of <span>escaping the vCard text string</span> <var title="">n1</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">n2</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">n3</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">n4</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">n5</var></li>
+ </ol>
+
+ </li>
+
+ </ol>
+
+ </dd>
+
+ <dt>If the property's <span
+ title="concept-property-value">value</span> is an <span
+ title="concept-item">item</span> <var title="">subitem</var>
+ and <var title="">name</var> is <code
+ title="md-vcard-adr">adr</code></dt>
+
+ <dd>
+
+ <ol>
+
+ <li><p>Let <var title="">value</var> be the empty
+ string.</p></li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting vCard subproperties</span> named <code
+ title="md-vcard-adr-post-office-box">post-office-box</code>
+ in <var title="">subitem</var>.</p>
+
+ <li>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting vCard subproperties</span> named <code
+ title="md-vcard-adr-extended-address">extended-address</code>
+ in <var title="">subitem</var>.</p>
+
+ <li>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting vCard subproperties</span> named <code
+ title="md-vcard-adr-street-address">street-address</code> in
+ <var title="">subitem</var>.</p>
+
+ <li>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting the first vCard subproperty</span> named
+ <code title="md-vcard-adr-locality">locality</code> in <var
+ title="">subitem</var>.</p>
+
+ <li>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting the first vCard subproperty</span> named
+ <code title="md-vcard-adr-region">region</code> in <var
+ title="">subitem</var>.</p>
+
+ <li>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting the first vCard subproperty</span> named
+ <code title="md-vcard-adr-postal-code">postal-code</code> in
+ <var title="">subitem</var>.</p>
+
+ <li>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting the first vCard subproperty</span> named
+ <code title="md-vcard-adr-country-name">country-name</code>
+ in <var title="">subitem</var>.</p>
+
+ <li><p>If there is a property named <code
+ title="md-vcard-adr-type">type</code> in <var
+ title="">subitem</var>, and the first such property has a
+ <span title="concept-property-value">value</span> that is not
+ an <span title="concept-item">item</span> and whose value
+ consists only of <span>alphanumeric ASCII characters</span>,
+ then add a parameter named "<code title="">TYPE</code>" whose
+ value is the <span
+ title="concept-property-value">value</span> of that property
+ to <var title="">parameters</var>.</p></li>
+
+ </ol>
+
+ </dd>
+
+ <dt>If the property's <span
+ title="concept-property-value">value</span> is an <span
+ title="concept-item">item</span> <var title="">subitem</var>
+ and <var title="">name</var> is <code
+ title="md-vcard-org">org</code></dt>
+
+ <dd>
+
+ <ol>
+
+ <li><p>If <var title="">first-org</var> is null, let <var
+ title="">first-org</var> be <var
+ title="">element</var>.</p></li>
+
+ <li><p>Let <var title="">value</var> be the empty
+ string.</p></li>
+
+ <li><p>Append to <var title="">value</var> the result of
+ <span>collecting the first vCard subproperty</span> named
+ <code
+ title="md-vcard-org-organization-name">organization-name</code>
+ in <var title="">subitem</var>.</p>
+
+ <li>
+
+ <p>For each property named <code
+ title="md-vcard-org-organization-unit">organization-unit</code>
+ in <var title="">subitem</var>, run the following steps:</p>
+
+ <ol>
+
+ <li><p>If the <span
+ title="concept-property-value">value</span> of the property
+ is an <span title="concept-item">item</span>, then skip
+ this property.</p></li>
+
+ <li><p>Append a U+003B SEMICOLON character (;) to <var
+ title="">value</var>.</p></li>
+
+ <li><p>Append the result of <span>escaping the vCard text
+ string</span> given by the <span
+ title="concept-property-value">value</span> of the property
+ to <var title="">value</var>.</p></li>
+
+ </ol>
+
+ </li>
+
+ </ol>
+
+ </dd>
+
+ <dt>If the property's <span
+ title="concept-property-value">value</span> is an <span
+ title="concept-item">item</span> <var title="">subitem</var>
+ with the <span>item type</span> <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>
+ and <var title="">name</var> is <code
+ title="md-vcard-agent">agent</code></dt>
+
+ <dd>
+
+ <ol>
+
+ <li><p>Let <var title="">value</var> be the result of
+ <span>escaping the vCard text string</span> obtained from
+ <span>extracting a vCard</span> from the element that
+ represents <var title="">subitem</var>.</p></li>
+
+ <li><p>Add a parameter named "<code title="">VALUE</code>"
+ whose value is "<code title="">VCARD</code>" to <var
+ title="">parameters</var>.</p></li>
+
+ </ol>
+
+ </dd>
+
+ <dt>If the property's <span
+ title="concept-property-value">value</span> is an <span
+ title="concept-item">item</span> and <var title="">name</var>
+ is none of the above</dt>
+
+ <dd>
+
+ <ol>
+
+ <li><p>Let <var title="">value</var> the result of
+ <span>collecting the first vCard subproperty</span> named
+ <code title="">value</code> in <var
+ title="">subitem</var>.</p>
+
+ <li><p>If there is a property named <code
+ title="">type</code> in <var title="">subitem</var>, and the
+ first such property has a <span
+ title="concept-property-value">value</span> that is not an
+ <span title="concept-item">item</span> and whose value
+ consists only of <span>alphanumeric ASCII characters</span>,
+ then add a parameter named "<code title="">TYPE</code>" whose
+ value is the <span
+ title="concept-property-value">value</span> of that property
+ to <var title="">parameters</var>.</p></li>
+
+ </ol>
+
+ </dd>
+
+ <dt>Otherwise (the property's <span
+ title="concept-property-value">value</span> is not an <span
+ title="concept-item">item</span>)</dt>
+
+ <dd>
+
+ <ol>
+
+ <li>
+
+ <p>If <var title="">name</var> is <code
+ title="md-vcard-fn">fn</code> and <var
+ title="">first-fn</var> is null, let <var
+ title="">first-fn</var> be <var
+ title="">element</var>.</p>
+
+ <p>Otherwise, if <var title="">name</var> is <code
+ title="md-vcard-org">org</code> and <var
+ title="">first-org</var> is null, let <var
+ title="">first-org</var> be <var
+ title="">element</var>.</p>
+
+ </li>
+
+ <li><p>Let <var title="">value</var> be the property's <span
+ title="concept-property-value">value</span>.</p></li>
+
+ <li><p>If <var title="">element</var> is one of the <span>URL
+ property elements</span>, add a parameter with the name "<code
+ title="">VALUE</code>" and the value "<code
+ title="">URI</code>" to <var
+ title="">parameters</var>.</p></li>
+
+ <li><p>Otherwise, if <var title="">element</var> is a
+ <code>time</code> element and the <var title="">value</var> is
+ a <span>valid date string</span>, add a parameter with the name
+ "<code title="">VALUE</code>" and the value "<code
+ title="">DATE</code>" to <var
+ title="">parameters</var>.</p></li>
+
+ <li><p>Otherwise, if <var title="">element</var> is a
+ <code>time</code> element and the <var title="">value</var> is
+ a <span>valid global date and time string</span>, add a
+ parameter with the name "<code title="">VALUE</code>" and the
+ value "<code title="">DATE-TIME</code>" to <var
+ title="">parameters</var>.</p></li>
+
+ <li><p>Prefix every U+005C REVERSE SOLIDUS character (\) in
+ <var title="">value</var> with another U+005C REVERSE SOLIDUS
+ character (\).</p></li>
+
+ <li><p>Prefix every U+002C COMMA character (,) in <var
+ title="">value</var> with a U+005C REVERSE SOLIDUS character
+ (\).</p></li>
+
+ <li><p>Unless <var title="">name</var> is <code
+ title="md-vcard-geo">geo</code>, prefix every U+003B SEMICOLON
+ character (;) in <var title="">value</var> with a U+005C
+ REVERSE SOLIDUS character (\).</p></li>
+
+ <li><p>Replace every U+000D CARRIAGE RETURN U+000A LINE FEED
+ character pair (CRLF) in <var title="">value</var> with a U+005C REVERSE
+ SOLIDUS character (\) followed by a U+006E LATIN SMALL LETTER
+ N.</p></li>
+
+ <li><p>Replace every remaining U+000D CARRIAGE RETURN (CR) or
+ U+000A LINE FEED (LF) character in <var title="">value</var>
+ with a U+005C REVERSE SOLIDUS character (\) followed by a U+006E
+ LATIN SMALL LETTER N.</p></li>
+
+ </ol>
+
+ </dd>
+
+ </dl>
+
+ </li>
+
+ <li>
+
+ <p><span>Add a vCard line</span> with the type <var
+ title="">name</var>, the parameters <var
+ title="">parameters</var>, and the value <var
+ title="">value</var> to <var title="">output</var>.</p>
+
+ </li>
+
+ </ol>
+
+ </li>
+
+ <li>
+
+ <p>If <var title="">first-n</var> is null, then run the following
+ substeps:</p>
+
+ <ol>
+
+ <li><p>If <var title="">first-fn</var> is also null, then skip
+ the remainder of these substeps.</p></li>
+
+ <li><p>If <var title="">first-fn</var> has a <span
+ title="concept-property-value">value</span> that is an <span
+ title="concept-item">item</span>, then skip the remainder of
+ these substeps.</p></li>
+
+ <li><p>If <var title="">first-org</var> is not null, and the
+ <span title="concept-property-value">value</span> of <var
+ title="">first-org</var> is not an <span
+ title="concept-item">item</span> and is equal to <var
+ title="">first-fn</var>, then <span>add a vCard line</span> with
+ the type "<code title="">N</code>" whose value is four U+003B
+ SEMICOLON characters ("<code title="">;;;;</code>") to <var
+ title="">output</var>. Then, skip the remainder of these
+ substeps.</p></li>
+
+ <li><p>If the <span title="space character">space
+ characters</span> in <var title="">first-fn</var>, if any, are
+ not all contiguous, then skip the remainder of these
+ substeps.</p></li>
+
+ <li><p><span title="split a string on spaces">Split <var
+ title="">first-fn</var> on spaces</span>, and let <var
+ title="">part one</var> be the first resulting token, and <var
+ title="">part two</var> be the second, if any, or the empty
+ string if there is no second token. (There cannot be three, given
+ the previous step.)</p></li>
+
+ <li>
+
+ <p>If the last character of <var title="">part one</var> is a
+ U+002C COMMA character (,), then remove that character from <var
+ title="">part one</var> and <span>add a vCard line</span> with
+ the type "<code title="">N</code>" whose value is the
+ concatenation of the following strings:</p>
+
+ <ol class="brief">
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part two</var></li>
+ <li>Three U+003B SEMICOLON characters (;)</li>
+ </ol>
+
+ <p>Then, skip the remainder of these substeps.</p>
+
+ </li>
+
+ <li>
+
+ <p>If <var title="">part two</var> is two Unicode code-points
+ long and its second character is a U+002E FULL STOP character
+ (.), then <span>add a vCard line</span> with the type "<code
+ title="">N</code>" whose value is the concatenation of the
+ following strings:</p>
+
+ <ol class="brief">
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> consisting of the first character of <var title="">part two</var></li>
+ <li>Three U+003B SEMICOLON characters (;)</li>
+ </ol>
+
+ <p>Then, skip the remainder of these substeps.</p>
+
+ </li>
+
+ <li>
+
+ <p>If <var title="">part two</var> is one Unicode code-point
+ long, then <span>add a vCard line</span> with the type "<code
+ title="">N</code>" whose value is the concatenation of the
+ following strings:</p>
+
+ <ol class="brief">
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part two</var></li>
+ <li>Three U+003B SEMICOLON characters (;)</li>
+ </ol>
+
+ <p>Then, skip the remainder of these substeps.</p>
+
+ </li>
+
+ <li>
+
+ <p><span>Add a vCard line</span> with the type "<code
+ title="">N</code>" whose value is the concatenation of the
+ following strings:</p>
+
+ <ol class="brief">
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part two</var></li>
+ <li>A U+003B SEMICOLON character (;)</li>
+ <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
+ <li>Three U+003B SEMICOLON characters (;)</li>
+ </ol>
+
+ </li>
+
+ </ol>
+
+ </li>
+
+ <li><p><span>Add a vCard line</span> with the type "<code
+ title="">END</code>" and the value "<code title="">VCARD</code>"
+ to <var title="">output</var>.</p></li>
+
+ </ol>
+
+ <p>When the above algorithm says that the user agent is to <dfn>add
+ a vCard line</dfn> consisting of a type <var title="">type</var>,
+ optionally some parameters, and a value <var title="">value</var> to
+ a string <var title="">output</var>, it must run the following
+ steps:</p>
+
+ <ol>
+
+ <li><p>Let <var title="">line</var> be an empty string.
+
+ <li><p>Append <var title="">type</var>, <span>converted to
+ ASCII uppercase</span>, to <var title="">line</var>.</p></li>
+
+ <li>
+
+ <p>If there are any parameters, then for each parameter, in the
+ order that they were added, run these substeps:</p>
+
+ <ol>
+
+ <li><p>Append a U+003B SEMICOLON character (;) to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Append the parameter's name to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Append a U+003D EQUALS SIGN character (=) to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Append the parameter's value to <var
+ title="">line</var>.</p></li>
+
+ </ol>
+
+ </li>
+
+ <li><p>Append a U+003A COLON character (:) to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Append <var title="">value</var> to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Let <var title="">maximum length</var> be 75.</p></li>
+
+ <li>
+
+ <p>If and while <var title="">line</var> is longer than <var
+ title="">maximum length</var> Unicode code points long, run the
+ following substeps:</p>
+
+ <ol>
+
+ <li><p>Append the first <var title="">maximum length</var>
+ Unicode code points of <var title="">line</var> to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Remove the first <var title="">maximum length</var>
+ Unicode code points from <var title="">line</var>.</p></li>
+
+ <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+000A LINE FEED character (LF) to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+0020 SPACE character to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Let <var title="">maximum length</var> be 74.</p></li>
+
+ </ol>
+
+ </li>
+
+ <li><p>Append (what remains of) <var title="">line</var> to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+000A LINE FEED character (LF) to <var
+ title="">output</var>.</p></li>
+
+ </ol>
+
+ <p>When the steps above require the user agent to obtain the result
+ of <dfn>collecting vCard subproperties</dfn> named <var
+ title="">subname</var> in <var title="">subitem</var>, the user
+ agent must run the following steps:</p>
+
+ <ol>
+
+ <li><p>Let <var title="">value</var> be the empty string.</p></li>
+
+ <li>
+
+ <p>For each property named <var title="">subname</var> in the item
+ <var title="">subitem</var>, run the following substeps:</p>
+
+ <ol>
+
+ <li><p>If the <span title="concept-property-value">value</span>
+ of the property is itself an <span
+ title="concept-item">item</span>, then skip this
+ property.</p></li>
+
+ <li><p>If this is not the first property named <var
+ title="">subname</var> in <var title="">subitem</var> (ignoring
+ any that were skipped by the previous step), then append a U+002C
+ COMMA character (,) to <var title="">value</var>.</p></li>
+
+ <li><p>Append the result of <span>escaping the vCard text
+ string</span> given by the <span
+ title="concept-property-value">value</span> of the property to
+ <var title="">value</var>.</p></li>
+
+ </ol>
+
+ </li>
+
+ <li><p>Return <var title="">value</var>.</p></li>
+
+ </ol>
+
+ <p>When the steps above require the user agent to obtain the result
+ of <dfn>collecting the first vCard subproperty</dfn> named <var
+ title="">subname</var> in <var title="">subitem</var>, the user
+ agent must run the following steps:</p>
+
+ <ol>
+
+ <li><p>If there are no properties named <var title="">subname</var>
+ in <var title="">subitem</var>, then abort these substeps,
+ returning the empty string.</p></li>
+
+ <li><p>If the <span title="concept-property-value">value</span> of
+ the first property named <var title="">subname</var> in <var
+ title="">subitem</var> is an <span
+ title="concept-item">item</span>, then abort these substeps,
+ returning the empty string.</p></li>
+
+ <li><p>Return the result of <span>escaping the vCard text
+ string</span> given by the <span
+ title="concept-property-value">value</span> of the first property
+ named <var title="">subname</var> in <var
+ title="">subitem</var>.</p></li>
+
+ </ol>
+
+ <p>When the above algorithms say the user agent is to <dfn
+ title="escaping the vCard text string">escape the vCard text
+ string</dfn> <var title="">value</var>, the user agent must use the
+ following steps:</p>
+
+ <ol>
+
+ <li><p>Prefix every U+005C REVERSE SOLIDUS character (\) in <var
+ title="">value</var> with another U+005C REVERSE SOLIDUS character
+ (\).</p></li>
+
+ <li><p>Prefix every U+002C COMMA character (,) in <var
+ title="">value</var> with a U+005C REVERSE SOLIDUS character
+ (\).</p></li>
+
+ <li><p>Prefix every U+003B SEMICOLON character (;) in <var
+ title="">value</var> with a U+005C REVERSE SOLIDUS character
+ (\).</p></li>
+
+ <li><p>Replace every U+000D CARRIAGE RETURN U+000A LINE FEED
+ character pair (CRLF) in <var title="">value</var> with a U+005C
+ REVERSE SOLIDUS character (\) followed by a U+006E LATIN SMALL
+ LETTER N.</p></li>
+
+ <li><p>Replace every remaining U+000D CARRIAGE RETURN (CR) or
+ U+000A LINE FEED (LF) character in <var title="">value</var> with a
+ U+005C REVERSE SOLIDUS character (\) followed by a U+006E LATIN
+ SMALL LETTER N.</p></li>
+
+ <li><p>Return the mutated <var title="">value</var>.</p></li>
+
+ </ol>
+
+ <p class="note">This algorithm can generate invalid vCard output, if
+ the input does not conform to the rules described for the <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>
+ <span>item type</span> and <span title="defined property
+ name">defined property names</span>.</p> <!-- of course since vcard
+ doesn't define error handling, this is somewhat problematic. -->
+
+
+
<h5>Examples</h5>
<div class="example">
- <p>Here is a long example <code title="md-vcard">vcard</code> for a
- fictional character called "Jack Bauer":</p>
+ <p>Here is a long example vCard for a fictional character called
+ "Jack Bauer":</p>
- <pre><section id="jack" item="vcard">
+ <pre><section id="jack" itemscope itemtype="http://microformats.org/profile/hcard">
<h1 itemprop="fn">Jack Bauer</h1>
<img itemprop="photo" alt="" src="jack-bauer.jpg">
- <p itemprop="org" item>
+ <p itemprop="org" itemscope>
<span itemprop="organization-name">Counter-Terrorist Unit</span>
(<span itemprop="organization-unit">Los Angeles Division</span>)
</p>
<p>
- <span itemprop="adr" item>
+ <span itemprop="adr" itemscope>
<span itemprop="street-address">10201 W. Pico Blvd.</span><br>
<span itemprop="locality">Los Angeles</span>,
<span itemprop="region">CA</span>
@@ -51564,9 +52298,9 @@
</p>
<h2>Assorted Contact Methods</h2>
<ul>
- <li itemprop="tel" item><span itemprop="value">+1 (310) 597
- 3781</span> <span itemprop="type">work</span>
- <meta itemprop="type" content="pref"></li>
+ <li itemprop="tel" itemscope><span itemprop="value">+1 (310)
+ 597 3781</span> <span itemprop="type">work</span> <meta
+ itemprop="type" content="pref"></li>
<li><a itemprop="url"
href="http://en.wikipedia.org/wiki/Jack_Bauer">I'm on
Wikipedia</a> so you can leave a message on my user talk
@@ -51575,23 +52309,24 @@
href="http://www.jackbauerfacts.com/">Jack Bauer Facts</a></li>
<li itemprop="email"><a
href="mailto:j.bauer at la.ctu.gov.invalid">j.bauer at la.ctu.gov.invalid</a></li>
- <li itemprop="tel" item><span itemprop="value">+1 (310) 555
+ <li itemprop="tel" itemscope><span itemprop="value">+1 (310) 555
3781</span> <span><meta itemprop="type" content="cell">mobile
phone</span></li>
</ul>
- <p itemprop="note">If I'm out in the field, you may be better
- off contacting <span itemprop="agent" item="vcard"><a
+ <p itemprop="note">If I'm out in the field, you may be better off
+ contacting <span itemprop="agent" itemscope
+ itemtype="http://microformats.org/profile/hcard"><a
itemprop="email" href="mailto:c.obrian at la.ctu.gov.invalid"><span
itemprop="fn">Chloe O'Brian</span></a></span> if it's about
work, or ask <span itemprop="agent">Tony Almeida</span> if
- you're interested in the CTU five-a-side football team we're
- trying to get going.</p>
+ you're interested in the CTU five-a-side football team we're trying
+ to get going.</p>
<ins datetime="2008-07-20T21:00:00+0100">
- <span itemprop="rev" item>
+ <span itemprop="rev" itemscope>
<meta itemprop="type" content="date-time">
<meta itemprop="value" content="2008-07-20T21:00:00+0100">
</span>
- <p itemprop="tel" item><strong>Update!</strong>
+ <p itemprop="tel" itemscope><strong>Update!</strong>
My new <span itemprop="type">home</span> phone number is
<span itemprop="value">01632 960 123</span>.
</ins>
@@ -51605,9 +52340,9 @@
<code>address</code> element) containing an address with two street
components:</p>
- <pre><address item=vcard>
+ <pre><address itemscope itemtype="http://microformats.org/profile/hcard">
<strong title="fn">Alfred Person</strong> <br>
- <span itemprop="adr" item>
+ <span itemprop="adr" itemscope>
<span itemprop="street-address">1600 Amphitheatre Parkway</span> <br>
<span itemprop="street-address">Building 43, Second Floor</span> <br>
<span itemprop="locality">Mountain View</span>,
@@ -51619,10 +52354,11 @@
<div class="example">
- <p>The <span title="md-vcard">vCard</span> vocabulary can be used
- to just mark up people's names:</p>
+ <p>The vCard vocabulary can be used to just mark up people's
+ names:</p>
- <pre><span itemscope itemtype=vcard><span itemprop=fn>George Washington</span></span></pre>
+ <pre><span itemscope itemtype="http://microformats.org/profile/hcard"
+><span itemprop=fn>George Washington</span></span></pre>
<p>This creates a single item with a single name-value pair, with
the name "fn" and the value "George Washington". This is defined to
@@ -51638,15 +52374,18 @@
</div>
+<!--END vCard-->
-
<h4>vEvent</h4>
- <p>An item with the <span>predefined type</span> <dfn
- title="md-vevent"><code>vevent</code></dfn> represents an event.</p>
+<!--START vEvent-->
- <p>The following are the type's <span title="predefined property
- name">predefined property names</span>. They are based on the
+ <p>An item with the <span>item type</span> <dfn
+ title="md-vevent"><code>http://microformats.org/profile/hcalendar</code></dfn>
+ represents an event.</p>
+
+ <p>The following are the type's <span title="defined property
+ name">defined property names</span>. They are based on the
vocabulary defined in the iCalendar specification, where more
information on how to interpret the values can be found. <a
href="#refsRFC2445">[RFC2445]</a></p>
@@ -51670,7 +52409,7 @@
<p>Any number of properties with the name <code
title="md-vevent-attach">attach</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51688,7 +52427,7 @@
<p>Any number of properties with the name <code
title="md-vevent-categories">categories</code> may be present
within each <span title="concept-item">item</span> with the type
- <code title="md-vevent">vevent</code>.</p>
+ <code title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51715,7 +52454,7 @@
<p>A single property with the name <code
title="md-vevent-class">class</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51732,7 +52471,7 @@
<p>Any number of properties with the name <code
title="md-vevent-comment">comment</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51749,7 +52488,7 @@
<p>A single property with the name <code
title="md-vevent-description">description</code> may be present
within each <span title="concept-item">item</span> with the type
- <code title="md-vevent">vevent</code>.</p>
+ <code title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51806,7 +52545,7 @@
<p>A single property with the name <code
title="md-vevent-geo">geo</code> may be present within each <span
title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51823,7 +52562,7 @@
<p>A single property with the name <code
title="md-vevent-location">location</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51843,7 +52582,7 @@
<p>Any number of properties with the name <code
title="md-vevent-resources">resources</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51866,7 +52605,7 @@
<p>A single property with the name <code
title="md-vevent-status">status</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51887,7 +52626,7 @@
<p>A single property with the name <code
title="md-vevent-summary">summary</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51901,8 +52640,9 @@
<p>If the property with the name <code
title="md-vevent-dtend">dtend</code> is present within an <span
title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code> that has a property with the name
- <code title="md-vevent-dtstart">dtstart</code> whose value is a
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>
+ that has a property with the name <code
+ title="md-vevent-dtstart">dtstart</code> whose value is a
<span>valid date string</span>, then the <span
title="concept-property-value">value</span> of the property with
the name <code title="md-vevent-dtend">dtend</code> must be text
@@ -51926,9 +52666,11 @@
<p>A single property with the name <code
title="md-vevent-dtend">dtend</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>, so long as that <code
- title="md-vevent">vevent</code> does not have a property with the
- name <code title="md-vevent-duration">duration</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>,
+ so long as that <code
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>
+ does not have a property with the name <code
+ title="md-vevent-duration">duration</code>.</p>
</dd>
@@ -51946,7 +52688,7 @@
<p>Exactly one property with the name <code
title="md-vevent-dtstart">dtstart</code> must be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -51966,9 +52708,11 @@
<p>A single property with the name <code
title="md-vevent-duration">duration</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>, so long as that <code
- title="md-vevent">vevent</code> does not have a property with the
- name <code title="md-vevent-dtend">dtend</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>,
+ so long as that <code
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>
+ does not have a property with the name <code
+ title="md-vevent-dtend">dtend</code>.</p>
</dd>
@@ -51991,7 +52735,7 @@
<p>A single property with the name <code
title="md-vevent-transp">transp</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52012,7 +52756,7 @@
<p>Any number of properties with the name <code
title="md-vevent-contact">contact</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52041,12 +52785,12 @@
<p>A single property with the name <code
title="md-vevent-url">url</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
- <!-- UID not included - use "about" -->
+ <!-- UID not included - use "itemid" -->
<dt><dfn title="md-vevent-exdate"><code>exdate</code></dfn></dt>
@@ -52063,7 +52807,7 @@
<p>Any number of properties with the name <code
title="md-vevent-exdate">exdate</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52082,7 +52826,7 @@
<p>Any number of properties with the name <code
title="md-vevent-exrule">exrule</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52115,7 +52859,7 @@
<p>Any number of properties with the name <code
title="md-vevent-rdate">rdate</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52134,7 +52878,7 @@
<p>Any number of properties with the name <code
title="md-vevent-rrule">rrule</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52152,7 +52896,7 @@
<p>A single property with the name <code
title="md-vevent-created">created</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52173,7 +52917,7 @@
<p>A single property with the name <code
title="md-vevent-last-modified">last-modified</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52190,7 +52934,7 @@
<p>A single property with the name <code
title="md-vevent-sequence">sequence</code> may be present within
each <span title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>.</p>
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>.</p>
</dd>
@@ -52258,16 +53002,263 @@
</ol>
+ <h5>Conversion to iCalendar</h5>
+
+ <p>Given a list of nodes <var title="">nodes</var> in a
+ <code>Document</code>, a user agent must run the following algorithm
+ to <dfn title="extracting vEvent data">extract any vEvent data
+ represented by those nodes</dfn>:</p>
+
+ <ol>
+
+ <li><p>If none of the nodes in <var title="">nodes</var> are <span
+ title="concept-item">items</span> with the type <code
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>,
+ then there is no vEvent data. Abort the algorithm, returning
+ nothing.</p></li>
+
+ <li><p>Let <var title="">output</var> be an empty string.</p></li>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">BEGIN</code>" and the value "<code
+ title="">VCALENDAR</code>" to <var title="">output</var>.</p></li>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">PRODID</code>" and the value equal to a
+ user-agent-specific string representing the user agent to <var
+ title="">output</var>.</p></li>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">VERSION</code>" and the value "<code title="">2.0</code>"
+ to <var title="">output</var>.</p></li>
+
+ <li>
+
+ <p>For each node <var title="">node</var> in <var
+ title="">nodes</var> that is an <span
+ title="concept-item">item</span> with the type <code
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>,
+ run the following steps:</p>
+
+ <ol>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">BEGIN</code>" and the value "<code
+ title="">VEVENT</code>" to <var title="">output</var>.</p></li>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">DTSTAMP</code>" and a value consisting of an iCalendar
+ DATE-TIME string representing the current date and time, with the
+ annotation "<code title="">VALUE=DATE-TIME</code>", to <var
+ title="">output</var>. <a
+ href="#refsRFC2445">[RFC2445]</a></p></li>
+
+ <li><p>If the <span title="concept-item">item</span> has a
+ <span>global identifier</span>, <span>add an iCalendar
+ line</span> with the type "<code title="">UID</code>" and that
+ <span>global identifier</span> as the value to <var
+ title="">output</var>.</p></li>
+
+ <li>
+
+ <p>For each element <var title="">element</var> that is <span
+ title="the properties of an item">a property of the item</span>
+ <var title="">node</var>: for each name <var title="">name</var>
+ in <var title="">element</var>'s <span>property names</span>,
+ run the appropriate set of substeps from the following list:</p>
+
+ <dl>
+
+ <dt>If the property's <span
+ title="concept-property-value">value</span> is an <span
+ title="concept-item">item</span></dt>
+
+ <dd>
+
+ <p>Skip the property.</p>
+
+ </dd>
+
+
+ <dt>If <var title="">element</var> is a <code>time</code>
+ element</dt>
+
+ <dd>
+
+ <p>Let <var title="">value</var> be the result of stripping
+ all U+002D HYPHEN-MINUS (-) and U+003A COLON (:) characters
+ from the property's <span
+ title="concept-property-value">value</span>.</p>
+
+ <p>If the property's <span
+ title="concept-property-value">value</span> is a <span>valid
+ date string</span> then <span>add an iCalendar line</span>
+ with the type <var title="">name</var> and the value <var
+ title="">value</var> to <var title="">output</var>, with the
+ annotation "<code title="">VALUE=DATE</code>".</p>
+
+ <p>Otherwise, if the property's <span
+ title="concept-property-value">value</span> is a <span>valid
+ global date and time string</span> then <span>add an iCalendar
+ line</span> with the type <var title="">name</var> and the
+ value <var title="">value</var> to <var title="">output</var>,
+ with the annotation "<code
+ title="">VALUE=DATE-TIME</code>".</p>
+
+ <p>Otherwise skip the property.</p>
+
+ </dd>
+
+
+ <dt>Otherwise</dt>
+
+ <dd>
+
+ <p><span>Add an iCalendar line</span> with the type <var
+ title="">name</var> and the value <var title="">value</var> to
+ <var title="">output</var>.</p>
+
+ </dd>
+
+ </dl>
+
+ </li>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">END</code>" and the value "<code title="">VEVENT</code>"
+ to <var title="">output</var>.</p></li>
+
+ </ol>
+
+ </li>
+
+ <li><p><span>Add an iCalendar line</span> with the type "<code
+ title="">END</code>" and the value "<code
+ title="">VCALENDAR</code>" to <var title="">output</var>.</p></li>
+
+ </ol>
+
+ <p>When the above algorithm says that the user agent is to <dfn>add
+ an iCalendar line</dfn> consisting of a type <var
+ title="">type</var>, a value <var title="">value</var>, and
+ optionally an annotation, to a string <var title="">output</var>, it
+ must run the following steps:</p>
+
+ <ol>
+
+ <li><p>Let <var title="">line</var> be an empty string.</p></li>
+
+ <li><p>Append <var title="">type</var>, <span>converted to
+ ASCII uppercase</span>, to <var title="">line</var>.</p></li>
+
+ <li>
+
+ <p>If there is an annotation:</p>
+
+ <ol>
+
+ <li><p>Append a U+003B SEMICOLON character (;) to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Append the annotation to <var
+ title="">line</var>.</p></li>
+
+ </ol>
+
+ </li>
+
+ <li><p>Append a U+003A COLON character (:) to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Prefix every U+005C REVERSE SOLIDUS character (\) in
+ <var title="">value</var> with another U+005C REVERSE SOLIDUS
+ character (\).</p></li>
+
+ <li><p>Prefix every U+002C COMMA character (,) in <var
+ title="">value</var> with a U+005C REVERSE SOLIDUS character
+ (\).</p></li>
+
+ <li><p>Prefix every U+003B SEMICOLON character (;) in <var
+ title="">value</var> with a U+005C REVERSE SOLIDUS character
+ (\).</p></li>
+
+ <li><p>Replace every U+000D CARRIAGE RETURN U+000A LINE FEED
+ character pair (CRLF) in <var title="">value</var> with a
+ U+005C REVERSE SOLIDUS character (\) followed by a U+006E
+ LATIN SMALL LETTER N.</p></li>
+
+ <li><p>Replace every remaining U+000D CARRIAGE RETURN (CR) or
+ U+000A LINE FEED (LF) character in <var title="">value</var>
+ with a U+005C REVERSE SOLIDUS character (\) followed by a
+ U+006E LATIN SMALL LETTER N.</p></li>
+
+ <li><p>Append <var title="">value</var> to <var
+ title="">line</var>.</p></li>
+
+ <li><p>Let <var title="">maximum length</var> be 75.</p></li>
+
+ <li>
+
+ <p>If and while <var title="">line</var> is longer than <var
+ title="">maximum length</var> Unicode code points long, run the
+ following substeps:</p>
+
+ <ol>
+
+ <li><p>Append the first <var title="">maximum length</var>
+ Unicode code points of <var title="">line</var> to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Remove the first <var title="">maximum length</var>
+ Unicode code points from <var title="">line</var>.</p></li>
+
+ <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+000A LINE FEED character (LF) to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+0020 SPACE character to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Let <var title="">maximum length</var> be 74.</p></li>
+
+ </ol>
+
+ </li>
+
+ <li><p>Append (what remains of) <var title="">line</var> to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
+ title="">output</var>.</p></li>
+
+ <li><p>Append a U+000A LINE FEED character (LF) to <var
+ title="">output</var>.</p></li>
+
+ </ol>
+
+ <p class="note">This algorithm can generate invalid iCalendar
+ output, if the input does not conform to the rules described for the
+ <code
+ title="md-vevent">http://microformats.org/profile/hcalendar</code>
+ <span>item type</span> and <span title="defined property
+ name">defined property names</span>.</p> <!-- of course since
+ iCalendar doesn't define error handling, this is somewhat
+ problematic. -->
+
+
+
<h5>Examples</h5>
<!-- get more from http://www.ietf.org/rfc/rfc2445.txt -->
<div class="example">
- <p>Here is an example of a page that uses the <code
- title="md-vevent">vevent</code> vocabulary to mark up an event:</p>
+ <p>Here is an example of a page that uses the vEvent vocabulary to
+ mark up an event:</p>
- <pre><body item="vevent">
+ <pre><body item="http://microformats.org/profile/hcalendar">
...
<h1 itemprop="summary">Bluesday Tuesday: Money Road</h1>
...
@@ -52289,7 +53280,7 @@
this:</p>
<pre>function getCalendar(node) {
- while (node && !node.item.contains('vevent'))
+ while (node && (!node.nodeScope || !node.itemType == 'http://microformats.org/profile/hcalendar'))
node = node.parentNode;
if (!node) {
alert('No event data found.');
@@ -52299,6 +53290,8 @@
var stampString = '' + stamp.getUTCFullYear() + (stamp.getUTCMonth() + 1) + stamp.getUTCDate() + 'T' +
stamp.getUTCHours() + stamp.getUTCMinutes() + stamp.getUTCSeconds() + 'Z';
var calendar = 'BEGIN:VCALENDAR\r\nPRODID:HTML\r\nVERSION:2.0\r\nBEGIN:VEVENT\r\nDTSTAMP:' + stampString + '\r\n';
+ if (node.itemId)
+ calendar += 'UID:' + node.itemId + '\r\n';
for (var propIndex = 0; propIndex < node.properties.length; propIndex += 1) {
var prop = node.properties[propIndex];
var value = prop.contents;
@@ -52315,8 +53308,8 @@
value = value.replace(/,/g, \\,');
value = value.replace(/\n/g, '\\n');
}
- for (var nameIndex = 0; nameIndex < prop.itemprop.length; nameIndex += 1) {
- var name = prop.itemprop[nameIndex];
+ for (var nameIndex = 0; nameIndex < prop.itemProp.length; nameIndex += 1) {
+ var name = prop.itemProp[nameIndex];
if (!name.match(':') && !name.match('.'))
calendar += name.toUpperCase() + parameters + ':' + value + '\r\n';
}
@@ -52328,7 +53321,7 @@
<p>The same page could offer some markup, such as the following,
for copy-and-pasting into blogs:</p>
- <pre><div item="vevent">
+ <pre><div itemscope itemtype="http://microformats.org/profile/hcalendar">
<p>I'm going to
<strong itemprop="summary">Bluesday Tuesday: Money Road</strong>,
<time itemprop="dtstart" datetime="2009-05-05T19:00:00Z">May 5th at 7pm</time>
@@ -52341,43 +53334,41 @@
</div>
+<!--END vEvent-->
-
<h4>Licensing works</h4>
-<!--
- <li><p>Otherwise, if <var title="">type</var> is <code
- title="md-work">work</code>, and <var title="">name</var> is
- equal to the string "<code title="md-work-title">title</code>",
- let <var title="">name</var> be the string "<code
- title="">http://purl.org/dc/elements/1.1/title</code>".</p></li>
- <li><p>Otherwise, if <var title="">type</var> is <code
- title="md-work">work</code>, and <var title="">name</var> is
- equal to the string "<code
- title="md-work-author">author</code>", let <var
- title="">name</var> be the string "<code
- title="">http://creativecommons.org/ns#attributionName</code>".</p></li>
+<!--START work-->
- <li><p>Otherwise, if <var title="">type</var> is <code
- title="md-work">work</code>, and <var title="">name</var> is
- equal to the string "<code
- title="md-work-license">license</code>", let <var
- title="">name</var> be the string "<code
- title="">http://www.w3.org/1999/xhtml/vocab#license</code>".</p></li>
--->
+ <p>An item with the <span>item type</span> <dfn
+ title="md-work"><code>http://n.whatwg.org/work</code></dfn>
+ represents a work (e.g. an article, an image, a video, a song,
+ etc). This type is primarily intended to allow authors to include
+ licensing information for works.</p>
- <p>An item with the <span>predefined type</span> <dfn
- title="md-work"><code>work</code></dfn> represents a work (e.g. an
- article, an image, a video, a song, etc). This type is primarily
- intended to allow authors to include licensing information for
- works.</p>
+ <p>The following are the type's <span title="defined property
+ name">defined property names</span>.</p>
- <p>The following are the type's <span title="predefined property
- name">predefined property names</span>.</p>
-
<dl>
+ <dt><dfn title="md-work-work"><code>work</code></dfn></dt>
+
+ <dd>
+
+ <p>Identifies the work being described.</p>
+
+ <p>The <span title="concept-property-value">value</span> must be
+ an <span>absolute URL</span>.</p>
+
+ <p>Exactly one property with the name <code
+ title="md-work-work">work</code> must be present within each <span
+ title="concept-item">item</span> with the type <code
+ title="md-work">http://n.whatwg.org/work</code>.</p>
+
+ </dd>
+
+
<dt><dfn title="md-work-title"><code>title</code></dfn></dt>
<dd>
@@ -52387,7 +53378,7 @@
<p>A single property with the name <code
title="md-work-title">title</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-work">work</code>.</p>
+ title="md-work">http://n.whatwg.org/work</code>.</p>
</dd>
@@ -52401,12 +53392,14 @@
<p>The <span title="concept-property-value">value</span> must be
either an <span title="concept-item">item</span> with the type
- <code title="md-vcard">vcard</code>, or text.</p>
+ <code
+ title="md-vcard">http://microformats.org/profile/hcard</code>, or
+ text.</p>
<p>Any number of properties with the name <code
title="md-work-author">author</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-work">work</code>.</p>
+ title="md-work">http://n.whatwg.org/work</code>.</p>
</dd>
@@ -52424,19 +53417,39 @@
<p>Any number of properties with the name <code
title="md-work-license">license</code> may be present within each
<span title="concept-item">item</span> with the type <code
- title="md-work">work</code>.</p>
+ title="md-work">http://n.whatwg.org/work</code>.</p>
</dd>
</dl>
- <p>In addition, exactly one property with the name <code
- title="md-about">about</code> must be present within each <span
- title="concept-item">item</span> with the type <code
- title="md-work">work</code>, giving the <span>URL</span> of the
- work.</p>
+ <h5>Conversion to RDF</h5>
+ <p>For the purposes of RDF processors, blank nodes that are the
+ subject of a triple with the predicate "<code
+ title="">http://www.w3.org/1999/xhtml/microdata#http%3A%2F%2Fn.whatwg.org%2Fwork%23%3Awork</code>"
+ and the object <var title="">s</var> must be treated as if the node
+ was identified by <var title="">s</var>.</p>
+
+ <p>For the purposes of RDF processors, the predicate "<code
+ title="">http://www.w3.org/1999/xhtml/microdata#http%3A%2F%2Fn.whatwg.org%2Fwork%23%3Atitle</code>"
+ must be considered equivalent to the predicate "<code
+ title="">http://purl.org/dc/elements/1.1/title</code>".
+
+ <p>For the purposes of RDF processors, the predicate "<code
+ title="">http://www.w3.org/1999/xhtml/microdata#http%3A%2F%2Fn.whatwg.org%2Fwork%23%3Aauthor</code>"
+ must be considered equivalent to the predicate "<code
+ title="">http://creativecommons.org/ns#attributionName</code>".
+
+ <p>For the purposes of RDF processors, the predicate "<code
+ title="">http://www.w3.org/1999/xhtml/microdata#http%3A%2F%2Fn.whatwg.org%2Fwork%23%3Alicense</code>"
+ must be considered equivalent to the predicate "<code
+ title="">http://www.w3.org/1999/xhtml/vocab#license</code>".
+
+
+
+
<h5>Examples</h5>
<div class="example">
@@ -52460,58 +53473,17 @@
</div>
+ <!--END work-->
+ <!--END vocabs-->
+
+
<!--START html5-->
<div class="impl">
<h3>Converting HTML to other formats</h3>
- <!--END html5-->
-
- <p>A generic API upon which the vocabulary-specific conversions
- defined below (vCard, iCalendar) can be built will need to provide
- the following information when given a <code>Document</code> (or
- equivalent):</p>
-
- <ul>
-
- <li><span>The document's current address</span>.</li>
-
- <li>The <code>textContent</code> of <span>the <code>title</code>
- element</span>, if any.</li>
-
- <li>The list of <span>top-level microdata items</span>.</li>
-
- <li>For each <span title="concept-item">item</span>, the list of
- properties that have that <span title="concept-item">item</span> as
- their <span title="concept-item-corresponding">corresponding
- item</span>.</li>
-
- <li>For each property, its <span title="property
- names">name</span>.</li>
-
- <li>For each property, its <span
- title="concept-property-value">value</span> (which might be a
- further <span title="concept-item">item</span>).</li>
-
- <li>For each property, if its <span
- title="concept-property-value">value</span> is not itself an <span
- title="concept-item">item</span>, whether the element is a
- <code>time</code> element, a <span title="URL property
- elements">URL property element</span>, or another element.</li>
-
-<!--(RDF only currently)
- <li>For each property, the <span>language</span> of the element
- that adds the property.</li>
--->
-
- </ul>
-
- <!--START html5-->
- <!--END vocabs-->
-
-
<h4>JSON</h4>
<p>Given a list of nodes <var title="">nodes</var> in a
@@ -52752,25 +53724,6 @@
</li>
-<!--
- <li>
-
- <p>If the element is, or is a descendant of, an
- <code>address</code> element that has no <code>article</code>
- element ancestors, and the <span
- title="concept-item">item</span> has the type <code
- title="md-vcard">vcard</code>, generate the following
- triple:</p>
-
- <dl class="triple">
- <dt>subject <dd> <span>the document's current address</span>
- <dt>predicate <dd> <code title="">http://purl.org/dc/terms/creator</code>
- <dt>object <dd> <var title="">item</var>
- </dl>
-
- </li>
--->
-
</ol>
</li>
@@ -52881,10 +53834,15 @@
<li><p>Let <var title="">predicate</var> have the same value
as <var title="">type</var>.</p></li>
- <li><p>If <var title="">predicate</var> does not end in a
+ <li><p>If <var title="">predicate</var> does not contain a
U+0023 NUMBER SIGN character (#), then append a U+0023 NUMBER
SIGN character (#) to <var title="">predicate</var>.</p></li>
+ <li><p>Append a U+003A COLON character (:) to <var
+ title="">predicate</var>.</p></li> <!-- has to be something
+ not in /name/, so either "." or ":", so that a different
+ type/name combination couldn't generate the same string -->
+
<li><p>Append the value of <var title="">name</var> to <var
title="">predicate</var>, with any characters in <var
title="">name</var> that are not valid in the <ifragment>
@@ -52932,1001 +53890,7 @@
</ol>
-<!--END html5-->
-<!--START vocabs-->
- <h4>vCard</h4>
-
- <p>Given a list of nodes <var title="">nodes</var> in a
- <code>Document</code>, a user agent must run the following algorithm
- to <dfn title="extracting a vCard">extract any <code
- title="md-vcard">vcard</code> data represented by those nodes</dfn>
- (only the first vCard is returned):</p>
-
- <ol>
-
- <li><p>If none of the nodes in <var title="">nodes</var> are <span
- title="concept-item">items</span> with the type <code
- title="md-vcard">vcard</code>, then there is no vCard. Abort the
- algorithm, returning nothing.</p></li>
-
- <li><p>Let <var title="">node</var> be the first node in <var
- title="">nodes</var> that is an <span
- title="concept-item">item</span> with the type <code
- title="md-vcard">vcard</code>.</p></li>
-
- <li><p>Let <var title="">output</var> be an empty string.</p></li>
-
- <li><p><span>Add a vCard line</span> with the type "<code
- title="">BEGIN</code>" and the value "<code title="">VCARD</code>"
- to <var title="">output</var>.</p></li>
-
- <li><p><span>Add a vCard line</span> with the type "<code
- title="">PROFILE</code>" and the value "<code title="">VCARD</code>"
- to <var title="">output</var>.</p></li>
-
- <li><p><span>Add a vCard line</span> with the type "<code
- title="">VERSION</code>" and the value "<code title="">3.0</code>"
- to <var title="">output</var>.</p></li>
-
- <li><p><span>Add a vCard line</span> with the type "<code
- title="">SOURCE</code>" and the result of <span>escaping the vCard
- text string</span> that is the <span>the document's current
- address</span> as the value to <var title="">output</var>.</p></li>
-
- <li><p>If <span>the <code>title</code> element</span> is not null,
- <span>add a vCard line</span> with the type "<code
- title="">NAME</code>" and with the result of <span>escaping the
- vCard text string</span> obtained from the <code>textContent</code>
- of <span>the <code>title</code> element</span> as the value to <var
- title="">output</var>.</p></li>
-
- <li><p>If there is a property named <code
- title="md-about">about</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var> and the element of the first such property
- is a <span title="URL property elements">URL property
- element</span> and has a <span
- title="concept-property-value">value</span> that is not an <span
- title="concept-item">item</span>, <span>add a vCard line</span>
- with the type "<code title="">UID</code>" and with the result of
- <span>escaping the vCard text string</span> that is that property's
- <span title="concept-property-value">value</span> as the value to
- <var title="">output</var>.</p></li>
-
- <li>
-
- <p>For each element <var title="">element</var> that has one or
- more <span>property names</span> and whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var>: for each name <var title="">name</var>
- in <var title="">element</var>'s <span>property names</span>, run
- the following substeps:</p>
-
- <ol>
-
- <li><p>If <var title="">name</var> is equal to the string "<code
- title="md-about">about</code>", skip this name.</p></li>
-
- <li><p>Let <var title="">parameters</var> be an empty set of
- name-value pairs.</p></li>
-
- <li>
-
- <p>Run the appropriate set of substeps from the following
- list. The steps will set a variable <var title="">value</var>,
- which is used in the next step.</p>
-
- <dl>
-
- <dt>If the property's <span
- title="concept-property-value">value</span> is an <span
- title="concept-item">item</span> <var title="">subitem</var>
- and <var title="">name</var> is <code
- title="md-vcard-n">n</code></dt>
-
- <dd>
-
- <ol>
-
- <li><p>Let <var title="">n1</var> be the <span
- title="concept-property-value">value</span> of the first
- property named <code
- title="md-vcard-n-family-name">family-name</code> in <var
- title="">subitem</var>, or the empty string if there is no
- such property or the property's value is itself an <span
- title="concept-item">item</span>.</p></li>
-
- <li><p>Let <var title="">n2</var> be the <span
- title="concept-property-value">value</span> of the first
- property named <code
- title="md-vcard-n-given-name">given-name</code> in <var
- title="">subitem</var>, or the empty string if there is no
- such property or the property's value is itself an <span
- title="concept-item">item</span>.</p></li>
-
- <li><p>Let <var title="">n3</var> be the <span
- title="concept-property-value">value</span> of the first
- property named <code
- title="md-vcard-n-additional-name">additional-name</code> in
- <var title="">subitem</var>, or the empty string if there is
- no such property or the property's value is itself an <span
- title="concept-item">item</span>.</p></li>
-
- <li><p>Let <var title="">n4</var> be the <span
- title="concept-property-value">value</span> of the first
- property named <code
- title="md-vcard-n-honorific-prefix">honorific-prefix</code>
- in <var title="">subitem</var>, or the empty string if there
- is no such property or the property's value is itself an
- <span title="concept-item">item</span>.</p></li>
-
- <li><p>Let <var title="">n5</var> be the <span
- title="concept-property-value">value</span> of the first
- property named <code
- title="md-vcard-n-honorific-suffix">honorific-suffix</code>
- in <var title="">subitem</var>, or the empty string if there
- is no such property or the property's value is itself an
- <span title="concept-item">item</span>.</p></li>
-
- <li>
-
- <p>Let <var title="">value</var> be the concatenation of the
- following, in this order:</p>
-
- <ol class="brief">
- <li>The result of <span>escaping the vCard text string</span> <var title="">n1</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">n2</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">n3</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">n4</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">n5</var></li>
- </ol>
-
- </li>
-
- </ol>
-
- </dd>
-
- <dt>If the property's <span
- title="concept-property-value">value</span> is an <span
- title="concept-item">item</span> <var title="">subitem</var>
- and <var title="">name</var> is <code
- title="md-vcard-adr">adr</code></dt>
-
- <dd>
-
- <ol>
-
- <li><p>Let <var title="">value</var> be the empty
- string.</p></li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting vCard subproperties</span> named <code
- title="md-vcard-adr-post-office-box">post-office-box</code>
- in <var title="">subitem</var>.</p>
-
- <li>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting vCard subproperties</span> named <code
- title="md-vcard-adr-extended-address">extended-address</code>
- in <var title="">subitem</var>.</p>
-
- <li>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting vCard subproperties</span> named <code
- title="md-vcard-adr-street-address">street-address</code> in
- <var title="">subitem</var>.</p>
-
- <li>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting the first vCard subproperty</span> named
- <code title="md-vcard-adr-locality">locality</code> in <var
- title="">subitem</var>.</p>
-
- <li>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting the first vCard subproperty</span> named
- <code title="md-vcard-adr-region">region</code> in <var
- title="">subitem</var>.</p>
-
- <li>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting the first vCard subproperty</span> named
- <code title="md-vcard-adr-postal-code">postal-code</code> in
- <var title="">subitem</var>.</p>
-
- <li>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting the first vCard subproperty</span> named
- <code title="md-vcard-adr-country-name">country-name</code>
- in <var title="">subitem</var>.</p>
-
- <li><p>If there is a property named <code
- title="md-vcard-adr-type">type</code> in <var
- title="">subitem</var>, and the first such property has a
- <span title="concept-property-value">value</span> that is not
- an <span title="concept-item">item</span> and whose value
- consists only of <span>alphanumeric ASCII characters</span>,
- then add a parameter named "<code title="">TYPE</code>" whose
- value is the <span
- title="concept-property-value">value</span> of that property
- to <var title="">parameters</var>.</p></li>
-
- </ol>
-
- </dd>
-
- <dt>If the property's <span
- title="concept-property-value">value</span> is an <span
- title="concept-item">item</span> <var title="">subitem</var>
- and <var title="">name</var> is <code
- title="md-vcard-org">org</code></dt>
-
- <dd>
-
- <ol>
-
- <li><p>Let <var title="">value</var> be the empty
- string.</p></li>
-
- <li><p>Append to <var title="">value</var> the result of
- <span>collecting the first vCard subproperty</span> named
- <code
- title="md-vcard-org-organization-name">organization-name</code>
- in <var title="">subitem</var>.</p>
-
- <li>
-
- <p>For each property named <code
- title="md-vcard-org-organization-unit">organization-unit</code>
- in <var title="">subitem</var>, run the following steps:</p>
-
- <ol>
-
- <li><p>If the <span
- title="concept-property-value">value</span> of the property
- is an <span title="concept-item">item</span>, then skip
- this property.</p></li>
-
- <li><p>Append a U+003B SEMICOLON character (;) to <var
- title="">value</var>.</p></li>
-
- <li><p>Append the result of <span>escaping the vCard text
- string</span> given by the <span
- title="concept-property-value">value</span> of the property
- to <var title="">value</var>.</p></li>
-
- </ol>
-
- </li>
-
- </ol>
-
- </dd>
-
- <dt>If the property's <span
- title="concept-property-value">value</span> is an <span
- title="concept-item">item</span> <var title="">subitem</var>
- with the type <code title="md-vcard">vcard</code> and <var
- title="">name</var> is <code
- title="md-vcard-agent">agent</code></dt>
-
- <dd>
-
- <ol>
-
- <li><p>Let <var title="">value</var> be the result of
- <span>escaping the vCard text string</span> obtained from
- <span>extracting a vCard</span> from the element that
- represents <var title="">subitem</var>.</p></li>
-
- <li><p>Add a parameter named "<code title="">VALUE</code>"
- whose value is "<code title="">VCARD</code>" to <var
- title="">parameters</var>.</p></li>
-
- </ol>
-
- </dd>
-
- <dt>If the property's <span
- title="concept-property-value">value</span> is an <span
- title="concept-item">item</span> and <var title="">name</var>
- is none of the above</dt>
-
- <dd>
-
- <ol>
-
- <li><p>Let <var title="">value</var> the result of
- <span>collecting the first vCard subproperty</span> named
- <code title="">value</code> in <var
- title="">subitem</var>.</p>
-
- <li><p>If there is a property named <code
- title="">type</code> in <var title="">subitem</var>, and the
- first such property has a <span
- title="concept-property-value">value</span> that is not an
- <span title="concept-item">item</span> and whose value
- consists only of <span>alphanumeric ASCII characters</span>,
- then add a parameter named "<code title="">TYPE</code>" whose
- value is the <span
- title="concept-property-value">value</span> of that property
- to <var title="">parameters</var>.</p></li>
-
- </ol>
-
- </dd>
-
- <dt>Otherwise (the property's <span
- title="concept-property-value">value</span> is not an <span
- title="concept-item">item</span>)</dt>
-
- <dd>
-
- <ol>
-
- <li><p>Let <var title="">value</var> be the property's <span
- title="concept-property-value">value</span>.</p></li>
-
- <li><p>If <var title="">element</var> is one of the <span>URL
- property elements</span>, add a parameter with the name "<code
- title="">VALUE</code>" and the value "<code
- title="">URI</code>" to <var
- title="">parameters</var>.</p></li>
-
- <li><p>Otherwise, if <var title="">element</var> is a
- <code>time</code> element and the <var title="">value</var> is
- a <span>valid date string</span>, add a parameter with the name
- "<code title="">VALUE</code>" and the value "<code
- title="">DATE</code>" to <var
- title="">parameters</var>.</p></li>
-
- <li><p>Otherwise, if <var title="">element</var> is a
- <code>time</code> element and the <var title="">value</var> is
- a <span>valid global date and time string</span>, add a
- parameter with the name "<code title="">VALUE</code>" and the
- value "<code title="">DATE-TIME</code>" to <var
- title="">parameters</var>.</p></li>
-
- <li><p>Prefix every U+005C REVERSE SOLIDUS character (\) in
- <var title="">value</var> with another U+005C REVERSE SOLIDUS
- character (\).</p></li>
-
- <li><p>Prefix every U+002C COMMA character (,) in <var
- title="">value</var> with a U+005C REVERSE SOLIDUS character
- (\).</p></li>
-
- <li><p>Unless <var title="">name</var> is <code
- title="md-vcard-geo">geo</code>, prefix every U+003B SEMICOLON
- character (;) in <var title="">value</var> with a U+005C
- REVERSE SOLIDUS character (\).</p></li>
-
- <li><p>Replace every U+000D CARRIAGE RETURN U+000A LINE FEED
- character pair (CRLF) in <var title="">value</var> with a U+005C REVERSE
- SOLIDUS character (\) followed by a U+006E LATIN SMALL LETTER
- N.</p></li>
-
- <li><p>Replace every remaining U+000D CARRIAGE RETURN (CR) or
- U+000A LINE FEED (LF) character in <var title="">value</var>
- with a U+005C REVERSE SOLIDUS character (\) followed by a U+006E
- LATIN SMALL LETTER N.</p></li>
-
- </ol>
-
- </dd>
-
- </dl>
-
- </li>
-
- <li>
-
- <p><span>Add a vCard line</span> with the type <var
- title="">name</var>, the parameters <var
- title="">parameters</var>, and the value <var
- title="">value</var> to <var title="">output</var>.</p>
-
- </li>
-
- </ol>
-
- </li>
-
- <li>
-
- <p>If there is no property named <code title="md-vcard-n">n</code>
- whose <span title="concept-item-corresponding">corresponding
- item</span> is <var title="">node</var>, then run the following
- substeps:</p>
-
- <ol>
-
- <li><p>If there is no property named <code
- title="md-vcard-fn">fn</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var>, then skip the remainder of these
- substeps.</p></li>
-
- <li><p>If the first property named <code
- title="md-vcard-fn">fn</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var> has a <span
- title="concept-property-value">value</span> that is an <span
- title="concept-item">item</span>, then skip the remainder of
- these substeps.</p></li>
-
- <li><p>Let <var title="">fn</var> be the <span
- title="concept-property-value">value</span> of the first property
- named <code title="md-vcard-fn">fn</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var>.</p></li>
-
- <li><p>If there is a property named <code
- title="md-vcard-org">org</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var>, and the <span
- title="concept-property-value">value</span> of the first such
- property is equal to <var title="">fn</var> (and is not an <span
- title="concept-item">item</span>), then <span>add a vCard
- line</span> with the type "<code title="">N</code>" whose value
- is four U+003B SEMICOLON characters ("<code
- title="">;;;;</code>") to <var title="">output</var>. Then, skip
- the remainder of these substeps.</p></li>
-
- <li><p>If the <span title="space character">space
- characters</span> in <var title="">fn</var>, if any, are not all
- contiguous, then skip the remainder of these substeps.</p></li>
-
- <li><p><span title="split a string on spaces">Split <var
- title="">fn</var> on spaces</span>, and let <var title="">part
- one</var> be the first resulting token, and <var title="">part
- two</var> be the second, if any, or the empty string if there is
- no second token. (There cannot be three, given the previous
- step.)</p></li>
-
- <li>
-
- <p>If the last character of <var title="">part one</var> is a
- U+002C COMMA character (,), then remove that character from <var
- title="">part one</var> and <span>add a vCard line</span> with
- the type "<code title="">N</code>" whose value is the
- concatenation of the following strings:</p>
-
- <ol class="brief">
- <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">part two</var></li>
- <li>Three U+003B SEMICOLON characters (;)</li>
- </ol>
-
- <p>Then, skip the remainder of these substeps.</p>
-
- </li>
-
- <li>
-
- <p>If <var title="">part two</var> is two Unicode code-points
- long and its second character is a U+002E FULL STOP character
- (.), then <span>add a vCard line</span> with the type "<code
- title="">N</code>" whose value is the concatenation of the
- following strings:</p>
-
- <ol class="brief">
- <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> consisting of the first character of <var title="">part two</var></li>
- <li>Three U+003B SEMICOLON characters (;)</li>
- </ol>
-
- <p>Then, skip the remainder of these substeps.</p>
-
- </li>
-
- <li>
-
- <p>If <var title="">part two</var> is one Unicode code-point
- long, then <span>add a vCard line</span> with the type "<code
- title="">N</code>" whose value is the concatenation of the
- following strings:</p>
-
- <ol class="brief">
- <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">part two</var></li>
- <li>Three U+003B SEMICOLON characters (;)</li>
- </ol>
-
- <p>Then, skip the remainder of these substeps.</p>
-
- </li>
-
- <li>
-
- <p><span>Add a vCard line</span> with the type "<code
- title="">N</code>" whose value is the concatenation of the
- following strings:</p>
-
- <ol class="brief">
- <li>The result of <span>escaping the vCard text string</span> <var title="">part two</var></li>
- <li>A U+003B SEMICOLON character (;)</li>
- <li>The result of <span>escaping the vCard text string</span> <var title="">part one</var></li>
- <li>Three U+003B SEMICOLON characters (;)</li>
- </ol>
-
- </li>
-
- </ol>
-
- </li>
-
- <li><p><span>Add a vCard line</span> with the type "<code
- title="">END</code>" and the value "<code title="">VCARD</code>"
- to <var title="">output</var>.</p></li>
-
- </ol>
-
- <p>When the above algorithm says that the user agent is to <dfn>add
- a vCard line</dfn> consisting of a type <var title="">type</var>,
- optionally some parameters, and a value <var title="">value</var> to
- a string <var title="">output</var>, it must run the following
- steps:</p>
-
- <ol>
-
- <li><p>Let <var title="">line</var> be an empty string.
-
- <li><p>Append <var title="">type</var>, <span>converted to
- ASCII uppercase</span>, to <var title="">line</var>.</p></li>
-
- <li>
-
- <p>If there are any parameters, then for each parameter, in the
- order that they were added, run these substeps:</p>
-
- <ol>
-
- <li><p>Append a U+003B SEMICOLON character (;) to <var
- title="">line</var>.</p></li>
-
- <li><p>Append the parameter's name to <var
- title="">line</var>.</p></li>
-
- <li><p>Append a U+003D EQUALS SIGN character (=) to <var
- title="">line</var>.</p></li>
-
- <li><p>Append the parameter's value to <var
- title="">line</var>.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Append a U+003A COLON character (:) to <var
- title="">line</var>.</p></li>
-
- <li><p>Append <var title="">value</var> to <var
- title="">line</var>.</p></li>
-
- <li><p>Let <var title="">maximum length</var> be 75.</p></li>
-
- <li>
-
- <p>If and while <var title="">line</var> is longer than <var
- title="">maximum length</var> Unicode code points long, run the
- following substeps:</p>
-
- <ol>
-
- <li><p>Append the first <var title="">maximum length</var>
- Unicode code points of <var title="">line</var> to <var
- title="">output</var>.</p></li>
-
- <li><p>Remove the first <var title="">maximum length</var>
- Unicode code points from <var title="">line</var>.</p></li>
-
- <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+000A LINE FEED character (LF) to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+0020 SPACE character to <var
- title="">output</var>.</p></li>
-
- <li><p>Let <var title="">maximum length</var> be 74.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Append (what remains of) <var title="">line</var> to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+000A LINE FEED character (LF) to <var
- title="">output</var>.</p></li>
-
- </ol>
-
- <p>When the steps above require the user agent to obtain the result
- of <dfn>collecting vCard subproperties</dfn> named <var
- title="">subname</var> in <var title="">subitem</var>, the user
- agent must run the following steps:</p>
-
- <ol>
-
- <li><p>Let <var title="">value</var> be the empty string.</p></li>
-
- <li>
-
- <p>For each property named <var title="">subname</var> in the item
- <var title="">subitem</var>, run the following substeps:</p>
-
- <ol>
-
- <li><p>If the <span title="concept-property-value">value</span>
- of the property is itself an <span
- title="concept-item">item</span>, then skip this
- property.</p></li>
-
- <li><p>If this is not the first property named <var
- title="">subname</var> in <var title="">subitem</var> (ignoring
- any that were skipped by the previous step), then append a U+002C
- COMMA character (,) to <var title="">value</var>.</p></li>
-
- <li><p>Append the result of <span>escaping the vCard text
- string</span> given by the <span
- title="concept-property-value">value</span> of the property to
- <var title="">value</var>.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Return <var title="">value</var>.</p></li>
-
- </ol>
-
- <p>When the steps above require the user agent to obtain the result
- of <dfn>collecting the first vCard subproperty</dfn> named <var
- title="">subname</var> in <var title="">subitem</var>, the user
- agent must run the following steps:</p>
-
- <ol>
-
- <li><p>If there are no properties named <var title="">subname</var>
- in <var title="">subitem</var>, then abort these substeps,
- returning the empty string.</p></li>
-
- <li><p>If the <span title="concept-property-value">value</span> of
- the first property named <var title="">subname</var> in <var
- title="">subitem</var> is an <span
- title="concept-item">item</span>, then abort these substeps,
- returning the empty string.</p></li>
-
- <li><p>Return the result of <span>escaping the vCard text
- string</span> given by the <span
- title="concept-property-value">value</span> of the first property
- named <var title="">subname</var> in <var
- title="">subitem</var>.</p></li>
-
- </ol>
-
- <p>When the above algorithms say the user agent is to <dfn
- title="escaping the vCard text string">escape the vCard text
- string</dfn> <var title="">value</var>, the user agent must use the
- following steps:</p>
-
- <ol>
-
- <li><p>Prefix every U+005C REVERSE SOLIDUS character (\) in <var
- title="">value</var> with another U+005C REVERSE SOLIDUS character
- (\).</p></li>
-
- <li><p>Prefix every U+002C COMMA character (,) in <var
- title="">value</var> with a U+005C REVERSE SOLIDUS character
- (\).</p></li>
-
- <li><p>Prefix every U+003B SEMICOLON character (;) in <var
- title="">value</var> with a U+005C REVERSE SOLIDUS character
- (\).</p></li>
-
- <li><p>Replace every U+000D CARRIAGE RETURN U+000A LINE FEED
- character pair (CRLF) in <var title="">value</var> with a U+005C
- REVERSE SOLIDUS character (\) followed by a U+006E LATIN SMALL
- LETTER N.</p></li>
-
- <li><p>Replace every remaining U+000D CARRIAGE RETURN (CR) or
- U+000A LINE FEED (LF) character in <var title="">value</var> with a
- U+005C REVERSE SOLIDUS character (\) followed by a U+006E LATIN
- SMALL LETTER N.</p></li>
-
- <li><p>Return the mutated <var title="">value</var>.</p></li>
-
- </ol>
-
- <p class="note">This algorithm can generate invalid vCard output, if
- the input does not conform to the rules described for the <code
- title="md-vcard">vcard</code> <span>predefined type</span> and <span
- title="predefined property name">predefined property
- names</span>.</p> <!-- of course since vcard doesn't define error
- handling, this is somewhat problematic. -->
-
-
- <h4>iCalendar</h4>
-
- <p>Given a list of nodes <var title="">nodes</var> in a
- <code>Document</code>, a user agent must run the following algorithm
- to <dfn title="extracting vEvent data">extract any <code
- title="md-vevent">vevent</code> data represented by those
- nodes</dfn>:</p>
-
- <ol>
-
- <li><p>If none of the nodes in <var title="">nodes</var> are <span
- title="concept-item">items</span> with the type <code
- title="md-vevent">vevent</code>, then there is no vEvent
- data. Abort the algorithm, returning nothing.</p></li>
-
- <li><p>Let <var title="">output</var> be an empty string.</p></li>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">BEGIN</code>" and the value "<code title="">VCALENDAR</code>"
- to <var title="">output</var>.</p></li>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">PRODID</code>" and the value equal to a
- user-agent-specific string representing the user agent to <var
- title="">output</var>.</p></li>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">VERSION</code>" and the value "<code title="">2.0</code>"
- to <var title="">output</var>.</p></li>
-
- <li>
-
- <p>For each node <var title="">node</var> in <var
- title="">nodes</var> that is an <span
- title="concept-item">item</span> with the type <code
- title="md-vevent">vevent</code>, run the following steps:</p>
-
- <ol>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">BEGIN</code>" and the value "<code title="">VEVENT</code>"
- to <var title="">output</var>.</p></li>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">DTSTAMP</code>" and a value consisting of an iCalendar
- DATE-TIME string representing the current date and time, with the
- annotation "<code title="">VALUE=DATE-TIME</code>", to <var
- title="">output</var>. <a
- href="#refsRFC2445">[RFC2445]</a></p></li>
-
- <li><p>If there is a property named <code
- title="md-about">about</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var> and the element of the first such property
- is a <span title="URL property elements">URL property
- element</span> and has a <span
- title="concept-property-value">value</span> that is not an <span
- title="concept-item">item</span>, <span>add an iCalendar line</span>
- with the type "<code title="">UID</code>" and that property's
- <span title="concept-property-value">value</span> as the value to
- <var title="">output</var>.</p></li>
-
- <li>
-
- <p>For each element <var title="">element</var> that has one or
- more <span>property names</span> and whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">node</var>: for each name <var title="">name</var>
- in <var title="">element</var>'s <span>property names</span>, run
- the appropriate set of substeps from the following list:</p>
-
- <dl>
-
- <dt>If <var title="">name</var> is equal to the string "<code
- title="md-about">about</code>"</dt>
-
- <dt>If the property's <span
- title="concept-property-value">value</span> is an <span
- title="concept-item">item</span></dt>
-
- <dd>
-
- <p>Skip the property.</p>
-
- </dd>
-
-
- <dt>If <var title="">element</var> is a <code>time</code>
- element</dt>
-
- <dd>
-
- <p>Let <var title="">value</var> be the result of stripping
- all U+002D HYPHEN-MINUS (-) and U+003A COLON (:) characters
- from the property's <span
- title="concept-property-value">value</span>.</p>
-
- <p>If the property's <span
- title="concept-property-value">value</span> is a <span>valid
- date string</span> then <span>add an iCalendar line</span>
- with the type <var title="">name</var> and the value <var
- title="">value</var> to <var title="">output</var>, with the
- annotation "<code title="">VALUE=DATE</code>".</p>
-
- <p>Otherwise, if the property's <span
- title="concept-property-value">value</span> is a <span>valid
- global date and time string</span> then <span>add an iCalendar
- line</span> with the type <var title="">name</var> and the
- value <var title="">value</var> to <var title="">output</var>,
- with the annotation "<code
- title="">VALUE=DATE-TIME</code>".</p>
-
- <p>Otherwise skip the property.</p>
-
- </dd>
-
-
- <dt>Otherwise</dt>
-
- <dd>
-
- <p><span>Add an iCalendar line</span> with the type <var
- title="">name</var> and the value <var title="">value</var> to
- <var title="">output</var>.</p>
-
- </dd>
-
- </dl>
-
- </li>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">END</code>" and the value "<code title="">VEVENT</code>"
- to <var title="">output</var>.</p></li>
-
- </ol>
-
- </li>
-
- <li><p><span>Add an iCalendar line</span> with the type "<code
- title="">END</code>" and the value "<code
- title="">VCALENDAR</code>" to <var title="">output</var>.</p></li>
-
- </ol>
-
- <p>When the above algorithm says that the user agent is to <dfn>add
- an iCalendar line</dfn> consisting of a type <var
- title="">type</var>, a value <var title="">value</var>, and
- optionally an annotation, to a string <var title="">output</var>, it
- must run the following steps:</p>
-
- <ol>
-
- <li><p>Let <var title="">line</var> be an empty string.</p></li>
-
- <li><p>Append <var title="">type</var>, <span>converted to
- ASCII uppercase</span>, to <var title="">line</var>.</p></li>
-
- <li>
-
- <p>If there is an annotation:</p>
-
- <ol>
-
- <li><p>Append a U+003B SEMICOLON character (;) to <var
- title="">line</var>.</p></li>
-
- <li><p>Append the annotation to <var
- title="">line</var>.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Append a U+003A COLON character (:) to <var
- title="">line</var>.</p></li>
-
- <li><p>Prefix every U+005C REVERSE SOLIDUS character (\) in
- <var title="">value</var> with another U+005C REVERSE SOLIDUS
- character (\).</p></li>
-
- <li><p>Prefix every U+002C COMMA character (,) in <var
- title="">value</var> with a U+005C REVERSE SOLIDUS character
- (\).</p></li>
-
- <li><p>Prefix every U+003B SEMICOLON character (;) in <var
- title="">value</var> with a U+005C REVERSE SOLIDUS character
- (\).</p></li>
-
- <li><p>Replace every U+000D CARRIAGE RETURN U+000A LINE FEED
- character pair (CRLF) in <var title="">value</var> with a
- U+005C REVERSE SOLIDUS character (\) followed by a U+006E
- LATIN SMALL LETTER N.</p></li>
-
- <li><p>Replace every remaining U+000D CARRIAGE RETURN (CR) or
- U+000A LINE FEED (LF) character in <var title="">value</var>
- with a U+005C REVERSE SOLIDUS character (\) followed by a
- U+006E LATIN SMALL LETTER N.</p></li>
-
- <li><p>Append <var title="">value</var> to <var
- title="">line</var>.</p></li>
-
- <li><p>Let <var title="">maximum length</var> be 75.</p></li>
-
- <li>
-
- <p>If and while <var title="">line</var> is longer than <var
- title="">maximum length</var> Unicode code points long, run the
- following substeps:</p>
-
- <ol>
-
- <li><p>Append the first <var title="">maximum length</var>
- Unicode code points of <var title="">line</var> to <var
- title="">output</var>.</p></li>
-
- <li><p>Remove the first <var title="">maximum length</var>
- Unicode code points from <var title="">line</var>.</p></li>
-
- <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+000A LINE FEED character (LF) to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+0020 SPACE character to <var
- title="">output</var>.</p></li>
-
- <li><p>Let <var title="">maximum length</var> be 74.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Append (what remains of) <var title="">line</var> to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+000D CARRIAGE RETURN character (CR) to <var
- title="">output</var>.</p></li>
-
- <li><p>Append a U+000A LINE FEED character (LF) to <var
- title="">output</var>.</p></li>
-
- </ol>
-
- <p class="note">This algorithm can generate invalid iCalendar
- output, if the input does not conform to the rules described for the
- <code title="md-vevent">vevent</code> <span>predefined type</span>
- and <span title="predefined property name">predefined property
- names</span>.</p> <!-- of course since icalendar doesn't define
- error handling, this is somewhat problematic. -->
-
-<!--END vocabs-->
-<!--START html5-->
-
<h4>Atom</h4>
<p>Given a <code>Document</code> <var title="">source</var>, a user
@@ -53948,29 +53912,9 @@
<li><p>Append a <code title="">feed</code> element in the
<span>Atom namespace</span> to <var title="">R</var>.</p></li>
-<!--
- <li>
+ <!-- <atom:author> is required either at the feed level (here) or
+ the entry level (below) but we don't provide it -->
- <p>For each element <var title="">candidate</var> that is, or is a
- descendant of, an <code>address</code> element that has no
- <code>article</code> element ancestors, and that is an <span
- title="concept-item">item</span> that has the type <code
- title="md-vcard">vcard</code>, if there is a property <var
- title="">property</var> named <code title="md-vcard-fn">fn</code>
- whose <span title="concept-item-corresponding">corresponding
- item</span> is <var title="">candidate</var>, and the <span
- title="concept-property-value">value</span> of <var
- title="">property</var> is not an <span
- title="concept-item">item</span>, then append an <code
- title="">author</code> element in the <span>Atom namespace</span>
- to the root element of <var title="">R</var> whose contents is a
- text node with its data set to the <span
- title="concept-property-value">value</span> of <var
- title="">property</var>.</p>
-
- </li>
--->
-
<li>
<p>If there is a <code>link</code> element whose <code
@@ -54199,31 +54143,9 @@
</li>
-<!--
- <li>
+ <!-- <atom:author> is required either at the feed level (above)
+ or the entry level (here) but we don't provide it -->
- <p>For each element <var title="">candidate</var> that is, or is
- a descendant of, an <code>address</code> element whose nearest
- <code>article</code> element ancestor is <var
- title="">article</var>, and that is an <span
- title="concept-item">item</span> that has the type <code
- title="md-vcard">vcard</code>, if there is a property <var
- title="">property</var> named <code
- title="md-vcard-fn">fn</code> whose <span
- title="concept-item-corresponding">corresponding item</span> is
- <var title="">candidate</var>, and the <span
- title="concept-property-value">value</span> of <var
- title="">property</var> is not an <span
- title="concept-item">item</span>, then append an <code
- title="">author</code> element in the <span>Atom
- namespace</span> to <var title="">E</var> whose contents is a
- text node with its data set to the <span
- title="concept-property-value">value</span> of <var
- title="">property</var>.</p>
-
- </li>
--->
-
<li>
<p>Clone <var title="">article</var> and its descendants into an
More information about the Commit-Watchers
mailing list