- From: poot <cvsmail@w3.org>
- Date: Wed, 7 Apr 2010 09:00:34 +0900 (JST)
- To: public-html-diffs@w3.org
microdata; hixie: Be less draconian in the error handling for loops in
microdata. Be clearer about whether %s get double-escaped in the RDF
conversion. (whatwg r4980)
http://dev.w3.org/cvsweb/html5/md/Overview.html?r1=1.60&r2=1.61&f=h
http://html5.org/tools/web-apps-tracker?from=4979&to=4980
===================================================================
RCS file: /sources/public/html5/md/Overview.html,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -d -r1.60 -r1.61
--- Overview.html 4 Apr 2010 22:43:29 -0000 1.60
+++ Overview.html 7 Apr 2010 00:00:21 -0000 1.61
@@ -285,7 +285,7 @@
<h1>HTML Microdata</h1>
<h2 class="no-num no-toc" id="generatedID"></h2>
- <h2 class="no-num no-toc" id="editor-s-draft-4-april-2010">Editor's Draft 4 April 2010</h2>
+ <h2 class="no-num no-toc" id="editor-s-draft-6-april-2010">Editor's Draft 6 April 2010</h2>
<dl><dt>Latest Published Version:</dt>
<dd><a href="http://www.w3.org/TR/microdata/">http://www.w3.org/TR/microdata/</a></dd>
<dt>Latest Editor's Draft:</dt>
@@ -381,7 +381,7 @@
specification's progress along the W3C Recommendation
track.
- This specification is the 4 April 2010 Editor's Draft.
+ This specification is the 6 April 2010 Editor's Draft.
</p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>The contents of this specification are also part of <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/">a
specification</a> published by the <a href="http://www.whatwg.org/">WHATWG</a>, which is available under a
license that permits reuse of the specification text.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- context and rationale (required) --><!-- (this text is from the RDFa+HTML spec --><p>This specification is an extension to the HTML5 language. All
@@ -1195,18 +1195,14 @@
properties of an item">the properties of the item</a> defined by
the element <var title="">root</var> is an empty list; otherwise, it
is the returned list.<p>To <dfn id="crawl-the-properties">crawl the properties</dfn> of an element <var title="">root</var> with a list <var title="">memory</var>, the user
- agent must run the following steps:<ol><li><p>If <var title="">root</var> is in <var title="">memory</var>, then the algorithm fails; abort these
- steps.</li>
-
- <li><p><a href="#collect-all-the-elements-in-the-item">Collect all the elements in the item</a> <var title="">root</var>, and let <var title="">results</var> be the
- result.</li>
-
- <li><p>If <var title="">root</var> is in <var title="">results</var>, then the algorithm fails; abort these
+ agent must run the following steps. These steps either fail or
+ return a list with a count of errors. The count of errors is used as
+ part of the authoring conformance criteria below.<ol><li><p>If <var title="">root</var> is in <var title="">memory</var>, then the algorithm fails; abort these
steps.</li>
- <li><p>If any elements are listed in <var title="">results</var>
- more than once, then the algorithm fails; abort these
- steps.</li>
+ <li><p><a href="#collect-all-the-elements-in-the-item">Collect all the elements in the item</a> <var title="">root</var>; let <var title="">results</var> be the
+ resulting list of elements, and <var title="">errors</var> be the
+ resulting count of errors.</li>
<li><p>Remove any elements from <var title="">results</var> that do
not have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute
@@ -1218,16 +1214,19 @@
<li><p>For each element in <var title="">results</var> that has an
<code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute specified,
- <a href="#crawl-the-properties">crawl the properties</a> of the element, with <var title="">new memory</var> as the memory. If this fails, then this
- instance of the algorithm fails as well; abort these steps. (If it
- succeeds, the return value is discarded.)</li>
+ <a href="#crawl-the-properties">crawl the properties</a> of the element, with <var title="">new memory</var> as the memory. If this fails, then remove
+ the element from <var title="">results</var> and increment <var title="">errors</var>. (If it succeeds, the return value is
+ discarded.)</li>
<li><p>Sort <var title="">results</var> in <a href="#tree-order">tree
order</a>.</li>
- <li><p>Return <var title="">results</var>.</li>
+ <li><p>Return <var title="">results</var> and <var title="">errors</var>.</li>
- </ol><p>To <dfn id="collect-all-the-elements-in-the-item">collect all the elements in the item</dfn> <var title="">root</var>, the user agent must run these steps:<ol><li><p>Let <var title="">results</var> and <var title="">pending</var> be empty lists of elements.</li>
+ </ol><p>To <dfn id="collect-all-the-elements-in-the-item">collect all the elements in the item</dfn> <var title="">root</var>, the user agent must run these steps. They
+ return a list of elements and a count of errors.<ol><li><p>Let <var title="">results</var> and <var title="">pending</var> be empty lists of elements.</li>
+
+ <li><p>Let <var title="">errors</var> be zero.</li>
<li><p>Add all the children elements of <var title="">root</var> to
<var title="">pending</var>.</li>
@@ -1242,15 +1241,20 @@
<li><p><i>Loop</i>: Remove an element from <var title="">pending</var> and let <var title="">current</var> be that
element.</li>
- <li><p>Add <var title="">current</var> to <var title="">results</var>.</li>
+ <li><p>If <var title="">current</var> is already in <var title="">results</var>, increment <var title="">errors</var>.</li>
- <li><p>If <var title="">current</var> does not have an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute, then: add all
- the child elements of <var title="">current</var> to <var title="">pending</var>.</li>
+ <li><p>If <var title="">current</var> is not already in <var title="">results</var> and <var title="">current</var> does not
+ have an <code title="attr-itemscope"><a href="#attr-itemscope">itemscope</a></code> attribute,
+ then: add all the child elements of <var title="">current</var> to
+ <var title="">pending</var>.</li>
+
+ <li><p>If <var title="">current</var> is not already in <var title="">results</var>, then: add <var title="">current</var> to
+ <var title="">results</var>.</li>
<li><p><i>End of loop</i>: If <var title="">pending</var> is not
empty, return to the step labeled <i>loop</i>.</li>
- <li><p>Return <var title="">results</var>.</li>
+ <li><p>Return <var title="">results</var> and <var title="">errors</var>.</li>
</ol><p>An <a href="#concept-item" title="concept-item">item</a> is a <dfn id="top-level-microdata-items" title="top-level microdata items">top-level microdata item</dfn> if
its element does not have an <code title="attr-itemprop"><a href="#names:-the-itemprop-attribute">itemprop</a></code> attribute.<p>An <a href="#concept-item" title="concept-item">item</a> is a <dfn id="used-microdata-items" title="used
@@ -1263,7 +1267,8 @@
found to be a property of any of the <a href="#concept-item" title="concept-item">items</a> in that document were their <a href="#the-properties-of-an-item" title="the properties of an item">properties</a> all to be
determined.<p>A document must not contain any <a href="#concept-item" title="concept-item">items</a> for which <a href="#crawl-the-properties" title="crawl the
properties">crawling the properties</a> of the element, with an
- empty list as the value of <var title="">memory</var>, fails.<p class="note">The algorithms in this section are especially
+ empty list as the value of <var title="">memory</var>, either fails
+ or returns an error count other than zero.<p class="note">The algorithms in this section are especially
inefficient, in the interests of keeping them easy to
understand. Implementors are strongly encouraged to refactor and
optimize them in their user agents.<div class="example">
@@ -1311,30 +1316,7 @@
<dd>The mailbox.
<dt>license
<dd><code title="">http://www.opensource.org/licenses/mit-license.php</code>
- </dl></div><div class="example">
-
- <p>In the following invalid example, the items are all empty,
- because the <code title="attr-itemref"><a href="#attr-itemref">itemref</a></code> attribute on
- the inner nested item indirectly references the same element twice
- in the same item:</p>
-
- <pre class="bad"><!-- invalid example - do not copy -->
-<div itemscope>
- <span itemprop="example">This is <em>not</em> a property of the
- <code>div</code> element.</span>
- <p itemprop="demo" itemscope itemref="test thing"> <!-- "thing" is a descendant
- of "test", which leads to it being included twice, which is invalid -->
- <span itemprop="sample">This isn't part of anything either.</span>
- </p>
-</div>
-<p id="test">
- <span id="thing">(this element is referenced twice by the
- <code>p</code> above, causing all the items that involve that
- <code>itemref=""</code> attribute to act as if they had no
- properties.)</span>
-</p></pre>
-
- </div><h2 id="microdata-dom-api"><span class="secno">4 </span>Microdata DOM API</h2><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><pre class="idl">[Supplemental] interface <span>HTMLDocument</span> { <!--WARNING: ALSO DUPLICATED IN HTMLDocument SECTION-->
+ </dl></div><h2 id="microdata-dom-api"><span class="secno">4 </span>Microdata DOM API</h2><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><pre class="idl">[Supplemental] interface <span>HTMLDocument</span> { <!--WARNING: ALSO DUPLICATED IN HTMLDocument SECTION-->
NodeList <a href="#dom-document-getitems" title="dom-document-getItems">getItems</a>(in optional DOMString typeNames); // <span>microdata</span>
};
@@ -1871,11 +1853,19 @@
<ifragment> production of the IRI syntax being
%-escaped. <a href="#refsRFC3987">[RFC3987]</a></li>
- <li><p>Let <var title="">predicate</var> be the
- concatenation of the string "<code title="">http://www.w3.org/1999/xhtml/microdata#</code>"
- and <var title="">s</var>, with any characters in <var title="">s</var> that are not valid in the <ifragment>
- production of the IRI syntax being %-escaped. <a href="#refsRFC3987">[RFC3987]</a></li> <!-- this ensures
- you can't use a URL to get the same effect -->
+ <li>
+
+ <p>Let <var title="">predicate</var> be the concatenation
+ of the string "<code title="">http://www.w3.org/1999/xhtml/microdata#</code>"
+ and <var title="">s</var>, with any characters in <var title="">s</var> that are not valid in the <ifragment>
+ production of the IRI syntax being %-escaped, but without
+ double-escaping existing %-escapes. <a href="#refsRFC3987">[RFC3987]</a></p> <!-- this ensures
+ you can't use a URL to get the same effect -->
+
+ <p class="example">For example if the string <var title="">s</var> is "<code title="">http://example.com/a#:q%20r</code>", the
+ resulting <var title="">predicate</var> would be "<code title="">http://www.w3.org/1999/xhtml/microdata#http://example.com/a%23:q%20r</code>".</p>
+
+ </li>
</ol></dd>
Received on Wednesday, 7 April 2010 00:01:04 UTC