Fix how drag and drop exports data. (whatwg r3115)

Fix how drag and drop exports data. (whatwg r3115)

Diffs for this change per section: 
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#extracting-a-vcard
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#list-of-dragged-nodes
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#status-of-this-document
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#source-node
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#extracting-vevent-data
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#a-vocabulary-and-associated-apis-for-html-and-xhtml
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#escaping-the-vcard-text-string
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#extracting-json
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#editor-s-draft-date-1-january-1970
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#generate-the-triples-for-an-item
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#vcard-0
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2273.html#icalendar

http://people.w3.org/mike/diffs/html5/spec/Overview.diff.html
http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.2272&r2=1.2273&f=h
http://html5.org/tools/web-apps-tracker?from=3114&to=3115

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.2272
retrieving revision 1.2273
diff -u -d -r1.2272 -r1.2273
--- Overview.html 18 May 2009 08:23:21 -0000 1.2272
+++ Overview.html 19 May 2009 01:11:55 -0000 1.2273
@@ -152,7 +152,7 @@
    <h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2>
    <!--ZZZ:-->
    <!--<h2 class="no-num no-toc">W3C Working Draft 23 April 2009</h2>-->
-   <h2 class="no-num no-toc" id="editor-s-draft-date-1-january-1970">Editor's Draft 18 May 2009</h2>
+   <h2 class="no-num no-toc" id="editor-s-draft-date-1-january-1970">Editor's Draft 19 May 2009</h2>
    <!--:ZZZ-->
    <dl><!-- ZZZ: update the month/day (twice), (un)comment out
     <dt>This Version:</dt>
@@ -245,7 +245,7 @@
   track.
   <!--ZZZ:-->
   <!--This specification is the 23 April 2009 Working Draft.-->
-  This specification is the 18 May 2009 Editor's Draft.
+  This specification is the 19 May 2009 Editor's Draft.
   <!--:ZZZ-->
   </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>This specification is also being produced by the <a href="http://www.whatwg.org/">WHATWG</a>. The two specifications are
   identical from the table of contents onwards.</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) --><p>This specification is intended to replace (be a new version of)
@@ -39322,21 +39322,16 @@
 
    <li><p>Add an entry to <var title="">result</var> called "<code title="">items</code>" whose value is the array <var title="">items</var>.</li>
 
-   <li><p>Let <var title="">current node</var> be <var title="">node</var>.</p>
-
-   <li><p>Let <var title="">citation</var> be null.</p>
-
-   <li><p><i>Citation search:</i> If <var title="">current node</var>
-   has a descendant element that is a <a href="#top-level-microdata-items" title="top-level microdata
-   items">top-level microdata item</a> with the type <code title="md-bibtex"><a href="#md-bibtex">bibtex</a></code>, then <a href="#get-the-object">get the object</a>
-   for the first such element in <a href="#tree-order">tree order</a> and let <var title="">citation</var> be that object.</li>
+   <li><p>Let <var title="">citations</var> be an empty
+   array.</li>
 
-   <li><p>If <var title="">citation</var> is null and <var title="">current node</var> has a parent node, let <var title="">current node</var> be its parent node and jump back to the
-   step labeled <i>citation search</i>.</li>
+   <li><p>For each <var title="">node</var> in <var title="">nodes</var> that is <a href="#sectioning-content-0">sectioning content</a>, check
+   if there are any <code><a href="#the-footer-element">footer</a></code> elements that <a href="#applyToSection">apply</a> to <var title="">node</var> and
+   that contain any elements that are <a href="#top-level-microdata-items" title="top-level microdata
+   items">top-level microdata items</a> with the type <code title="md-bibtex"><a href="#md-bibtex">bibtex</a></code>, and if so, then <a href="#get-the-object">get the
+   object</a> for each such element and add them to <var title="">citations</var>.</li>
 
-   <li><p>If <var title="">citation</var> is not null, add an entry to
-   <var title="">result</var> called "<code title="">citation</code>"
-   whose value is the <var title="">citation</var> object.</li>
+   <li><p>Add an entry to <var title="">result</var> called "<code title="">citations</code>" whose value is the array <var title="">citations</var>.</li>
 
    <li><p>Return the result of serializing <var title="">result</var>
    to JSON.</li>
@@ -39587,21 +39582,13 @@
 
    <li><p>Return <var title="">subject</var>.</li>
 
-  </ol><h4 id="vcard-0"><span class="secno">5.5.3 </span>vCard</h4><p>Given a node <var title="">node</var> in a <code>Document</code>,
-  a user agent must run the following algorithm to <dfn id="extracting-a-vcard" title="extracting a vCard">extract any <code title="md-vcard">vcard</code> data represented by that
-  node</dfn>:<ol><li>
-
-    <p>If <var title="">node</var> is not an element that is an <a href="#concept-item" title="concept-item">item</a> with the type <code title="md-vcard"><a href="#md-vcard">vcard</a></code>, then run these substeps:</p>
-
-    <ol><li><p>If <var title="">node</var> has no parent, then there is
-     no vCard. Abort the algorithm, returning nothing.</li>
-
-     <li><p>Let <var title="">node</var> be <var title="">node</var>'s
-     parent.</li>
-
-     <li><p>Restart the entire algorithm with the new value of <var title="">node</var>.</li>
+  </ol><h4 id="vcard-0"><span class="secno">5.5.3 </span>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 id="extracting-a-vcard" title="extracting a vCard">extract any <code title="md-vcard">vcard</code> data represented by those nodes</dfn>
+  (only the first vCard is returned):<ol><li><p>If none of the nodes in <var title="">nodes</var> are <a href="#concept-item" title="concept-item">items</a> with the type <code title="md-vcard"><a href="#md-vcard">vcard</a></code>, then there is no vCard. Abort the
+   algorithm, returning nothing.</li>
 
-    </ol></li>
+   <li><p>Let <var title="">node</var> be the first node in <var title="">nodes</var> that is an <a href="#concept-item" title="concept-item">item</a> with the type <code title="md-vcard"><a href="#md-vcard">vcard</a></code>.</li>
 
    <li><p>Let <var title="">output</var> be an empty string.</li>
 
@@ -40096,22 +40083,11 @@
   </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"><a href="#md-vcard">vcard</a></code> <a href="#predefined-type">predefined type</a> and <a href="#predefined-property-name" title="predefined property name">predefined property
   names</a>.</p><!-- of course since vcard doesn't define error
-  handling, this is somewhat problematic. --><h4 id="icalendar"><span class="secno">5.5.4 </span>iCalendar</h4><p>Given a node <var title="">node</var> in a <code>Document</code>,
-  a user agent must run the following algorithm to <dfn id="extracting-a-vevent" title="extracting a vEvent">extract any <code title="md-vevent">vevent</code> data represented by that
-  node</dfn>:<ol><li>
-
-    <p>If <var title="">node</var> is not an element that is an <a href="#concept-item" title="concept-item">item</a> with the type <code title="md-vevent"><a href="#md-vevent">vevent</a></code>, then run these substeps:</p>
-
-    <ol><li><p>If <var title="">node</var> has no parent, then there is
-     no event to output. Abort the algorithm, returning
-     nothing.</li>
-
-     <li><p>Let <var title="">node</var> be <var title="">node</var>'s
-     parent.</li>
-
-     <li><p>Restart the entire algorithm with the new value of <var title="">node</var>.</li>
-
-    </ol></li>
+  handling, this is somewhat problematic. --><h4 id="icalendar"><span class="secno">5.5.4 </span>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 id="extracting-vevent-data" title="extracting vEvent data">extract any <code title="md-vevent">vevent</code> data represented by those
+  nodes</dfn>:<ol><li><p>If none of the nodes in <var title="">nodes</var> are <a href="#concept-item" title="concept-item">items</a> with the type <code title="md-vevent"><a href="#md-vevent">vevent</a></code>, then there is no vEvent
+   data. Abort the algorithm, returning nothing.</li>
 
    <li><p>Let <var title="">output</var> be an empty string.</li>
 
@@ -40124,78 +40100,84 @@
    <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type "<code title="">VERSION</code>" and the value "<code title="">2.0</code>"
    to <var title="">output</var>.</li>
 
-   <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type "<code title="">BEGIN</code>" and the value "<code title="">VEVENT</code>"
-   to <var title="">output</var>.</li>
+   <li>
 
-   <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> 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="#references">[RFC2445]</a></li>
+    <p>For each node <var title="">node</var> in <var title="">nodes</var> that is an <a href="#concept-item" title="concept-item">item</a> with the type <code title="md-vevent"><a href="#md-vevent">vevent</a></code>, run the following steps:</p>
 
-   <li><p>If there is a property named <code title="md-about"><a href="#md-about">about</a></code> whose <a href="#concept-item-corresponding" title="concept-item-corresponding">corresponding item</a> is
-   <var title="">node</var> and the element of the first such property
-   is a <a href="#url-property-elements" title="URL property elements">URL property
-   element</a> and has a <a href="#concept-property-value" title="concept-property-value">value</a> that is not an <a href="#concept-item" title="concept-item">item</a>, <a href="#add-an-icalendar-line">add an iCalendar line</a>
-   with the type "<code title="">UID</code>" and that property's
-   <a href="#concept-property-value" title="concept-property-value">value</a> as the value to
-   <var title="">output</var>.</li>
+    <ol><li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type "<code title="">BEGIN</code>" and the value "<code title="">VEVENT</code>"
+     to <var title="">output</var>.</li>
 
-   <li>
+     <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> 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="#references">[RFC2445]</a></li>
 
-    <p>For each element <var title="">element</var> that has one or
-    more <a href="#property-names">property names</a> and whose <a href="#concept-item-corresponding" title="concept-item-corresponding">corresponding item</a> is
-    <var title="">node</var>: for each name <var title="">name</var>
-    in <var title="">element</var>'s <a href="#property-names">property names</a>, run
-    the appropriate set of substeps from the following list:</p>
+     <li><p>If there is a property named <code title="md-about"><a href="#md-about">about</a></code> whose <a href="#concept-item-corresponding" title="concept-item-corresponding">corresponding item</a> is
+     <var title="">node</var> and the element of the first such property
+     is a <a href="#url-property-elements" title="URL property elements">URL property
+     element</a> and has a <a href="#concept-property-value" title="concept-property-value">value</a> that is not an <a href="#concept-item" title="concept-item">item</a>, <a href="#add-an-icalendar-line">add an iCalendar line</a>
+     with the type "<code title="">UID</code>" and that property's
+     <a href="#concept-property-value" title="concept-property-value">value</a> as the value to
+     <var title="">output</var>.</li>
 
-    <dl><dt>If <var title="">name</var> is equal to the string "<code title="md-about"><a href="#md-about">about</a></code>"</dt>
+     <li>
 
-     <dt>If the property's <a href="#concept-property-value" title="concept-property-value">value</a> is an <a href="#concept-item" title="concept-item">item</a></dt>
+      <p>For each element <var title="">element</var> that has one or
+      more <a href="#property-names">property names</a> and whose <a href="#concept-item-corresponding" title="concept-item-corresponding">corresponding item</a> is
+      <var title="">node</var>: for each name <var title="">name</var>
+      in <var title="">element</var>'s <a href="#property-names">property names</a>, run
+      the appropriate set of substeps from the following list:</p>
 
-     <dd>
+      <dl><dt>If <var title="">name</var> is equal to the string "<code title="md-about"><a href="#md-about">about</a></code>"</dt>
 
-      <p>Skip the property.</p>
+       <dt>If the property's <a href="#concept-property-value" title="concept-property-value">value</a> is an <a href="#concept-item" title="concept-item">item</a></dt>
 
-     </dd>
+       <dd>
 
+        <p>Skip the property.</p>
 
-     <dt>If <var title="">element</var> is a <code><a href="#the-time-element">time</a></code>
-     element</dt>
+       </dd>
 
-     <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 <a href="#concept-property-value" title="concept-property-value">value</a>.</p>
+       <dt>If <var title="">element</var> is a <code><a href="#the-time-element">time</a></code>
+       element</dt>
 
-      <p>If the property's <a href="#concept-property-value" title="concept-property-value">value</a> is a <a href="#valid-date-string">valid
-      date string</a> then <a href="#add-an-icalendar-line">add an iCalendar line</a>
-      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>
+       <dd>
 
-      <p>Otherwise, if the property's <a href="#concept-property-value" title="concept-property-value">value</a> is a <a href="#valid-global-date-and-time-string">valid
-      global date and time string</a> then <a href="#add-an-icalendar-line">add an iCalendar
-      line</a> 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>Let <var title="">value</var> be the result of stripping
+        all U+002D HYPHEN-MINUS (-) and U+003A COLON (:) characters
+        from the property's <a href="#concept-property-value" title="concept-property-value">value</a>.</p>
 
-      <p>Otherwise skip the property.</p>
+        <p>If the property's <a href="#concept-property-value" title="concept-property-value">value</a> is a <a href="#valid-date-string">valid
+        date string</a> then <a href="#add-an-icalendar-line">add an iCalendar line</a>
+        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>
 
-     </dd>
+        <p>Otherwise, if the property's <a href="#concept-property-value" title="concept-property-value">value</a> is a <a href="#valid-global-date-and-time-string">valid
+        global date and time string</a> then <a href="#add-an-icalendar-line">add an iCalendar
+        line</a> 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>
 
-     <dt>Otherwise</dt>
+       </dd>
 
-     <dd>
 
-      <p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type <var title="">name</var> and the value <var title="">value</var> to
-      <var title="">output</var>.</p>
+       <dt>Otherwise</dt>
 
-     </dd>
+       <dd>
 
-    </dl></li>
+        <p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type <var title="">name</var> and the value <var title="">value</var> to
+        <var title="">output</var>.</p>
 
-   <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type "<code title="">END</code>" and the value "<code title="">VEVENT</code>"
-   to <var title="">output</var>.</li>
+       </dd>
+
+      </dl></li>
+
+     <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type "<code title="">END</code>" and the value "<code title="">VEVENT</code>"
+     to <var title="">output</var>.</li>
+
+    </ol></li>
 
    <li><p><a href="#add-an-icalendar-line">Add an iCalendar line</a> with the type "<code title="">END</code>" and the value "<code title="">VCALENDAR</code>" to <var title="">output</var>.</li>
 
@@ -49613,6 +49595,14 @@
   <p>Multiple events are fired on the <a href="#source-node">source node</a> during
   the course of the drag-and-drop operation.</p>
 
+  <hr><p>The <dfn id="list-of-dragged-nodes">list of dragged nodes</dfn> also depends on the kind of
+  drag. If it is a selection that is being dragged, then the
+  <a href="#list-of-dragged-nodes">list of dragged nodes</a> contains, in <a href="#tree-order">tree
+  order</a>, every node that is partially or completely included in
+  the selection (including all their ancestors). Otherwise, the
+  <a href="#list-of-dragged-nodes">list of dragged nodes</a> contains only the <a href="#source-node">source
+  node</a>.</p>
+
   <hr><p>If it is a selection that is being dragged, the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> member of the event
   must be created with no nodes. Otherwise, it must be created
   containing just the <a href="#source-node">source node</a>. Script can use the
@@ -49620,56 +49610,101 @@
   to add further elements to the list of what is being dragged.</p>
 
   <p>The <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code>
-  member of the event must have added to it the following:</p>
+  member of the event also has data added to it, as follows:</p>
 
-  <ul><li>If it is a selection that is being dragged, the text of the
-   selection, associated with the <code title="">text/plain</code>
-   format.</li>
+  <ul><li>
 
-   <li>If it is a selection that is being dragged, then the string
-   resulting from making a list of every node that is partially or
-   completely included in the selection and <a href="#extracting-json" title="extracting
-   JSON">extracting the microdata from those nodes into a JSON
-   form</a>, associated with the <code title="">application/microdata+json</code> format.</li> <!-- XXX
-   register -->
+    <p>If it is a selection that is being dragged, then the user agent
+    must add the text of the selection to the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> member,
+    associated with the <code title="">text/plain</code> format.</p>
 
-   <li>If it is a selection that is being dragged, then the string
-   resulting from making a list of every node that is partially or
-   completely included in the selection and <a href="#extracting-a-vcard" title="extracting a
-   vCard">extracting the vCard data</a> from the first node in that
-   list that is an <a href="#concept-item" title="concept-item">item</a> with the
-   type <code title="md-vcard"><a href="#md-vcard">vcard</a></code>, if any, associated with
-   the <code title="">text/directory;profile=vcard</code> format.</li>
-   <!-- v2 more than one? -->
+   </li>
 
-   <li>If it is a selection that is being dragged, then the string
-   resulting from making a list of every node that is partially or
-   completely included in the selection and <a href="#extracting-a-vevent" title="extracting a
-   vEvent">extracting the vEvent data</a> from the first node in
-   that list that is an <a href="#concept-item" title="concept-item">item</a> with
-   the type <code title="md-vevent"><a href="#md-vevent">vevent</a></code>, if any, associated
-   with the <code title="">text/calendar;component=vevent</code>
-   format.</li> <!-- v2 more than one? -->
+   <li>
 
-   <li>If it is a selection that is being dragged, then the string
-   resulting from making a list of every node that is partially or
-   completely included in the selection and concatenating the strings
-   obtained from <a href="#extracting-bibtex" title="extracting BibTeX">extracting BibTeX
-   data</a> from all the nodes in that list that are <a href="#concept-item" title="concept-item">items</a> with the type <code title="md-bibtex"><a href="#md-bibtex">bibtex</a></code>, if any, associated with the <code title="">application/microdata+bibtex</code> format.</li> <!-- XXX
+    <p>The user agent must take the <a href="#list-of-dragged-nodes">list of dragged nodes</a>
+    and <a href="#extracting-json" title="extracting JSON">extract the microdata from those
+    nodes into a JSON form</a>, and then must add the resulting
+    string to the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> member,
+    associated with the <code title="">application/microdata+json</code> format.</li> <!-- XXX
+    register -->
+
+   <li>
+
+   <li>
+
+    <p>The user agent must take the <a href="#list-of-dragged-nodes">list of dragged nodes</a>
+    and <a href="#extracting-a-vcard" title="extracting a vCard">extract the vCard data from
+    those nodes</a>, and then must add the resulting string to the
+    <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></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 <a href="#list-of-dragged-nodes">list of dragged nodes</a>
+    and <a href="#extracting-vevent-data" title="extracting vEvent data">extract the vEvent data
+    from those nodes</a>, and then must add the resulting string to
+    the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code>
+    member, associated with the <code title="">text/calendar;component=vevent</code> format.</p>
+
+   </li>
+
+   <li><p>For each node <var title="">node</var> that is
+   <a href="#sectioning-content-0">sectioning content</a> in the <a href="#list-of-dragged-nodes">list of dragged
+   nodes</a>, the user agent must check if there are any
+   <code><a href="#the-footer-element">footer</a></code> elements that <a href="#applyToSection">apply</a> to <var title="">node</var> and
+   that contain any elements that are <a href="#top-level-microdata-items" title="top-level microdata
+   items">top-level microdata items</a> with the type <code title="md-bibtex"><a href="#md-bibtex">bibtex</a></code>, and if so, then the user agent
+   must concatenate the strings obtained from <a href="#extracting-bibtex" title="extracting
+   BibTeX">extracting BibTeX data</a> from all such nodes, and then
+   must add the resulting string to the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> member,
+   associated with the <code title="">application/microdata+bibtex</code> format.</li> <!-- XXX
    register -->
 
    <li><p class="XXX">text/html fragment</p>
 
-   <li>If it is an <code><a href="#the-img-element">img</a></code> element being dragged, the value
-   of the element's <code title="dom-img-src"><a href="#dom-img-src">src</a></code> DOM
-   attribute, associated with the <code title="">text/uri-list</code>
-   format.</li>
+   <li>
 
-   <li>If it is an <code><a href="#the-a-element">a</a></code> element being dragged, the value of
-   the element's <code title="dom-a-href"><a href="#dom-a-href">href</a></code> DOM attribute,
-   associated with the <code title="">text/uri-list</code> format.</li>
+    <p>The user agent must run the following steps:</p>
 
-  </ul><p>If the event is canceled, then the drag-and-drop operation must
+    <ol><li><p>Let <var title="">urls</var> be an empty list of <a href="#absolute-url" title="absolute URL">absolute URLs</a>.</li>
+
+     <li>
+
+      <p>For each <var title="">node</var> in <var title="">nodes</var>:</p>
+
+      <dl><dt>If the node is an <code><a href="#the-a-element">a</a></code> element with an <code title="attr-a-href">href</code></dt>
+
+       <dd>Add to <var title="">urls</var> the result of <a href="#resolve-a-url" title="resolve a url">resolving</a> the element's <code title="attr-a-href">href</code> content attribute relative to
+       the element.</dd>
+
+       <dt>If the node is an <code><a href="#the-img-element">img</a></code> element with an <code title="attr-img-src"><a href="#attr-img-src">src</a></code></dt>
+
+       <dd>Add to <var title="">urls</var> the result of <a href="#resolve-a-url" title="resolve a url">resolving</a> the element's <code title="attr-img-src"><a href="#attr-img-src">src</a></code> content attribute relative to the
+       element.</dd>
+
+       <!-- XXX others -->
+
+      </dl></li>
+
+     <li><p>If <var title="">urls</var> is still empty, abort these
+     steps.</li>
+
+     <li><p>Let <var title="">url string</var> be the result of
+     concatenating the strings in <var title="">urls</var>, in the
+     order they were added, separated by a U+000D CARRIAGE RETURN
+     U+000A LINE FEED character pair (CRLF).</li>
+
+     <li><p>Add <var title="">url string</var> to the <code title="dom-DragEvent-dataTransfer"><a href="#dom-dragevent-datatransfer">dataTransfer</a></code> member,
+     associated with the <code title="">text/uri-list</code>
+     format.</li>
+
+    </ol></li>
+
+  </ul><hr><p>If the event is canceled, then the drag-and-drop operation must
   not occur; the user agent must not continue with this algorithm.</p>
 
   <p>If it is not canceled, then the drag-and-drop operation must be

Received on Tuesday, 19 May 2009 01:14:12 UTC