HTML Standard Tracker

Filter

File a bug

SVNBugCommentTime (UTC)
4066Update microdata based on results of usability study2009-10-02 21:44
@@ -5887,21 +5887,21 @@ interface <dfn>PropertyNodeList</dfn> : <span>NodeList</span> {
   <span>represented by the collection</span>, listed in <span>tree
   order</span>, but with duplicates removed, leaving only the first
   occurrence of each name. The same object must be returned each
   time.</p>
 
   <p>The <dfn
   title="dom-HTMLPropertyCollection-namedItem"><code>namedItem(<var
   title="">name</var>)</code></dfn> method must return a
   <code>PropertyNodeList</code> object representing a live view of the
   <code>HTMLPropertyCollection</code> object, further filtered so that
-  the only nodes in the <code>RadioNodeList</code> object are those
+  the only nodes in the <code>PropertyNodeList</code> object are those
   that have a <span title="property names">property name</span> equal
   to <var title="">name</var>. The nodes in the
   <code>PropertyNodeList</code> object must be sorted in <span>tree
   order</span>, and the same object must be returned each time a
   particular <var title="">name</var> is queried.</p>
 
   <hr>
 
   <p>Members of the <code>PropertyNodeList</code> interface inherited
   from the <code>NodeList</code> interface must behave as they would
@@ -7585,25 +7585,26 @@ interface <dfn>HTMLDocument</dfn> {
   // <span>metadata attributes</span>
            attribute DOMString <span title="dom-id">id</span>;
            attribute DOMString <span title="dom-title">title</span>;
            attribute DOMString <span title="dom-lang">lang</span>;
            attribute DOMString <span title="dom-dir">dir</span>;
            attribute <span>DOMString</span> <span title="dom-className">className</span>;
   readonly attribute <span>DOMTokenList</span> <span title="dom-classList">classList</span>;
   readonly attribute <span>DOMStringMap</span> <span title="dom-dataset">dataset</span>;
 
   // <span>microdata</span>
-           attribute DOMString <span title="dom-item">item</span>;
+           attribute boolean <span title="dom-itemscope">itemscope</span>;
+           attribute DOMString <span title="dom-itemtype">itemtype</span>;
+           attribute DOMString <span title="dom-itemid">itemid</span>;
   [PutForwards=<span title="dom-DOMSettableTokenList-value">value</span>] readonly attribute <span>DOMSettableTokenList</span> <span title="dom-itemprop">itemprop</span>;
   readonly attribute <span>HTMLPropertyCollection</span> <span title="dom-properties">properties</span>;
            attribute DOMString <span title="dom-content">content</span>;
-           attribute <span>HTMLElement</span> <span title="dom-subject">subject</span>;
 
   // <span>user interaction</span>
            attribute boolean <span title="dom-hidden">hidden</span>;
   void <span title="dom-click">click</span>();
   void <span title="dom-scrollIntoView">scrollIntoView</span>();
   void <span title="dom-scrollIntoView">scrollIntoView</span>(in boolean top);
            attribute long <span title="dom-tabindex">tabIndex</span>;
   void <span title="dom-focus">focus</span>();
   void <span title="dom-blur">blur</span>();
            attribute DOMString <span title="dom-accessKey">accessKey</span>;
@@ -7707,23 +7708,24 @@ interface <dfn>HTMLUnknownElement</dfn> : <span>HTMLElement</span> { };</pre>
 
   <ul class="brief">
    <li><code title="attr-accesskey">accesskey</code></li>
    <li><code title="attr-class">class</code></li>
    <li><code title="attr-contenteditable">contenteditable</code></li>
    <li><code title="attr-contextmenu">contextmenu</code></li>
    <li><code title="attr-dir">dir</code></li>
    <li><code title="attr-draggable">draggable</code></li>
    <li><code title="attr-hidden">hidden</code></li>
    <li><code title="attr-id">id</code></li>
-   <li><code title="attr-item">item</code></li>
-   <li><code title="attr-itemfor">itemfor</code></li>
+   <li><code title="attr-itemid">itemid</code></li>
    <li><code title="attr-itemprop">itemprop</code></li>
+   <li><code title="attr-itemscope">itemscope</code></li>
+   <li><code title="attr-itemtype">itemtype</code></li>
    <li><code title="attr-lang">lang</code></li>
    <li><code title="attr-spellcheck">spellcheck</code></li>
    <li><code title="attr-style">style</code></li>
    <li><code title="attr-tabindex">tabindex</code></li>
    <li><code title="attr-title">title</code></li>
   </ul>
 
   <hr>
 
   <p>The following <span>event handler content attributes</span> may
@@ -11365,20 +11367,21 @@ gave me some of the songs they wrote. I love sharing my music.&lt;/p>
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Metadata content</span>.</dd>
    <dd>If the <code title="attr-itemprop">itemprop</code> attribute is present: <span>flow content</span>.</dd>
    <dd>If the <code title="attr-itemprop">itemprop</code> attribute is present: <span>phrasing content</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>If the <code title="attr-meta-charset">charset</code> attribute is present, or if the element's <code title="attr-meta-http-equiv">http-equiv</code> attribute is in the <span title="attr-meta-http-equiv-content-type">Encoding declaration state</span>: in a <code>head</code> element.</dd>
    <dd>If the <code title="attr-meta-http-equiv">http-equiv</code> attribute is present but not in the <span title="attr-meta-http-equiv-content-type">Encoding declaration state</span>: in a <code>head</code> element.</dd>
    <dd>If the <code title="attr-meta-http-equiv">http-equiv</code> attribute is present but not in the <span title="attr-meta-http-equiv-content-type">Encoding declaration state</span>: in a <code>noscript</code> element that is a child of a <code>head</code> element.</dd>
    <dd>If the <code title="attr-meta-name">name</code> attribute is present: where <span>metadata content</span> is expected.</dd>
+   <dd>If the <code title="attr-itemprop">itemprop</code> attribute is present: where <span>metadata content</span> is expected.</dd>
    <dd>If the <code title="attr-itemprop">itemprop</code> attribute is present: where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd>Empty.</dd>
    <dt>Content attributes:</dt>
    <dd><span>Global attributes</span></dd>
    <dd><code title="attr-meta-name">name</code></dd>
    <dd><code title="attr-meta-http-equiv">http-equiv</code></dd>
    <dd><code title="attr-meta-content">content</code></dd>
    <dd><code title="attr-meta-charset">charset</code></dd>
    <dt>DOM interface:</dt>
@@ -12241,20 +12244,65 @@ people expect to have work and what is necessary.
 
    <p>In XML, the XML declaration would be used instead, at the very
    top of the markup:</p>
 
    <pre>&lt;?xml version="1.0" encoding="utf-8"?></pre>
 
   </div>
 
 
 
+  <h4 id="itemref">The <dfn><code>itemref</code></dfn> element</h4>
+
+  <dl class="element">
+   <dt>Categories</dt>
+   <dd><span>Metadata content</span>.</dd>
+   <dd><span>Flow content</span>.</dd>
+   <dd><span>Phrasing content</span>.</dd>
+   <dt>Contexts in which this element may be used:</dt>
+   <dd>Where <span>metadata content</span> is expected.</dd>
+   <dd>Where <span>phrasing content</span> is expected.</dd>
+   <dt>Content model:</dt>
+   <dd>Empty.</dd>
+   <dt>Content attributes:</dt>
+   <dd><span>Global attributes</span></dd>
+   <dd><code title="attr-itemref-refid">refid</code></dd>
+   <dt>DOM interface:</dt>
+   <dd>
+<pre class="idl">interface <dfn>HTMLItemRefElement</dfn> : <span>HTMLElement</span> {
+           attribute DOMString <span title="dom-itemref-refid">refid</span>;
+};</pre>
+   </dd>
+  </dl>
+
+  <p>The <code>itemref</code> element is used to include by reference
+  properties defined (using <code
+  title="attr-itemprop">itemprop</code>) by elements that are not
+  descendants of the <code>itemref</code> element's nearest ancestor
+  with an <code title="attr-itemscope">itemscope</code> attribute.</p>
+
+  <p>The <dfn title="attr-itemref-refid"><code>refid</code></dfn>
+  attribute is required, and its value must be the ID of an element in
+  the same <code>Document</code> as the <code>itemref</code>
+  element.</p>
+
+  <p class="note">This element is described in more detail as part of
+  the <span>microdata</span> model.</p>
+
+  <div class="impl">
+
+  <p>The <dfn title="dom-itemref-refid"><code>refid</code></dfn> IDL
+  attribute must <span>reflect</span> the content attribute of the
+  same name.</p>
+
+  </div>
+
 
   <h4>The <dfn><code>style</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Metadata content</span>.</dd>
    <dd>If the <code title="attr-style-scoped">scoped</code> attribute is present: <span>flow content</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>If the <code title="attr-style-scoped">scoped</code> attribute is absent: where <span>metadata content</span> is expected.</dd>
    <dd>If the <code title="attr-style-scoped">scoped</code> attribute is absent: in a <code>noscript</code> element that is a child of a <code>head</code> element.</dd>
@@ -48927,22 +48975,23 @@ contradict people?
   href="#refsSELECTORS">[SELECTORS]</a></p>
 
   </div>
 
 
 
   <h2 id="microdata"><dfn>Microdata</dfn></h2>
 
 <!-- v2
 
-  * <ref property="foo" content="id"> to import the item with id="id"
-    into the current microdata block
+  * <itemref itemprop="foo" src="url#id"> to import the item with
+    id="id" from url into the current microdata block as the value of
+    property foo?
 
   * splitting the 'content' part of a property into multiple sub-bits,
     as in:
 
      <span property="tel" content-in-bits>
        Telephone:
        <span content-bit>+44</span> (0) <span content-bit>1223 123 123</span>
      </span>
 
     maybe vocabs that need this can use a sub vocabulary specifically
@@ -48966,163 +49015,166 @@ contradict people?
   services that are customised to the page, or to enable content from
   a variety of cooperating authors to be processed by a single script
   in a consistent manner.</p>
 
   <p>For this purpose, authors can use the microdata features
   described in this section. Microdata allows nested groups of
   name-value pairs to be added to documents, in parallel with the
   existing content.</p>
 
 
-<!--END html5-->
-<!--START microdata1--><!--START html5-->
+<!--START html5-->
 
   <h4>The basic syntax</h4>
 
   <p><i>This section is non-normative.</i></p>
 
   <p>At a high level, microdata consists of a group of name-value
   pairs. The groups are called <span
   title="concept-item">items</span>, and each name-value pair is a
   property. Items and properties are represented by regular
   elements.</p>
 
-  <p>To create an item, the <code title="attr-item">item</code>
-  attribute is used.</p>
+  <p>To create an item, the <code
+  title="attr-itemscope">itemscope</code> attribute is used.</p>
 
   <p>To add a property to an item, the <code
   title="attr-itemprop">itemprop</code> attribute is used on one of
   the <span title="concept-item">item's</span> descendants.</p>
 
   <div class="example">
 
    <p>Here there are two items, each of which has the property "name":</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p>My name is &lt;span itemprop="name">Elizabeth&lt;/span>.&lt;/p>
 &lt;/div>
 
-&lt;div item>
+&lt;div itemscope>
  &lt;p>My name is &lt;span itemprop="name">Daniel&lt;/span>.&lt;/p>
 &lt;/div></pre>
 
   </div>
 
   <p>Properties generally have values that are strings.</p>
 
   <div class="example">
 
    <p>Here the item has three properties:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p>My name is &lt;span itemprop="name">Neil&lt;/span>.&lt;/p>
  &lt;p>My band is called &lt;span itemprop="band">Four Parts Water&lt;/span>.&lt;/p>
  &lt;p>I am &lt;span itemprop="nationality">British&lt;/span>.&lt;/p>
 &lt;/div></pre>
 
   </div>
 
   <p>Properties can also have values that are <span
   title="URL">URLs</span>. This is achieved using the <code>a</code>
   element and its <code title="attr-hyperlink-href">href</code>
   attribute, the <code>img</code> element and its <code
   title="attr-img-src">src</code> attribute, or other elements that
   link to or embed external resources.</p>
 
   <div class="example">
 
-   <p>In this example, the item has one property, "image", whose value is a URL:</p>
+   <p>In this example, the item has one property, "image", whose value
+   is a URL:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;img itemprop="image" src="google-logo.png" alt="Google">
 &lt;/div></pre>
 
   </div>
 
   <p>Properties can also have values that are dates, times, or dates
   and times. This is achieved using the <code>time</code> element and
   its <code title="attr-time-datetime">datetime</code> attribute.</p>
 
   <div class="example">
 
    <p>In this example, the item has one property,
    "birthday", whose value is a date:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  I was born on &lt;time itemprop="birthday" datetime="2009-05-10">May 10th 2009&lt;/time>.
 &lt;/div></pre>
 
   </div>
 
   <p>Properties can also themselves be groups of name-value pairs, by
-  putting the <code title="attr-item">item</code> attribute on the
-  element that declares the property.</p>
+  putting the <code title="attr-itemscope">itemscope</code> attribute
+  on the element that declares the property.</p>
 
   <p>Items that are not part of others are called <span>top-level
   microdata items</span>.</p>
 
   <div class="example">
 
    <p>In this example, the outer item represents a person, and the
    inner one represents a band:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p>Name: &lt;span itemprop="name">Amanda&lt;/span>&lt;/p>
- &lt;p>Band: &lt;span itemprop="band" item> &lt;span itemprop="name">Jazz Band&lt;/span> (&lt;span itemprop="size">12&lt;/span> players)&lt;/span>&lt;/p>
+ &lt;p>Band: &lt;span itemprop="band" itemscope> &lt;span itemprop="name">Jazz Band&lt;/span> (&lt;span itemprop="size">12&lt;/span> players)&lt;/span>&lt;/p>
 &lt;/div></pre>
 
    <p>The outer item here has two properties, "name" and
    "band". The "name" is "Amanda", and the
    "band" is an item in its own right, with two
    properties, "name" and "size". The
    "name" of the band is "Jazz Band", and the
    "size" is "12".</p>
 
    <p>The outer item in this example is a top-level microdata
    item.</p>
 
   </div>
 
-  <p>Properties don't have to be given as descendants of the element
-  with the <code title="attr-item">item</code> attribute. They can be
-  associated with a specific <span title="concept-item">item</span>
-  using the <code title="attr-itemfor">itemfor</code> attribute, which
-  takes the ID of the element with the <code
-  title="attr-item">item</code> attribute.</p>
+  <p>Properties that are not descendants of the element with the <code
+  title="attr-itemscope">itemscope</code> attribute can be associated
+  with the <span title="concept-item">item</span> using the
+  <code>itemref</code> element, whose <code
+  title="attr-itemref-refid">refid</code> attribute takes the ID of an
+  element with the <code title="attr-itemprop">itemprop</code>
+  attribute or an ancestor of such an element.</p>
 
   <div class="example">
 
    <p>This example is the same as the previous one, but all the
    properties are separated from their <span
    title="concept-item">items</span>:</p>
 
-   <pre>&lt;div item id="amanda">&lt;/div>
-&lt;p>Name: &lt;span itemfor="amanda" itemprop="name">Amanda&lt;/span>&lt;/p>
-&lt;div itemfor="amanda" itemprop="band" item id="jazzband">&lt;/div>
-&lt;p>Band: &lt;span itemfor="jazzband" itemprop="name">Jazz Band&lt;/span>&lt;/p>
-&lt;p>Size: &lt;span itemfor="jazzband" itemprop="size">12&lt;/span> players&lt;/p></pre>
+   <pre>&lt;div itemscope id="amanda">&lt;itemref refid="a">&lt;itemref refid="b">&lt;/div>
+&lt;p id="a">Name: &lt;span itemprop="name">Amanda&lt;/span>&lt;/p>
+&lt;div id="b" itemprop="band" itemscope id="jazzband">&lt;itemref refid="c">&lt;/div>
+&lt;div id="c">
+ &lt;p>Band: &lt;span itemprop="name">Jazz Band&lt;/span>&lt;/p>
+ &lt;p>Size: &lt;span itemprop="size">12&lt;/span> players&lt;/p>
+&lt;/div></pre>
 
    <p>This gives the same result as the previous example. The first
    item has two properties, "name", set to "Amanda", and "band", set
    to another item. That second item has two further properties,
    "name", set to "Jazz Band", and "size", set to "12".</p>
 
   </div>
 
   <p>An <span title="concept-item">item</span> can have multiple
   properties with the same name and different values.</p>
 
   <div class="example">
 
    <p>This example describes an ice cream, with two flavors:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p>Flavors in my favorite ice cream:&lt;/p>
  &lt;ul>
   &lt;li itemprop="flavor">Lemon sorbet&lt;/li>
   &lt;li itemprop="flavor">Apricot sorbet&lt;/li>
  &lt;/ul>
 &lt;/div></pre>
 
    <p>This thus results in an item with two properties, both
    "flavor", having the values "Lemon sorbet" and "Apricot
    sorbet".</p>
@@ -49132,41 +49184,41 @@ contradict people?
   <p>An element introducing a property can also introduce multiple
   properties at once, to avoid duplication when some of the properties
   have the same value.</p>
 
   <div class="example">
 
    <p>Here we see an item with two properties,
    "favorite-color" and "favorite-fruit", both
    set to the value "orange":</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;span itemprop="favorite-color favorite-fruit">orange&lt;/span>
 &lt;/div></pre>
 
   </div>
 
   <p>It's important to note that there is no relationship between the
   microdata and the content of the document where the microdata is
   marked up.</p>
 
   <div class="example">
 
    <p>There is no semantic difference, for instance, between the
    following two examples:</p>
 
    <pre>&lt;figure>
  &lt;dd>&lt;img src="castle.jpeg">
- &lt;dt>&lt;span item>&lt;span itemprop="name">The Castle&lt;/span>&lt;/span> (1986)
+ &lt;dt>&lt;span itemscope>&lt;span itemprop="name">The Castle&lt;/span>&lt;/span> (1986)
 &lt;/figure></pre>
 
-   <pre>&lt;span item>&lt;meta itemprop="name" content="The Castle">&lt;/span>
+   <pre>&lt;span itemscope>&lt;meta itemprop="name" content="The Castle">&lt;/span>
 &lt;figure>
  &lt;dd>&lt;img src="castle.jpeg">
  &lt;dt>The Castle (1986)
 &lt;/figure></pre>
 
    <p>Both have a figure with a caption, and both, completely
    unrelated to the figure, have an item with a name-value pair with
    the name "name" and the value "The Castle". The only
    difference is that if the user drags the caption out of the
    document, in the former case, the item will be included in the
@@ -49182,66 +49234,121 @@ contradict people?
 
   <p>The examples in the previous section show how information could
   be marked up on a page that doesn't expect its microdata to be
   re-used. Microdata is most useful, though, when it is used in
   contexts where other authors and readers are able to cooperate to
   make new uses of the markup.</p>
 
   <p>For this purpose, it is necessary to give each <span
   title="concept-item">item</span> a type, such as
   "com.example.person", or "org.example.cat", or
-  "net.example.band". Types are identified in three ways:</p>
+  "net.example.band". Types are identified in two ways:</p>
 
   <ul class="brief">
 
    <li>As <span title="URL">URLs</span>.
 
    <li>As <span title="valid reversed DNS identifier">reversed DNS
    labels</span>.
 
-   <li>Using the names of <span title="predefined type">predefined
-   types</span>, which are described below.
-
   </ul>
 
   <p><span title="URL">URLs</span> are self-explanatory. <span
   title="valid reversed DNS identifier">Reversed DNS labels</span> are
   strings such as "org.example.animals.cat" or "com.example.band".</p>
 
   <p>The type for an <span title="concept-item">item</span> is given
-  as the value of the <code title="attr-item">item</code>
-  attribute.</p>
+  as the value of an <code title="attr-itemtype">itemtype</code>
+  attribute on the same element as the <code
+  title="attr-itemscope">itemscope</code> attribute.</p>
 
   <div class="example">
 
    <p>Here, the item is "org.example.animals.cat":</p>
 
-<pre>&lt;section item="org.example.animal.cat">
+<pre>&lt;section itemscope itemtype="org.example.animal.cat">
  &lt;h1 itemprop="name">Hedral&lt;/h1>
  &lt;p itemprop="desc">Hedral is a male american domestic
  shorthair, with a fluffy black fur with white paws and belly.&lt;/p>
  &lt;img itemprop="img" src="hedral.jpeg" alt="" title="Hedral, age 18 months">
 &lt;/section></pre>   
 
    <p>In this example the "org.example.animals.cat" item has three
    properties, a "name" ("Hedral"), a "desc" ("Hedral is..."), and an
    "img" ("hedral.jpeg").</p>
 
   </div>
 
   <p>An item can only have one type. The type gives the context for
-  the properties: a property named "class" given for an item with the
-  type "com.example.census.person" might refer to the class of an
-  individual, while a property named "class" given for an item with
-  the type "com.example.school.teacher" might refer to the classroom a
-  teacher has been assigned.</p>
-  
+  the properties, thus defining a vocabulary: a property named "class"
+  given for an item with the type "com.example.census.person" might
+  refer to the economic class of an individual, while a property named
+  "class" given for an item with the type "com.example.school.teacher"
+  might refer to the classroom a teacher has been assigned.</p>
+
+
+  <h4>Global identifiers for items</h4>
+
+  <p><i>This section is non-normative.</i></p>
+
+  <p>Sometimes, an <span title="concept-item">item</span> gives
+  information about a topic that has a global identifier. For example,
+  books can be identified by their ISBN number.</p>
+
+  <p>Vocabularies (as identified by the <code
+  title="attr-itemtype">itemtype</code> attribute) can be designed
+  such that <span title="concept-item">items</span> get associated
+  with their global identifier in an unambiguous way by expressing the
+  global identifiers as <span title="URL">URLs</span> given in an
+  <code title="attr-itemid">itemid</code> attribute.</p>
+
+  <p>The exact meaning of the <span title="URL">URLs</span> given in
+  <code title="attr-itemid">itemid</code> attributes depends on the
+  vocabulary used.</p>
+
+  <div class="example">
+
+   <p>Here, an item is talking about a particular book:</p>
+
+<pre>&lt;dl itemscope
+    itemtype="http://vocab.example.net/book"
+    <strong>itemid="urn:isbn:0-330-34032-8"</strong>>
+ &lt;dt>Title
+ &lt;dd itemprop="title">The Reality Dysfunction
+ &lt;dt>Author
+ &lt;dd itemprop="author">Peter F. Hamilton
+ &lt;dt>Publication date
+ &lt;dd>&lt;time itemprop="pubdate" datetime="1996-01-26">26 January 1996&lt;/time>
+&lt;/dl></pre>
+
+   <p>The "<code title="">http://vocab.example.net/book</code>"
+   vocabulary in this example would define that the <code
+   title="attr-itemid">itemid</code> attribute takes a <code
+   title="">urn:</code> <span>URL</span> pointing to the ISBN of the
+   book.</p>
+
+  </div>
+
+  <!-- (commented out since itemtype="" defines the meaning of the
+        identifier for now)
+  <p>Although it is common practice, authors are encouraged not to use
+  the same URL to identify multiple topics; in particular, an HTTP URL
+  usually identifies a specific resource (such as an image or
+  document), and authors are encouraged to not use them to identify
+  people, non-Web resources like companies, movies, and products, or
+  other abstract concepts. Using an HTTP URL as a global identifier
+  for something other than the resource actually designated by the URL
+  leads to a situation where it is ambiguous whether the identifier,
+  and thus the set of properties specified in the microdata,
+  references the page or something else.</p>
+  -->
+
 
 
   <h4>Selecting names when defining vocabularies</h4>
 
   <p><i>This section is non-normative.</i></p>
 
   <p>Using microdata means using a vocabulary. For some purposes, an
   ad-hoc vocabulary is adequate. For others, a vocabulary will need to
   be designed. Where possible, authors are encouraged to re-use
   existing vocabularies, as this makes content re-use easier.</p>
@@ -49279,21 +49386,21 @@ contradict people?
   (URLs, reversed DNS labels) or ensure that their items are
   typed.</p>
 
   <div class="example">
 
    <p>Here, an item is an "org.example.animals.cat", and most of the
    properties have names that are words defined in the context of that
    type. There are also a few additional properties whose names come
    from other vocabularies.</p>
 
-<pre>&lt;section item="org.example.animal.cat">
+<pre>&lt;section itemscope itemtype="org.example.animal.cat">
  &lt;h1 itemprop="name com.example.fn">Hedral&lt;/h1>
  &lt;p itemprop="desc">Hedral is a male american domestic
  shorthair, with a fluffy &lt;span
  itemprop="com.example.color">black&lt;/span> fur with &lt;span
  itemprop="com.example.color">white&lt;/span> paws and belly.&lt;/p>
  &lt;img itemprop="img" src="hedral.jpeg" alt="" title="Hedral, age 18 months">
 &lt;/section></pre>   
 
    <p>This example has one item with two types and the following
    properties:</p>
@@ -49320,68 +49427,47 @@ contradict people?
       <td>com.example.color
       <td>white
      <tr>
       <td>img
       <td>.../hedral.jpeg
    </table>
 
   </div>
 
 
-  <h4>Predefined vocabularies</h4>
-
-  <p><i>This section is non-normative.</i></p>
-
-  <p>To make the most common tasks simpler, certain vocabularies have
-  been predefined. These use short names for types and properties.</p>
-
-  <div class="example">
-
-   <p>For example, the <span title="md-vcard">vCard</span> vocabulary
-   can be used to mark up people's names:</p>
-
-   <pre>&lt;span item=vcard>&lt;span itemprop=fn>George Washington&lt;/span>&lt;/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
-   map to the following vCard:</p>
-
-   <pre>BEGIN:VCARD
-PROFILE:VCARD
-VERSION:3.0
-SOURCE:<var title="">document's address</var>
-FN:George Washington
-N:Washington;George;;;
-END:VCARD</pre>
-
-  </div>
-
 
   <h4>Using the microdata DOM API</h4>
 
   <p><i>This section is non-normative.</i></p>
 
   <p>The microdata becomes even more useful when scripts can use it to
   expose information to the user, for example offering it in a form
   that can be used by other applications.</p>
 
   <p>The <code title="dom-document-getItems">document.getItems(<var
   title="">typeNames</var>)</code> method provides access to the
   <span>top-level microdata items</span>. It returns a
   <code>NodeList</code> containing the items with the specified types,
   or all types if no argument is specified.</p>
 
   <p>Each <span title="concept-item">item</span> is represented in the
   DOM by the element on which the relevant <code
-  title="attr-item">item</code> attribute is found. The type of that
-  element can be obtained using the <code
-  title="dom-item">element.item</code> IDL attribute.</p>
+  title="attr-itemscope">itemscope</code> attribute is found. These
+  elements have their <code
+  title="dom-itemscope">element.itemscope</code> IDL attribute set to
+  true.</p>
+
+  <p>The type of <span title="concept-item">items</span> can be
+  obtained using the <code
+  title="dom-itemtype">element.itemtype</code> IDL attribute on the
+  element with the <code title="attr-itemscope">itemscope</code>
+  attribute.</p>
 
   <div class="example">
 
    <p>This sample shows how the <code
    title="dom-document-getItems">getItems()</code> method can be used
    to obtain a list of all the top-level microdata items of one type
    given in the document:</p>
 
    <pre>var cats = document.getItems("com.example.feline");</pre>
 
@@ -49461,21 +49547,21 @@ for (var item = 0; item &lt; document.items.length; item += 1) {
     propLi.appendChild(document.createTextNode(document.items[item].names[name]));
     inner.appendChild(propLi);
   }
   itemLi.appendChild(inner);
   outer.appendChild(itemLi);
 }
 document.body.appendChild(outer);</pre>
 
    <p>If faced with the following from an earlier example:</p>
 
-   <pre>&lt;section item="org.example.animal.cat">
+   <pre>&lt;section itemscope item="org.example.animal.cat">
  &lt;h1 itemprop="name com.example.fn">Hedral&lt;/h1>
  &lt;p itemprop="desc">Hedral is a male american domestic
  shorthair, with a fluffy &lt;span
  itemprop="com.example.color">black&lt;/span> fur with &lt;span
  itemprop="com.example.color">white&lt;/span> paws and belly.&lt;/p>
  &lt;img itemprop="img" src="hedral.jpeg" alt="" title="Hedral, age 18 months">
 &lt;/section></pre>
 
    <p>...it would result in the following output:</p>
 
@@ -49496,220 +49582,256 @@ document.body.appendChild(outer);</pre>
 
   </div>
 
 
 
   <h3>Encoding microdata</h3>
 
   <h4>The microdata model</h4>
 
   <p>The microdata model consists of groups of name-value pairs known
-  as <dfn title="concept-item">items</dfn>.</p>
+  as <span title="concept-item">items</span>.</p>
+
+  <p>Each group is known as an <span
+  title="concept-item">item</span>. Each <span
+  title="concept-item">item</span> can have an <span>item type</span>,
+  a <span>global identifier</span> (if the <span>item type</span>
+  <span title="support global identifiers for items">supports global
+  identifiers for its items</span>), and a list of name-value
+  pairs. Each name in the name-value pair is known as a <span
+  title="the properties of an item">property</span>, and each <span
+  title="the properties of an item">property</span> has one or more
+  <span title="concept-property-value">values</span>. Each <span title="concept-property-value">value</span> is either a string or itself a group of
+  name-value pairs (an <span title="concept-item">item</span>).</p>
+
+  <p>An <span title="concept-item">item</span> is said to be a
+  <dfn>typed item</dfn> when either it has an <span>item type</span>,
+  or it is the <span title="concept-property-value">value</span> of a <span title="the properties of an
+  item">property</span> of a <span>typed item</span>. The
+  <dfn>relevant type</dfn> for a <span>typed item</span> is the <span
+  title="concept-item">item</span>'s <span>item type</span>, if it has
+  one, or else is the <span>relevant type</span> of the <span
+  title="concept-item">item</span> for which it is a <span title="the
+  properties of an item">property</span>'s <span title="concept-property-value">value</span>.</p>
+
+
+
+  <h4>Items</h4>
+
+  <p>Every <span title="HTML elements">HTML element</span> except the
+  <code>itemref</code> element may have an <dfn
+  title="attr-itemscope"><code>itemscope</code></dfn> attribute
+  specified. The <code title="attr-itemscope">itemscope</code>
+  attribute is a <span>boolean attribute</span>.</p>
+
+  <p>An element with the <code title="attr-itemscope">itemscope</code>
+  attribute specified, and that is not an <code>itemref</code>
+  element, creates a new <dfn title="concept-item">item</dfn>, a group
+  of name-value pairs.</p>
+
+  <p>The <code title="attr-itemscope">itemscope</code> attribute must
+  not be specified on <code>itemref</code> elements.</p>
 
-  <p>Each group has zero or more types, each name has one or more
-  values, and each value is either a string or another group of
-  name-value pairs.</p>
-
-
-  <h4>Items: the <dfn title="attr-item"><code>item</code></dfn> attribute</h4>
-
-  <p>Every <span title="HTML elements">HTML element</span> may have an
-  <code title="attr-item">item</code> attribute specified.</p>
+  <hr>
 
-  <p>An element with the <code title="attr-item">item</code> attribute
-  specified creates a new <span title="concept-item">item</span>, a
-  group of name-value pairs.</p>
+  <p>Elements with an <code title="attr-itemscope">itemscope</code>
+  attribute may have an <dfn
+  title="attr-itemtype"><code>itemtype</code></dfn> attribute
+  specified, to give the <span>item type</span> of the <span
+  title="concept-item">item</span>.</p>
 
-  <p>The attribute, if specified, must have a value that is either:</p>
+  <p>The <code title="attr-itemtype">itemtype</code> attribute, if
+  specified, must have a value that is either:</p>
 
   <ul>
 
-   <li>The empty string, or</li>
-
    <li>A <span>valid URL</span> that is an <span>absolute URL</span>
    for which the string "<code
    title="">http://www.w3.org/1999/xhtml/custom#</code>" is not a
    <span>prefix match</span>, or</li>
 
-   <li>A <span>valid reversed DNS identifier</span>, or</li>
-
-   <li>A <span>predefined type</span>.</li>
+   <li>A <span>valid reversed DNS identifier</span>.</li>
 
   </ul>
 
-  <p>The <dfn>item type</dfn> of an element with an <code
-  title="attr-item">item</code> attribute is the value of the
-  element's <code title="attr-item">item</code> attribute. If the
-  attribute's value is the empty string, the element is said to have
-  no <span>item type</span>.</p>
-
-
-  <h4>Associating names with items</h4>
-
-  <p>The <dfn title="attr-itemfor"><code>itemfor</code></dfn>
-  attribute may be specified on any <span title="HTML elements">HTML
-  element</span> to associate the element with an element with an
-  <code title="attr-item">item</code> attribute. If the <code
-  title="attr-itemfor">itemfor</code> attribute is specified, the
-  attribute's value must be the ID of an element with an <code
-  title="attr-item">item</code> attribute, in the same
-  <code>Document</code> as the element with the <code
-  title="attr-itemfor">itemfor</code> attribute.</p>
-
-  <p>An element's <dfn
-  title="concept-item-corresponding">corresponding item</dfn> is
-  determined by its position in the DOM and by any <code
-  title="attr-itemfor">itemfor</code> attributes on the element, and
-  is defined as follows:</p>
-
-  <dl>
+  <p>The <dfn>item type</dfn> of an <span
+  title="concept-item">item</span> is the value of its element's <code
+  title="attr-itemtype">itemtype</code> attribute, if it has one and
+  its value is not the empty string. If the <code
+  title="attr-itemtype">itemtype</code> attribute is missing or its
+  value is the empty string, the <span
+  title="concept-item">item</span> is said to have no <span>item
+  type</span>.</p>
 
-   <dt>If the element has a <code title="attr-itemfor">itemfor</code>
-   attribute</dt>
+  <p>The <span>item type</span> must be a type defined in an <span
+  title="other applicable specifications">applicable
+  specification</span>.</p>
 
-   <dd><p>If there is an element in the document with an ID equal to
-   the value of the <code title="attr-itemfor">itemfor</code>
-   attribute, and if the first such element has an <code
-   title="attr-item">item</code> attribute specified, then that
-   element is the <span
-   title="concept-item-corresponding">corresponding
-   item</span>. Otherwise, there is no <span
-   title="concept-item-corresponding">corresponding
-   item</span>.</p></dd>
-
-   <dt>If the element has no <code title="attr-itemfor">itemfor</code>
-   attribute but does have an ancestor with an <code
-   title="attr-item">item</code> attribute specified</dt>
-
-   <dd><p>The nearest ancestor element with the <code
-   title="attr-item">item</code> attribute specified is the element's
-   <span title="concept-item-corresponding">corresponding
-   item</span>.</p></dd>
-
-   <dt>If the element has neither <code
-   title="attr-itemfor">itemfor</code> attribute nor an ancestor with
-   an <code title="attr-item">item</code> attribute specified</dt>
-
-   <dd><p>The element has no <span
-   title="concept-item-corresponding">corresponding
-   item</span>.</p></dd>
+  <p>The <code title="attr-itemtype">itemtype</code> attribute must
+  not be specified on elements that do not have an <code
+  title="attr-itemscope">itemscope</code> attribute specified.</p>
 
-  </dl>
+  <hr>
 
-  <p>The list of elements that create <span
-  title="concept-item">items</span> but do not themselves have a <span
-  title="concept-item-corresponding">corresponding item</span> forms
-  the list of <dfn>top-level microdata items</dfn>.</p>
+  <p>Elements with an <code title="attr-itemscope">itemscope</code>
+  attribute and an <code title="attr-itemtype">itemtype</code>
+  attribute that references a vocabulary that is defined to
+  <dfn>support global identifiers for items</dfn> may also have an
+  <dfn title="attr-itemid"><code>itemid</code></dfn> attribute
+  specified, to give a global identifier for the <span
+  title="concept-item">item</span>, so that it can be related to other
+  <span title="concept-item">items</span> on pages elsewhere on the
+  Web.</p>
+
+  <p>The <code title="attr-itemid">itemid</code> attribute, if
+  specified, must have a value that is a <span>valid URL</span> that
+  is an <span>absolute URL</span>.</p>
+
+  <p>The <dfn>global identifier</dfn> of an <span
+  title="concept-item">item</span> is the value of its element's <code
+  title="attr-itemid">itemid</code> attribute, if it has one. If the
+  <code title="attr-itemid">itemid</code> attribute is missing or its
+  value is the empty string, it is said to have no <span>global
+  identifier</span>.</p>
+
+  <p>The <code title="attr-itemid">itemid</code> attribute must not be
+  specified on elements that do not have both an <code
+  title="attr-itemscope">itemscope</code> attribute and an <code
+  title="attr-itemtype">itemtype</code> attribute specified, and must
+  not be specified on elements with an <code
+  title="attr-itemscope">itemscope</code> attribute whose <code
+  title="attr-itemtype">itemtype</code> attribute specifies a
+  vocabulary that does not <span>support global identifiers for
+  items</span>, as defined by that vocabulary's specification.</p>
 
 
   <h4>Names: the <dfn title="attr-itemprop"><code>itemprop</code></dfn> attribute</h4>
 
-  <p>Every <span title="HTML elements">HTML element</span> that has a
-  <span title="concept-item-corresponding">corresponding item</span>
-  may have an <code title="attr-itemprop">itemprop</code> attribute
-  specified.</p>
-
-  <p>An element with the <code title="attr-itemprop">itemprop</code>
-  attribute specified adds one or more name-value pairs to its
-  <span title="concept-item-corresponding">corresponding item</span>.</p>
+  <p>Every <span title="HTML elements">HTML element</span> may have an
+  <code title="attr-itemprop">itemprop</code> attribute specified, if
+  doing so <span title="the properties of an item">adds a
+  property</span> to one or more <span
+  title="concept-item">items</span> (as defined below).</p>
 
   <p>The <code title="attr-itemprop">itemprop</code> attribute, if
   specified, must have a value that is an <span>unordered set of
   unique space-separated tokens</span> representing the names of the
   name-value pairs that it adds. The attribute's value must have at
   least one token.</p>
 
   <p>Each token must be either:</p>
 
   <ul>
 
    <li>A <span>valid URL</span> that is an <span>absolute URL</span>
    for which the string "<code
    title="">http://www.w3.org/1999/xhtml/custom#</code>" is not a
    <span>prefix match</span>, or</li>
 
    <li>A <span>valid reversed DNS identifier</span>, or</li>
 
-   <li>A <span>predefined global property name</span> allowed in this
-   situation, 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 not a <span>typed item</span>: a string that
+   contains no U+002E FULL STOP (.) characters and no U+003A COLON (:)
+   characters.</li>
 
-   <li>If the item's <span>item type</span> is a <span>predefined
-   type</span>: a <span>predefined property name</span> allowed in
-   this situation, or</li>
+  </ul>
 
-   <li>If the item has no <span>item type</span> but it is itself the
-   value of a property whose property name is a <span>predefined
-   property name</span>: a <span>predefined property name</span>
-   allowed in this situation, or</li>
+  <p>When an element with an <code
+  title="concept-itemprop">itemprop</code> attribute <span title="the
+  properties of an item">adds a property</span> to multiple <span
+  title="concept-item">items</span>, the requirement above regarding
+  the tokens applies for each <span title="concept-item">item</span>
+  individually.</p>
 
-   <li>If the item's <span>item type</span> is not a <span>predefined
-   type</span> and the item is not the value of a property whose
-   property name is a <span>predefined property name</span>: a string
-   that contains no U+002E FULL STOP (.) or U+003A COLON (:)
-   characters, and that is not a <span>predefined global property
-   name</span>.</li>
+  <!--
 
-  </ul>
+   e.g.:
+
+     <div itemscope itemtype="http://example.com/a"> <ref refid="x"> </div>
+     <div itemscope itemtype="http://example.com/b"> <ref refid="x"> </div>
+     <meta id="x" itemprop="z" content="">
+
+     "z" had better be valid for both http://example.com/a and http://example.com/b
+
+  -->
 
   <p>The <dfn>property names</dfn> of an element are the tokens that
   the element's <code title="attr-itemprop">itemprop</code> attribute
   is found to contain when its value is <span title="split a string on
   spaces">split on spaces</span>, with the order preserved but with
   duplicates removed (leaving only the first occurrence of each
   name).</p>
 
-  <p>With an <span title="concept-item">item</span>, the properties
+  <p>Within an <span title="concept-item">item</span>, the properties
   are unordered with respect to each other, except for properties with
-  the same name, which are ordered in <span>tree order</span>.</p>
+  the same name, which are ordered in the order they are given by the
+  algorithm that defines <span>the properties of an item</span>.</p>
 
   <div class="example">
 
    <p>In the following example, the "a" property has the values "1"
    and "2", <em>in that order</em>, but whether the "a" property comes
    before the "b" property or not is not important:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p itemprop="a">1&lt;/p>
  &lt;p itemprop="a">2&lt;/p>
  &lt;p itemprop="b">test&lt;/p>
 &lt;/div></pre>
 
    <p>Thus, the following is equivalent:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p itemprop="b">test&lt;/p>
  &lt;p itemprop="a">1&lt;/p>
  &lt;p itemprop="a">2&lt;/p>
 &lt;/div></pre>
 
    <p>As is the following:</p>
 
-   <pre>&lt;div item>
+   <pre>&lt;div itemscope>
  &lt;p itemprop="a">1&lt;/p>
  &lt;p itemprop="b">test&lt;/p>
  &lt;p itemprop="a">2&lt;/p>
 &lt;/div></pre>
 
+   <p>And the following:</p>
+
+   <pre>&lt;div itemscope>
+ &lt;itemref refid="x">
+ &lt;p itemprop="b">test&lt;/p>
+ &lt;p itemprop="a">2&lt;/p>
+&lt;/div>
+&lt;div id="x">
+ &lt;p itemprop="a">1&lt;/p>
+&lt;/div>
+</pre>
+
   </div>
 
 
+
   <h4>Values</h4>
 
   <p>The <dfn title="concept-property-value">property value</dfn> of a
   name-value pair added by an element with an <code
   title="attr-itemprop">itemprop</code> attribute depends on the
   element, as follows:</p>
 
   <dl>
 
-   <dt>If the element also has an <code title="attr-item">item</code>
-   attribute</dt>
+   <dt>If the element also has an <code
+   title="attr-itemscope">itemscope</code> attribute</dt>
 
    <dd><p>The value is the <span title="concept-item">item</span>
    created by the element.</p></dd>
 
 
    <dt>If the element is a <code>meta</code> element</dt>
 
    <dd><p>The value is the value of the element's <code
    title="attr-content">content</code> attribute, if any, or the empty
    string if there is no such attribute.</p></dd>
@@ -49768,20 +49890,121 @@ document.body.appendChild(outer);</pre>
   <code>object</code>, <code>source</code>, and <code>video</code>
   elements.</p>
 
   <p>If a property's <span title="concept-property-value">value</span>
   is an <span>absolute URL</span>, the property must be specified
   using an <span title="URL property elements">URL property
   element</span>.</p>
 
 
 
+  <h4>Associating names with items</h4>
+
+  <p>To find <dfn>the properties of an item</dfn>, the user agent must
+  run the following steps:</p>
+
+  <ol>
+
+   <li><p>Let <var title="">root</var> be the element with the <code
+   title="attr-itemscope">itemscope</code> attribute. This element
+   cannot be an <code>itemref</code> element.</p></li>
+
+   <li><p>Let <var title="">queue</var> be a stack of elements
+   initially containing the child elements of <var
+   title="">root</var>, if any, in <span>tree order</span> (so that
+   the first child element of <var title="">root</var> will be the
+   first one to be popped from the stack). This list will be the one
+   that holds the elements that still need to be crawled.</p></li>
+
+   <li><p>Let <var title="">properties</var> be an empty list of
+   elements. This list will be the result of the algorithm: a list of
+   elements with properties that apply to <var
+   title="">root</var>.</p></li>
+
+   <li><p>Let <var title="">visited nodes</var> be a list of elements
+   containing just <var title="">root</var>. This list is used to
+   avoid loops caused by <code>itemref</code> elements.</p></li>
+
+   <li><p>Let <var title="">error found</var> be false. If it is set
+   to true by the algorithm below, then an <code>itemref</code> error
+   has been found.</p></li>
+
+   <li><p><i>Loop</i>: Pop the top element from <var
+   title="">queue</var> and let <var title="">current</var> be that
+   element.</p></li>
+
+   <li><p>If <var title="">current</var> is already in <var
+   title="">visited nodes</var> then let <var title="">error
+   found</var> be true, and skip down to the step marked <i>end of
+   loop</i>.</p></li>
+
+   <li><p>If <var title="">current</var> has an <code
+   title="attr-itemprop">itemprop</code> attribute, then append <var
+   title="">current</var> to <var title="">properties</var>.</p></li>
+
+   <li><p>Append <var title="">current</var> to <var title="">visited
+   nodes</var>.</p></li>
+
+   <li><p>If <var title="">current</var> is an <code>itemref</code>
+   element with a <code title="attr-itemref-refid">refid</code>
+   attribute, and there is an element in the document whose <span
+   title="concept-id">ID</span> matches the value of <var
+   title="">current</var>'s <code
+   title="attr-itemref-refid">refid</code> attribute, then push the
+   first element in the document whose <span
+   title="concept-id">ID</span> matches the value of <var
+   title="">current</var>'s <code
+   title="attr-itemref-refid">refid</code> attribute onto <var
+   title="">queue</var> (so that it will be the next element to be
+   popped from <var title="">queue</var>).</p></li>
+
+   <li><p>Otherwise, if <var title="">current</var> is not a
+   <code>refid</code> element, and <var title="">current</var> does
+   not have an <code title="attr-itemscope">itemscope</code>
+   attribute, and <var title="">current</var> is an element with child
+   elements, then: push all the child elements of <var
+   title="">current</var> onto <var title="">queue</var>, in
+   <span>tree order</span> (so the first child of <var
+   title="">current</var> will be the next element to be popped from
+   <var title="">queue</var>).</p></li>
+
+   <li><p><i>End of loop</i>: If <var title="">queue</var> is not
+   empty, return to the step marked <i>loop</i>.</p></li>
+
+   <li><p>Return <var title="">properties</var>. That is the list of
+   <span title="the properties of an item">properties of the
+   item</span> <var title="">root</var>.</p></li>
+
+  </ol>
+
+  <p>A document must not contain any <code>itemref</code> elements
+  that would cause the <var title="">error found</var> flag in the
+  algorithm above to be set to true if the <span title="the properties
+  of an item">properties</span> of all the <span
+  title="concept-item">items</span> in that document were to be
+  determined.</p>
+
+  <p>A document must not contain any elements that have an <code
+  title="attr-itemprop">itemprop</code> attribute that would not be
+  found to be a property of any of the <span
+  title="concept-item">items</span> in that document were their <span
+  title="the properties of an item">properties</span> all to be
+  determined.</p>
+
+  <p>An <span title="concept-item">item</span> is a <dfn
+  title="top-level microdata items">top-level microdata item</dfn> if
+  its element does not have an <code
+  title="attr-itemprop">itemprop</code> attribute.</p>
+
+
+
+
   <h3>Microdata DOM API</h3>
 
   <dl class="domintro">
 
    <dt><var title="">document</var> . <code title="dom-getItems()">getItems</code>( [ <var title="">types</var> ] )</dt>
 
    <dd>
 
     <p>Returns a <code>NodeList</code> of the elements in the <code>Document</code> that create <span title="concept-item">items</span>, that are not part of other <span title="concept-item">items</span>, and that are of one of the types given in the argument, if any are listed.</p>
 
@@ -49825,35 +50048,36 @@ document.body.appendChild(outer);</pre>
   all the elements in the document, in <span>tree order</span>, that
   are each <span>top-level microdata items</span> with a <span
   title="item type">type</span> equal to one of the types specified in
   that argument, having obtained the types by <span title="split a
   string on spaces">splitting the string on spaces</span>. If there
   are no tokens specified in the argument, or if the argument is
   missing, then the method must return a <code>NodeList</code>
   containing all the <span>top-level microdata items</span> in the
   document.</p>
 
-  <p>The <dfn title="dom-item"><code>item</code></dfn> IDL attribute
-  on elements must <span>reflect</span> the element's <code
-  title="attr-item">item</code> content attribute.</p>
-
-  <p>The <dfn title="dom-itemprop"><code>itemprop</code></dfn> IDL
-  attribute on elements must <span>reflect</span> the element's <code
-  title="attr-itemprop">itemprop</code> content attribute.</p>
+  <p>The <dfn title="dom-itemscope"><code>itemscope</code></dfn>, <dfn
+  title="dom-itemtype"><code>itemtype</code></dfn>, <dfn
+  title="dom-itemid"><code>itemid</code></dfn>, and <dfn
+  title="dom-itemprop"><code>itemprop</code></dfn> IDL attributes on
+  <span>HTML elements</span> must <span>reflect</span> the respective
+  content attributes of the same name.</p>
 
   <p>The <dfn title="dom-properties"><code>properties</code></dfn> IDL
-  attribute on elements must return an
+  attribute on <span>HTML elements</span> must return an
   <code>HTMLPropertyCollection</code> rooted at the
   <code>Document</code> node, whose filter matches only elements that
-  have <span>property names</span> and have a <span
-  title="concept-item-corresponding">corresponding item</span> that is
-  equal to the element on which the attribute was invoked.</p>
+  have <span>property names</span> and are <span title="the properties
+  of an item">the properties of the item</span> created by the element
+  on which the attribute was invoked, while that element is an <span
+  title="concept-item">item</span>, and matches nothing the rest of
+  the time.</p>
 
   <p>The <dfn title="dom-content"><code>content</code></dfn> IDL
   attribute's behavior depends on the element, as follows:</p>
 
   <dl>
 
    <dt>If the element is a <code>meta</code> element</dt>
 
    <dd><p>The attribute must act as it would if it was <span
    title="reflect">reflecting</span> the element's <code
@@ -49893,60 +50117,39 @@ document.body.appendChild(outer);</pre>
    title="">datetime</code> content attribute.</p></dd>
 
 
    <dt>Otherwise</dt>
 
    <dd><p>The attribute must act the same as the element's
    <code>textContent</code> attribute.</p></dd>
 
   </dl> 
 
-  <p>The <dfn title="dom-subject"><code>itemfor</code></dfn> IDL
-  attribute on elements must <span>reflect</span> the element's <code
-  title="attr-itemfor">itemfor</code> content attribute.</p>
-
   </div>
 
-<!--END microdata1--><!--END html5-->
-<!--START microdata2-->
-<!--END microdata2-->
-<!--START microdata3-->
-<!--END microdata3-->
-<!--START html5-->
+
+<!--END html5-->
+<!--START vocabs-->
 
 
   <h3>Predefined vocabularies</h3>
 
   <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>General</h4>
-
-  <p>The <span>predefined global property name</span> <dfn
-  title="md-about"><code>about</code></dfn> can be used to name an
-  <span title="concept-item">item</span> for the purposes of
-  identifying or referring to the data defined in that item.</p>
-
-  <p>A single property with the name <code
-  title="md-about">about</code> may be present within each <span
-  title="concept-item">item</span>. Its <span
-  title="concept-property-value">value</span> must be an
-  <span>absolute URL</span>.</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>
 
   <p>The following are the type's <span title="predefined property
   name">predefined 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
@@ -51407,20 +51610,41 @@ document.body.appendChild(outer);</pre>
  &lt;span itemprop="adr" item>
   &lt;span itemprop="street-address">1600 Amphitheatre Parkway&lt;/span> &lt;br>
   &lt;span itemprop="street-address">Building 43, Second Floor&lt;/span> &lt;br>
   &lt;span itemprop="locality">Mountain View&lt;/span>,
    &lt;span itemprop="region">CA&lt;/span> &lt;span itemprop="postal-code">94043&lt;/span>
  &lt;/span>
 &lt;/address></pre>
 
   </div>
 
+  <div class="example">
+
+   <p>The <span title="md-vcard">vCard</span> vocabulary can be used
+   to just mark up people's names:</p>
+
+   <pre>&lt;span itemscope itemtype=vcard>&lt;span itemprop=fn>George Washington&lt;/span>&lt;/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
+   map to the following vCard:</p>
+
+   <pre>BEGIN:VCARD
+PROFILE:VCARD
+VERSION:3.0
+SOURCE:<var title="">document's address</var>
+FN:George Washington
+N:Washington;George;;;
+END:VCARD</pre>
+
+  </div>
+
 
 
   <h4>vEvent</h4>
 
   <p>An item with the <span>predefined type</span> <dfn
   title="md-vevent"><code>vevent</code></dfn> represents an event.</p>
 
   <p>The following are the type's <span title="predefined property
   name">predefined property names</span>. They are based on the
   vocabulary defined in the iCalendar specification, where more
@@ -52209,28 +52433,27 @@ document.body.appendChild(outer);</pre>
   href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative
   Commons Attribution-Share Alike 3.0 United States License&lt;/a>
   and the &lt;a <strong>itemprop="license"</strong>
   href="http://www.opensource.org/licenses/mit-license.php">MIT
   license&lt;/a>.&lt;/small>
 &lt;/figure></pre>
 
   </div>
 
 
+  <!--START html5-->
 
   <div class="impl">
 
   <h3>Converting HTML to other formats</h3>
 
-  <p>In all these algorithms, except where otherwise stated,
-  operations that iterate over a series of elements (whether items,
-  properties, or otherwise) must do so in <span>tree order</span>.</p>
+  <!--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>
 
@@ -52257,20 +52480,23 @@ document.body.appendChild(outer);</pre>
    <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
   <code>Document</code>, a user agent must run the following algorithm
   to <dfn title="extracting JSON">extract the microdata from those
   nodes into a JSON form</dfn>:</p>
 
   <ol>
 
@@ -52293,33 +52519,41 @@ document.body.appendChild(outer);</pre>
 
   </ol>
 
   <p>When the user agent is to <dfn>get the object</dfn> for an item
   <var title="">item</var>, it must run the following substeps:</p>
 
   <ol>
 
    <li><p>Let <var title="">result</var> be an empty object.</p></li>
 
-   <li><p>Add an entry to <var title="">result</var> called "<code
-   title="">type</code>" whose value is the <span>item type</span> of
-   <var title="">item</var>.</p></li>
+   <li><p>If the <var title="">item</var> has an <span>item
+   type</span>, add an entry to <var title="">result</var> called
+   "<code title="">type</code>" whose value is the <span>item
+   type</span> of <var title="">item</var>.</p></li>
+
+   <li><p>If the <var title="">item</var> has an <span>global
+   identifier</span>, add an entry to <var title="">result</var>
+   called "<code title="">id</code>" whose value is the <span>global
+   identifier</span> of <var title="">item</var>.</p></li>
 
    <li><p>Let <var title="">properties</var> be an empty
    object.</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="">item</var>, run the following substeps:</p>
+    more <span>property names</span> and is one of <span title="the
+    properties of an item">the properties of the item</span> <var
+    title="">item</var>, in the order those elements are given by the
+    algorithm that returns <span>the properties of an item</span>, run
+    the following substeps:</p>
 
     <ol>
 
      <li><p>Let <var title="">value</var> be the <span
      title="concept-property-value">property value</span> of <var
      title="">element</var>.</p></li>
 
      <li><p>If <var title="">value</var> is an <span
      title="concept-item">item</span>, then <span>get the
      object</span> for <var title="">value</var>, and then replace
@@ -52448,23 +52682,22 @@ document.body.appendChild(outer);</pre>
     <dl class="triple">
      <dt>subject   <dd> <span>the document's current address</span>
      <dt>predicate <dd> the concatenation of the string "<code title="">http://www.w3.org/1999/xhtml/vocab#</code>" and the value of the element's <code title="attr-meta-name">name</code> attribute, <span>converted to ASCII lowercase</span>, with any characters in the value that are not valid in the &lt;ifragment> production of the IRI syntax being %-escaped <a href="#refsRFC3987">[RFC3987]</a>
      <dt>object    <dd> the value of the element's <code title="attr-meta-content">content</code> attribute, as a plain literal, with the language information set from the <span>language</span> of the element, if it is not unknown.
     </dl>
 
    </li>
 
    <li>
 
-    <p>For each <code>article</code>, <code>section</code>,
-    <code>blockquote</code>, and <code>q</code> element in the
-    <code>Document</code> that has a <code title="">cite</code>
+    <p>For each <code>blockquote</code> and <code>q</code> element in
+    the <code>Document</code> that has a <code title="">cite</code>
     attribute that <span title="resolve a url">resolves</span>
     successfully relative to the element, 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/source</code>
      <dt>object    <dd> the <span>absolute URL</span> that results from <span title="resolve a URL">resolving</span> the value of the element's <code title="">cite</code> attribute relative to the element
     </dl>
 
@@ -52491,153 +52724,143 @@ document.body.appendChild(outer);</pre>
       <p>Generate the following triple:</p>
 
       <dl class="triple">
        <dt>subject   <dd> <span>the document's current address</span>
        <dt>predicate <dd> <code title="">http://www.w3.org/1999/xhtml/vocab#item</code>
        <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>generate the triples for an
   item</dfn> <var title="">item</var>, it must follow the following
   steps:</p>
 
   <ol>
 
-   <li><p>If of the elements whose <span
-   title="concept-item-corresponding">corresponding item</span> is
-   <var title="">item</var>, there are any with a <span
-   title="property names">property name</span> equal to the string
-   "<code title="md-about">about</code>", and the first such element
-   is a <span title="URL property elements">URL property
-   element</span>, and its <span
-   title="concept-property-value">value</span> is not an <span
-   title="concept-item">item</span>, let <var title="">subject</var>
-   be the <span title="concept-property-value">value</span> of that
-   property. Otherwise, let <var title="">subject</var> be a new blank
-   node.</p></li>
+   <li><p>If <var title="">item</var> has a <span>global
+   identifier</span> and that <span>global identifier</span> is an
+   <span>absolute URL</span>, let <var title="">subject</var> be that
+   <span>global identifier</span>. Otherwise, let <var
+   title="">subject</var> be a new blank node.</p></li>
 
    <li><p>Let <var title="">type</var> be the <span>item type</span>
    of <var title="">item</var>.</p></li>
 
-   <li>
-
-    <p>If <var title="">type</var> is neither the empty string nor an
-    <span>absolute URL</span>, then let <var title="">type</var> be
-    the result of concatenating the string "<code
-    title="">http://www.w3.org/1999/xhtml/custom#</code>" with the
-    <var title="">type</var>, with any characters in <var
-    title="">type</var> that are not valid in the &lt;ifragment>
-    production of the IRI syntax being %-escaped.</p>
-
-   </li>
+   <li><p>If <var title="">type</var> is neither the empty string nor
+   an <span>absolute URL</span>, then let <var title="">type</var> be
+   the result of concatenating the string "<code
+   title="">http://www.w3.org/1999/xhtml/custom#</code>" with the <var
+   title="">type</var>, with any characters in <var
+   title="">type</var> that are not valid in the &lt;ifragment>
+   production of the IRI syntax being %-escaped.</p></li>
 
    <li>
 
     <p>If <var title="">type</var> is not the empty string, generate
     the following triple:</p>
 
     <dl class="triple">
      <dt>subject   <dd> <var title="">subject</var>
      <dt>predicate <dd> <code title="">http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code>
      <dt>object    <dd> <var title="">type</var>
     </dl>
 
    </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="">item</var>, run the following substeps:</p>
+    more <span>property names</span> and is one of <span title="the
+    properties of an item">the properties of the item</span> <var
+    title="">item</var>, in the order those elements are given by the
+    algorithm that returns <span>the properties of an item</span>, run
+    the following substeps:</p>
 
     <ol>
 
      <li><p>Let <var title="">value</var> be the <span
      title="concept-property-value">property value</span> of <var
      title="">element</var>.</p></li>
 
      <li><p>If <var title="">value</var> is an <span
      title="concept-item">item</span>, then <span title="generate the
      triples for an item">generate the triples</span> for <var
      title="">value</var>, and then replace <var title="">value</var>
      with the subject returned from those steps.</p></li>
 
      <!-- could support <time> here somehow, though we'd have to
      reserialise it, check if the <time> was valid, check if it had a
-     .date, a .time, a .timezone, etc. -->
+     date, a time, a timezone, etc. -->
 
      <li><p>Otherwise, if <var title="">element</var> is not one of
      the <span>URL property elements</span>, let <var
      title="">value</var> be a plain literal, with the language
      information set from the <span>language</span> of the element, if
      it is not unknown.</p></li>
 
      <li>
 
       <p>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>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>
 
        <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>
-
-       <li><p>Otherwise, if <var title="">name</var> is not an
-       <span>absolute URL</span>, then let <var title="">name</var> be
-       the result of concatenating the string "<code
+-->
+       <li><p><!--Otherwise...--> If <var title="">name</var> is not
+       an <span>absolute URL</span>, then let <var title="">name</var>
+       be the result of concatenating the string "<code
        title="">http://www.w3.org/1999/xhtml/custom#</code>" with <var
        title="">name</var>, with any characters in <var
        title="">name</var> that are not valid in the &lt;ifragment>
        production of the IRI syntax being %-escaped. <a
        href="#refsRFC3987">[RFC3987]</a></p></li>
 
        <li>
 
         <p>Generate the following triple:</p>
 
@@ -52654,21 +52877,22 @@ document.body.appendChild(outer);</pre>
      </li>
 
     </ol>
 
    </li>
 
    <li><p>Return <var title="">subject</var>.</p></li>
 
   </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>
@@ -53645,22 +53869,22 @@ document.body.appendChild(outer);</pre>
 
   </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
   agent must run the following algorithm to <dfn title="extracting
   Atom">extract an Atom feed</dfn>:</p>
 
   <ol>
 
    <li><p>If the <code>Document</code> <var title="">source</var> does
@@ -53669,40 +53893,42 @@ document.body.appendChild(outer);</pre>
    documents that contain distinct articles.</p>
 
    <li><p>Let <var title="">R</var> be an empty <span title="XML
    documents">XML</span> <code>Document</code> object whose <span
    title="the document's address">address</span> is user-agent
    defined.</p></li>
 
    <li><p>Append a <code title="">feed</code> element in the
    <span>Atom namespace</span> to <var title="">R</var>.</p></li>
 
+<!--
    <li>
 
     <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
     title="attr-link-rel">rel</code> attribute's value includes the
     keyword <code title="rel-icon">icon</code>, and that element also
     has an <code title="attr-link-href">href</code> attribute whose
     value successfully <span title="resolve a url">resolves</span>
     relative to the <code>link</code> element, then append an <code
     title="">icon</code> element in the <span>Atom namespace</span> to
@@ -53918,20 +54144,21 @@ document.body.appendChild(outer);</pre>
 
      <li>
 
       <p>Append a <code title="">title</code> element in the
       <span>Atom namespace</span> to <var title="">E</var> whose
       contents is a text node with its data set to <var
       title="">heading text</var>.</p>
 
      </li>
 
+<!--
      <li>
 
       <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
@@ -53940,20 +54167,21 @@ document.body.appendChild(outer);</pre>
       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
       environment that has <span title="concept-bc-noscript">scripting
       disabled</span>, has no <span title="plugin">plugins</span>, and
       fails any attempt to <span title="fetch">fetch</span> any
       resources. Let <var title="">cloned article</var> be the
       resulting clone <code>article</code> element.</p>
 
@@ -69119,42 +69347,44 @@ interface <dfn>SQLTransactionSync</dfn> {
     <p>The user agent must take the <span>list of dragged nodes</span>
     and <span title="extracting JSON">extract the microdata from those
     nodes into a JSON form</span>, and then must add the resulting
     string to the <code
     title="dom-DragEvent-dataTransfer">dataTransfer</code> member,
     associated with the <code
     title="">application/microdata+json</code> format.</p>
 
    </li>
 
+<!-- v2: deal with multiple vCards -->
+<!--
    <li>
 
     <p>The user agent must take the <span>list of dragged nodes</span>
     and <span title="extracting a vCard">extract the vCard data from
     those nodes</span>, and then must add the resulting string to the
     <code title="dom-DragEvent-dataTransfer">dataTransfer</code>
     member, associated with the <code
     title="">text/directory;profile=vcard</code> format.</p>
-    <!-- v2: deal with multiple vCards -->
 
    </li>
 
    <li>
 
     <p>The user agent must take the <span>list of dragged nodes</span>
     and <span title="extracting vEvent data">extract the vEvent data
     from those nodes</span>, and then must add the resulting string to
     the <code title="dom-DragEvent-dataTransfer">dataTransfer</code>
     member, associated with the <code
     title="">text/calendar;component=vevent</code> format.</p>
 
    </li>
+-->
 
    <!-- v2: text/html -->
 
    <li>
 
     <p>The user agent must run the following steps:</p>
 
     <ol>
 
      <li><p>Let <var title="">urls</var> be an empty list of <span
@@ -74506,22 +74736,22 @@ Proxy-authorization: Basic ZWRuYW1vZGU6bm9jYXBlcyE=</pre>
      the value is not exactly equal to <var title="">protocol</var>,
      then <span>fail the Web Socket connection</span> and abort these
      steps. (If no <var title="">protocol</var> was specified, the
      header is ignored.)</p></dd>
 
 
      <dt>If the entry's name is "<code title="">set-cookie</code>" or
      "<code title="">set-cookie2</code>" or another cookie-related
      header name</dt>
 
-     <dd><p>Handle the cookie as defined by the appropriate spec, with
-     the resource being the one with the host <var
+     <dd><p>Handle the cookie as defined by the appropriate
+     specification, with the resource being the one with the host <var
      title="">host</var>, the port <var title="">port</var>, the path
      (and possibly query parameters) <var title="">resource
      name</var>, and the scheme <code title="">http</code> if <var
      title="">secure</var> is false and <code title="">https</code> if
      <var title="">secure</var> is true. <a
      href="#refsRFC2109">[RFC2109]</a> <a
      href="#refsRFC2965">[RFC2965]</a></p></dd>
 
 
      <dt>Any other name</dt>
@@ -91214,20 +91444,21 @@ interface <span>HTMLDocument</span> {
   Korn&eacute;l P&aacute;l,
   Kristof Zelechovski,
   &#x9ed2;&#x6fa4;&#x525b;&#x5fd7; (KUROSAWA Takeshi),
   Kyle Hofmann<!-- Ozob -->,
   L&eacute;onard Bouchet,
   Lachlan Hunt,
   Larry Masinter,
   Larry Page,
   Lars Gunther<!-- Keryx Web -->,
   Lars Solberg,
+  Laura Granka,
   Laura L. Carlson,
   Laura Wisewell,
   Laurens Holst,
   Lee Kowalkowski,
   Leif Halvard Silli,
   Lenny Domnitser,
   Leons Petrazickis,
   Logan<!-- on moz irc -->,
   Loune,
   Luke Kenneth Casson Leighton,
@@ -91412,20 +91643,24 @@ interface <span>HTMLDocument</span> {
   <p>Special thanks to Richard Williamson for creating the first
   implementation of <code>canvas</code> in Safari, from which the
   canvas feature was designed.</p>
 
   <p>Special thanks also to the Microsoft employees who first
   implemented the event-based drag-and-drop mechanism, <code
   title="attr-contenteditable">contenteditable</code>, and other
   features first widely deployed by the Windows Internet Explorer
   browser.</p>
 
+  <p>Thanks to the participants of the microdata usability study for
+  allowing us to use their mistakes as a guide for designing the
+  microdata feature.</p>
+
   <div class="impl">
 
   <p>Special thanks and $10,000 to David Hyatt who came up with a
   broken implementation of the <a href="#adoptionAgency">adoption
   agency algorithm</a> that the editor had to reverse engineer and fix
   before using it in the parsing section.</p>
 
   </div>
 
   <p>Thanks to the many sources that provided inspiration for the

|