Updated links to refer to HTML 5.0 CR instead of unstable HTML 5.1 nightly
authorAdrian Bateman <adrianba@microsoft.com>
Mon, 14 Jan 2013 16:55:53 -0800
changeset 65 752991ef017c
parent 64 122330340bf1
child 66 bf095d548533
Updated links to refer to HTML 5.0 CR instead of unstable HTML 5.1 nightly
encrypted-media/encrypted-media.html
encrypted-media/encrypted-media.xml
encrypted-media/spec-html.xsl
--- a/encrypted-media/encrypted-media.html	Mon Jan 14 16:48:15 2013 -0800
+++ b/encrypted-media/encrypted-media.html	Mon Jan 14 16:55:53 2013 -0800
@@ -20,7 +20,7 @@
     <div class="head">
       <p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" width="72" height="48"></a></p>
       <h1>Encrypted Media Extensions</h1>
-      <h2>W3C Editor's Draft 12 January 2013</h2>
+      <h2>W3C Editor's Draft 14 January 2013</h2>
       <h2><font color="red">Work in progress. For the latest stable revision, see <a href="http://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1b/encrypted-media/encrypted-media.html">v0.1b</a>.</font></h2>
       <dl>
   <dt>Latest published version:</dt>
@@ -214,17 +214,17 @@
 
     <p><a href="#key-system">Key Systems</a> usually require a block of initialization data containing information about the stream to be decrypted before they can construct a key request message.
     This block could be as simple as a key or content ID to send to a server or as complex as an opaque Key System-specific collection of data.
-    This initialization information may be obtained in some application-specific way or may be stored with the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.
+    This initialization information may be obtained in some application-specific way or may be stored with the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.
     Container formats may provide for storage of such information, possibly for multiple <a href="#key-system">Key Systems</a> in a single media file.
     </p>
 
-    <p>Initialization data found in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> is provided to the application in the <code><a href="#dom-initdata">initData</a></code> attribute of the <code><a href="#dom-needkey">needkey</a></code> event.
+    <p>Initialization data found in the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> is provided to the application in the <code><a href="#dom-initdata">initData</a></code> attribute of the <code><a href="#dom-needkey">needkey</a></code> event.
     This data has a container-specific format and is assumed to contain one or more generic or Key System-specific sets of initialization information.
     </p>
 
 
     <h2 id="extensions">2. Media Element Extensions</h2>
-    <p>We extend <dfn id="media-element" title="media element"><a href="http://dev.w3.org/html5/spec/video.html#media-element">media element</a></dfn> to allow decryption key acquisition to be handled in JavaScript.</p>
+    <p>We extend <dfn id="media-element" title="media element"><a href="http://www.w3.org/TR/html5/video.html#media-element">media element</a></dfn> to allow decryption key acquisition to be handled in JavaScript.</p>
     <p class="non-normative">Note: For some <a href="#cdm">CDMs</a>, "key" and "key request" correspond to "license" and "license request", respectively.</p>
 
     <pre class="idl">
@@ -233,7 +233,7 @@
   readonly attribute <a href="#dom-mediakeys">MediaKeys</a> <a href="#dom-keys">keys</a>;
   void <a href="#dom-setmediakeys">setMediaKeys</a>(<a href="#dom-mediakeys">MediaKeys</a> mediaKeys);
   
-  attribute <a href="http://dev.w3.org/html5/spec/webappapis.html#eventhandler">EventHandler</a> <a href="#dom-onneedkey">onneedkey</a>;
+  attribute <a href="http://www.w3.org/TR/html5/webappapis.html#eventhandler">EventHandler</a> <a href="#dom-onneedkey">onneedkey</a>;
 };
 
 [<a href="#dom-media-keys-constructor">Constructor</a> (DOMString <a href="#key-system">keySystem</a>)]
@@ -262,13 +262,13 @@
   attribute DOMString <a href="#dom-sourcekeysystem">keySystem</a>;
 };</pre>
 
-    <p>The <dfn id="dom-keys"><code>keys</code></dfn> attribute is the <code><a href="#dom-mediakeys">MediaKeys</a></code> being used when decrypting encrypted <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> for this <a href="#media-element">media element</a>.</p>
+    <p>The <dfn id="dom-keys"><code>keys</code></dfn> attribute is the <code><a href="#dom-mediakeys">MediaKeys</a></code> being used when decrypting encrypted <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> for this <a href="#media-element">media element</a>.</p>
     <p>The <dfn id="dom-setmediakeys"><code>setMediaKeys</code></dfn> method provides the <code><a href="#dom-mediakeys">MediaKeys</a></code> to use. When calling this method, the media element must run the following steps:</p>
     
     <ol>
       <li>
 <p>If loading has not started, throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code>.</p>
-      <p class="non-normative">In general, applications should wait for an event named <code><a href="#dom-needkey">needkey</a></code> or <code><a href="http://dev.w3.org/html5/spec/video.html#event-media-loadstart">loadstart</a></code> (per the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>) before calling this method.</p>
+      <p class="non-normative">In general, applications should wait for an event named <code><a href="#dom-needkey">needkey</a></code> or <code><a href="http://www.w3.org/TR/html5/video.html#event-media-loadstart">loadstart</a></code> (per the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>) before calling this method.</p>
       </li>
       <li>Set the <code><a href="#dom-keys">keys</a></code> attribute of the media element to <var>mediaKeys</var>.</li>
     </ol>
@@ -297,7 +297,7 @@
               </li></ul>
             </li>
             <li><p>Set the new object's <code><a href="#dom-error">error</a></code> attribute to the error object created in the previous step.</p></li>
-            <li><p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the new object.</p></li>
+            <li><p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the new object.</p></li>
             <li><p>Abort these steps.</p></li>
           </ol></dd>
         </dl>
@@ -348,7 +348,7 @@
               <ol>
                 <li>
 <p>Let <var title="true">key request</var> be a key request generated by the <a href="#cdm">CDM</a> using <var title="true">initData</var>, if provided.</p>
-                  <p>Note: <var title="true">cdm</var> must not use any data, including <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>, not provided via <var title="true">initData</var>.</p>
+                  <p>Note: <var title="true">cdm</var> must not use any data, including <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>, not provided via <var title="true">initData</var>.</p>
                   <p class="non-normative"><var title="true">type</var> may be used to determine how to interpret <var title="true">initData</var>.</p>
                 </li>
                 <li><p>If <var title="true">initData</var> is not null and contains a default URL for <var title="true">keySystem</var>, let <var title="true">defaultURL</var> be that URL.</p></li> 
@@ -364,13 +364,13 @@
                   </li></ul>
                 </li>
                 <li><p>Set the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object's <code><a href="#dom-error">error</a></code> attribute to the error object created in the previous step.</p></li>
-                <li><p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
+                <li><p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
                 <li><p>Abort the task.</p></li>
               </ol></dd>
             </dl>
           </li>
           <li>
-<p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the new object</p>
+<p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the new object</p>
             <p>The event is of type <code><a href="#dom-mediakeymessageevent">MediaKeyMessageEvent</a></code> and has:</p>
             <ul style="list-style-type:none"><li>
               <code><a href="#dom-message">message</a></code> = <var title="true">key request</var><br>
@@ -468,18 +468,18 @@
               <li><p>If another message needs to be sent to the server, let <var title="true">next message</var> be that message.</p></li>
             </ol>
           </li>
-          <li>If <var title="true">did store key</var> is true and the <a href="#media-element">media element</a> is <a href="#waiting-for-a-key">waiting for a key</a>, <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to attempt to resume playback.
+          <li>If <var title="true">did store key</var> is true and the <a href="#media-element">media element</a> is <a href="#waiting-for-a-key">waiting for a key</a>, <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to attempt to resume playback.
             <p class="non-normative">In other words, resume playback if the necessary key is provided.</p>
           </li>
           <li>
-<p>If <var title="true">next message</var> is not null, <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p>
+<p>If <var title="true">next message</var> is not null, <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p>
              <p>The event is of type <code><a href="#dom-mediakeymessageevent">MediaKeyMessageEvent</a></code> and has:</p>
              <ul style="list-style-type:none"><li>
                <code><a href="#dom-message">message</a></code> = <var title="true">next message</var><br>
                <code><a href="#dom-destinationurl">destinationURL</a></code> = null
              </li></ul>
           </li>
-          <li><p>If <var title="true">did store key</var> is true, <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyadded">keyadded</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
+          <li><p>If <var title="true">did store key</var> is true, <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyadded">keyadded</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
           <li>
 <p>If any of the preceding steps in the task failed</p>
               <ol>
@@ -491,7 +491,7 @@
                   </li></ul>
                 </li>
                 <li><p>Set the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object's <code><a href="#dom-error">error</a></code> attribute to the error object created in the previous step.</p></li>
-                <li><p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
+                <li><p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
                 <li><p>Abort the task.</p></li>
               </ol>
           </li>
@@ -512,15 +512,15 @@
       <li>Clear any internal state associated with the session, including all keys and licenses.</li>
     </ol>
 
-    <p>The <dfn id="dom-sourcekeysystem"><code>keySystem</code></dfn> attribute of <code><a href="#dom-htmlsourceelement">HTMLSourceElement</a></code> specifies the <a href="#key-system">Key System</a> to be used with the <code><a href="http://dev.w3.org/html5/spec/video.html#media-resource">media resource</a></code>.
-    The <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-algorithm">resource selection algorithm</a> is modified to check the <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute after the existing <em>step 5</em> of the <em>Otherwise</em> branch of <em>step 6</em>:
+    <p>The <dfn id="dom-sourcekeysystem"><code>keySystem</code></dfn> attribute of <code><a href="#dom-htmlsourceelement">HTMLSourceElement</a></code> specifies the <a href="#key-system">Key System</a> to be used with the <code><a href="http://www.w3.org/TR/html5/video.html#media-resource">media resource</a></code>.
+    The <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-algorithm">resource selection algorithm</a> is modified to check the <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute after the existing <em>step 5</em> of the <em>Otherwise</em> branch of <em>step 6</em>:
     </p>
     <ol start="6">
-      <li><p>⌛ If <var title="">candidate</var> has a <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute whose value represents a <a href="#key-system">Key System</a> that the user agent knows it cannot use with <code><a href="http://dev.w3.org/html5/spec/video.html#attr-source-type">type</a></code>, then end the <a href="http://dev.w3.org/html5/spec/webappapis.html#synchronous-section">synchronous section</a>, and jump down to the <i title="">failed</i> step below.</p></li>
+      <li><p>⌛ If <var title="">candidate</var> has a <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute whose value represents a <a href="#key-system">Key System</a> that the user agent knows it cannot use with <code><a href="http://www.w3.org/TR/html5/video.html#attr-source-type">type</a></code>, then end the <a href="http://www.w3.org/TR/html5/webappapis.html#synchronous-section">synchronous section</a>, and jump down to the <i title="">failed</i> step below.</p></li>
     </ol>
 
     <h3 id="error-codes">2.1. Error Codes</h3>
-    <p><code><a href="http://dev.w3.org/html5/spec/video.html#mediaerror">MediaError</a></code> is extended, and a new error type is added.</p>
+    <p><code><a href="http://www.w3.org/TR/html5/video.html#mediaerror">MediaError</a></code> is extended, and a new error type is added.</p>
     <pre class="idl">
 partial interface <dfn id="dom-mediaerror">MediaError</dfn> {
   const unsigned short <a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a> = 5;
@@ -560,7 +560,7 @@
         <ol>
           <li>No key was provided and no <code><a href="#dom-needkey">needkey</a></code> handler was provided</li>
           <li>The provided key could not be successfully applied</li>
-          <li>The user agent does not support decryption of this <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>
+          <li>The user agent does not support decryption of this <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>
 </li>
         </ol>
       </dd>
@@ -647,7 +647,7 @@
     <p>The <dfn id="dom-message"><code>message</code></dfn> attribute contains a message from the CDM. Messages are Key System-specific. <span class="non-normative">In most cases, it should be sent to a key server.</span></p>
     <p>The <dfn id="dom-destinationurl"><code>destinationURL</code></dfn> is the URL to send the <code><a href="#dom-message">message</a></code> to.
        An application <em>may</em> override this.
-       <span class="non-normative">In some cases, it may have been provided by the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.</span>
+       <span class="non-normative">In some cases, it may have been provided by the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.</span>
        It may be null.
     </p>
 
@@ -708,10 +708,10 @@
           <td><code><a href="#dom-mediakeyneededevent">MediaKeyNeededEvent</a></code></td>
           <td>
             The user agent needs a key or license to begin or continue playback.
-            <br><span class="non-normative"><br>It may have encountered <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> that may/does require decryption to load or play OR need a new key/license to continue playback.</span>
+            <br><span class="non-normative"><br>It may have encountered <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> that may/does require decryption to load or play OR need a new key/license to continue playback.</span>
           </td>
           <td>
-<code title="dom-media-readyState"><a href="http://dev.w3.org/html5/spec/video.html#dom-media-readystate">readyState</a></code> is equal to <code title="dom-media-HAVE_METADATA"><a href="http://dev.w3.org/html5/spec/video.html#dom-media-have_metadata">HAVE_METADATA</a></code> or greater.
+<code title="dom-media-readyState"><a href="http://www.w3.org/TR/html5/video.html#dom-media-readystate">readyState</a></code> is equal to <code title="dom-media-HAVE_METADATA"><a href="http://www.w3.org/TR/html5/video.html#dom-media-have_metadata">HAVE_METADATA</a></code> or greater.
           <span class="non-normative">It is possible that the element is playing or has played.</span>
           </td>
         </tr>
@@ -741,7 +741,7 @@
     <h2 id="algorithms">5. Algorithms</h2>
 
     <h3 id="algorithms-enrypted-block">5.1. Encrypted Block Encountered</h3>
-    <p>The following steps are run when the <a href="#media-element">media element</a> encounters a block <span class="non-normative">(i.e. frame)</span> of encrypted <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> during the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
+    <p>The following steps are run when the <a href="#media-element">media element</a> encounters a block <span class="non-normative">(i.e. frame)</span> of encrypted <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> during the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
 
     <ol>
       <li><p>Let <var title="">cdm</var> be null.</p></li>
@@ -787,7 +787,7 @@
               <dd>Let <var title="">block key</var> be the single cached key.</dd>
               <dt>If <var title="true">cdm</var> has more than one key cached <span class="non-normative">(all would have IDs)</span>
 </dt>
-              <dd>Abort media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
+              <dd>Abort media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
               <dt>Otherwise</dt>
               <dd>Jump to the <i>Key Presence</i> step below.</dd>
             </dl>
@@ -803,7 +803,7 @@
         <dd>Use <var title="true">cdm</var> to Decrypt the block using <var title="">block key</var> by following the steps for the first matching condition from the following list:
           <dl class="switch">
             <dt>If decryption fails</dt>
-            <dd>Abort media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
+            <dd>Abort media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
             <dt>Otherwise</dt>
             <dd>Continue.</dd>
           </dl>
@@ -812,23 +812,23 @@
         <dt>If there is an event handler for <code><a href="#dom-needkey">needkey</a></code>
 </dt>
         <dd>
-        <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.
+        <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.
         <p>The event is of type <code><a href="#dom-mediakeyneededevent">MediaKeyNeededEvent</a></code> and has:</p>
         <ul style="list-style-type:none"><li>
           <code><a href="#dom-initdata">initData</a></code> = <var title="">block initData</var>
         </li></ul>
-        <p class="non-normative">The <a href="#media-element">media element</a> is said to be <code><a href="http://dev.w3.org/html5/spec/video.html#potentially-playing">potentially playing</a></code>
+        <p class="non-normative">The <a href="#media-element">media element</a> is said to be <code><a href="http://www.w3.org/TR/html5/video.html#potentially-playing">potentially playing</a></code>
         unless playback stops because the stream cannot be decrypted, in which case the <a href="#media-element">media element</a> is said to be <a href="#waiting-for-a-key">waiting for a key</a>.
         </p>
         </dd>
         <dt>Otherwise</dt>
-        <dd>Abort media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
+        <dd>Abort media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
       </dl>
       </li>
     </ol>
 
     <div class="non-normative">
-    <p>For frame-based encryption, this may be implemented as follows when the media element attempts to decode a frame as part of the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
+    <p>For frame-based encryption, this may be implemented as follows when the media element attempts to decode a frame as part of the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
     <ol>
       <li><p>Let <var title="">encrypted</var> be false.</p></li>
       <li>
@@ -845,17 +845,17 @@
     </ol>
     </div>
 
-    <p>The following paragraph is added to <a href="http://dev.w3.org/html5/spec/video.html#playing-the-media-resource">Playing the media resource</a>.</p>
+    <p>The following paragraph is added to <a href="http://www.w3.org/TR/html5/video.html#playing-the-media-resource">Playing the media resource</a>.</p>
     <ul style="list-style-type:none">
     <li>A <a href="#media-element">media element</a> is said to be <dfn id="waiting-for-a-key">waiting for a key</dfn> when
-    it would be <code><a href="http://dev.w3.org/html5/spec/video.html#potentially-playing">potentially playing</a></code> but
-    the user agent has reached a point in the <code><a href="http://dev.w3.org/html5/spec/video.html#media-resource">media resource</a></code> that must be decrypted for the resource to continue and the <a href="#cdm">CDM</a> does not have the necessary key.
+    it would be <code><a href="http://www.w3.org/TR/html5/video.html#potentially-playing">potentially playing</a></code> but
+    the user agent has reached a point in the <code><a href="http://www.w3.org/TR/html5/video.html#media-resource">media resource</a></code> that must be decrypted for the resource to continue and the <a href="#cdm">CDM</a> does not have the necessary key.
     </li>
     <li class="non-normative">The media element leaves this state when seeking but could re-enter it if the same conditions exist.</li>
     </ul>
 
     <h3 id="algorithms-encrypted-stream">5.2. Potentially Encrypted Stream Encountered</h3>
-    <p>The following steps are run when the <a href="#media-element">media element</a> encounters a source that may contain encrypted blocks or streams during the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
+    <p>The following steps are run when the <a href="#media-element">media element</a> encounters a source that may contain encrypted blocks or streams during the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
 
     <ol>
       <li><p>Let <var title="">cdm</var> be null.</p></li>
@@ -905,24 +905,24 @@
         </ol>
       </li>
       <li>
-<p><i>Need Key</i>: <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.</p>
+<p><i>Need Key</i>: <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.</p>
         <p>The event is of type <code><a href="#dom-mediakeyneededevent">MediaKeyNeededEvent</a></code> and has:</p>
         <ul style="list-style-type:none"><li>
           <code><a href="#dom-initdata">initData</a></code> = <var title="">initData</var>
         </li></ul>
         <p class="non-normative">Firing this event allows the application to begin acquiring the key process before it is needed.</p>
-        <p class="non-normative">Note that <code title="dom-media-readyState"><a href="http://dev.w3.org/html5/spec/video.html#dom-media-readystate">readyState</a></code> is <em>not</em> changed and no algorithms are aborted. This event is merely informative.</p>
+        <p class="non-normative">Note that <code title="dom-media-readyState"><a href="http://www.w3.org/TR/html5/video.html#dom-media-readystate">readyState</a></code> is <em>not</em> changed and no algorithms are aborted. This event is merely informative.</p>
       </li>
 
-      <li><p><i>Continue Normal Flow</i>: Continue with the existing media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>.</p></li>
+      <li><p><i>Continue Normal Flow</i>: Continue with the existing media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>.</p></li>
     </ol>
 
     <h3 id="algorithms-load">5.3. Addition to Media Element Load Algorithm</h3>
-    <p>The following step is added to the existing <a href="http://dev.w3.org/html5/spec/video.html#media-element-load-algorithm">media element load algorithm</a>:</p>
+    <p>The following step is added to the existing <a href="http://www.w3.org/TR/html5/video.html#media-element-load-algorithm">media element load algorithm</a>:</p>
     <ul>
       <li>
 <p>Clear the <codref>keys</codref> attribute for this <a href="#media-element">media element</a>.</p>
-      <p class="non-normative">This also means the <codref>keys</codref> attribute will be cleared when the <code><a href="http://dev.w3.org/html5/spec/video.html#attr-media-src">src</a></code> attribute is set or changed per <a href="http://dev.w3.org/html5/spec/video.html#location-of-the-media-resource">Location of the media resource</a></p>
+      <p class="non-normative">This also means the <codref>keys</codref> attribute will be cleared when the <code><a href="http://www.w3.org/TR/html5/video.html#attr-media-src">src</a></code> attribute is set or changed per <a href="http://www.w3.org/TR/html5/video.html#location-of-the-media-resource">Location of the media resource</a></p>
       </li>
     </ul>
 
@@ -953,7 +953,7 @@
     <p>The <code><a href="#dom-mediakeymessageevent">MediaKeyMessageEvent</a></code> generated by <code><a href="#dom-createsession">createSession()</a></code> has:</p>
     <ul style="list-style-type:none"><li>
       <code><a href="#dom-message">message</a></code> = a container-specific value extracted from the <var title="true">initData</var> parameter of <code><a href="#dom-createsession">createSession()</a></code>. null if <var title="true">initData</var> was null or a value could not be extracted.<br>
-      <code><a href="#dom-destinationurl">destinationURL</a></code> = value of the default URL if present in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> and null otherwise.
+      <code><a href="#dom-destinationurl">destinationURL</a></code> = value of the default URL if present in the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> and null otherwise.
     </li></ul>
 
     <p>The <var title="true">key</var> parameter of <code><a href="#dom-update">update()</a></code> should be a JSON Web Key (JWK) representation of the symmetric key to be used for decryption, as defined in the <a href="http://tools.ietf.org/html/draft-jones-jose-json-private-and-symmetric-key">IETF Internet-draft JSON Private and Symmetric Key specification</a>. The JSON string is encoded into the Uint8Array parameter using <a href="http://www.w3.org/TR/html5/infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>.</p>
@@ -1074,7 +1074,7 @@
     </div>
 
     <h3 class="exampleheader">8.2. Source Known but Key Not Known at Page Load</h3>
-    <p class="exampledescription">In this case, the <a href="#initialization-data">Initialization Data</a> is contained in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.
+    <p class="exampledescription">In this case, the <a href="#initialization-data">Initialization Data</a> is contained in the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.
     If this was not the case, <code>handleKeyNeeded()</code> could obtain and provide it instead of getting it from the event.</p>
 
     <p class="exampledescription">If any asynchronous operation is required to get the key in <code>handleKeyNeeded()</code>, it could be called a second time if the stream is detected as potentially encrypted before an encrypted block/frame is encountered. In this case, applications may want to handle subsequent calls specially to avoid redundant license requests. This is not shown in the examples below.</p>
@@ -1304,11 +1304,11 @@
     <p class="faqanswer">Yes.</p>
 
     <h4 class="faqquestion">Can I encrypt captions / &lt;track&gt; elements?</h4>
-    <p class="faqanswer">No, this proposal only supports decrypting audio and video that are part of the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.</p>
+    <p class="faqanswer">No, this proposal only supports decrypting audio and video that are part of the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.</p>
 
     <h4 id="sourceelement" class="faqquestion">Can I let the user agent select the appropriate CDM using <code>&lt;source&gt;</code> elements?</h4>
     <p class="faqanswer">Yes, using the <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute of the <code><a href="#dom-htmlsourceelement">HTMLSourceElement</a></code>.
-    When used with <code><a href="http://dev.w3.org/html5/spec/video.html#attr-source-type">type</a></code> attribute, this will select the first <code>&lt;source&gt;</code> element (container, codec, and <a href="#key-system">Key System</a>) that the user agent might support.
+    When used with <code><a href="http://www.w3.org/TR/html5/video.html#attr-source-type">type</a></code> attribute, this will select the first <code>&lt;source&gt;</code> element (container, codec, and <a href="#key-system">Key System</a>) that the user agent might support.
     </p>
 
     <h4 id="faq-heartbeat" class="faqquestion">Is a heartbeat supported?</h4>
@@ -1395,7 +1395,7 @@
     <p class="faqanswer">Without a new error code (<code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code>), it is not possible for user agents to clearly indicate to an application that playback failed because the content was encrypted and user agents will likely need to fire a <code>MEDIA_ERR_DECODE</code> or <code>MEDIA_ERR_SRC_NOT_SUPPORTED</code>, which would be confusing.</p>
 
     <h4 class="faqquestion">Will adding a new error code to <code><a href="#dom-mediaerror">MediaError</a></code> break existing applications?</h4>
-    <p class="faqanswer">Applications that are not aware of the new error code (<code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code>) may not correctly handle it, but they should still be able to detect that an error has occurred because a) an error event is fired and b) <var title="">media</var> . <code title="dom-media-error"><code><a href="http://dev.w3.org/html5/spec/video.html#mediaerror">error</a></code></code> is not null.</p>
+    <p class="faqanswer">Applications that are not aware of the new error code (<code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code>) may not correctly handle it, but they should still be able to detect that an error has occurred because a) an error event is fired and b) <var title="">media</var> . <code title="dom-media-error"><code><a href="http://www.w3.org/TR/html5/video.html#mediaerror">error</a></code></code> is not null.</p>
 
     <h4 class="faqquestion">What happens if a response to the <code><a href="#dom-needkey">needkey</a></code> event from a <a href="#algorithms-encrypted-stream">encountering a potentially encrypted stream</a> is not received before <a href="#algorithms-enrypted-block">encountering an encrypted block</a>?</h4>
     <p class="faqanswer">The <a href="#algorithms-enrypted-block">Encrypted Block Encountered algorithm</a> will proceed as normal.
--- a/encrypted-media/encrypted-media.xml	Mon Jan 14 16:48:15 2013 -0800
+++ b/encrypted-media/encrypted-media.xml	Mon Jan 14 16:55:53 2013 -0800
@@ -19,7 +19,7 @@
     <div class="head">
       <p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" width="72" height="48" /></a></p>
       <h1>Encrypted Media Extensions</h1>
-      <h2>W3C Editor's Draft 12 January 2013</h2>
+      <h2>W3C Editor's Draft 14 January 2013</h2>
       <h2><font color="red">Work in progress. For the latest stable revision, see <a href="http://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1b/encrypted-media/encrypted-media.html">v0.1b</a>.</font></h2>
       <dl>
   <dt>Latest published version:</dt>
--- a/encrypted-media/spec-html.xsl	Mon Jan 14 16:48:15 2013 -0800
+++ b/encrypted-media/spec-html.xsl	Mon Jan 14 16:55:53 2013 -0800
@@ -52,12 +52,12 @@
   </xsl:template>
 
   <xsl:template match="//videoref">
-    <code><a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#<xsl:value-of select="@name"/></xsl:attribute><xsl:value-of select="."/></a></code>
+    <code><a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#<xsl:value-of select="@name"/></xsl:attribute><xsl:value-of select="."/></a></code>
   </xsl:template>
 
   <!-- videoref without <code> -->
   <xsl:template match="//videoanchor">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#<xsl:value-of select="@name"/></xsl:attribute><xsl:value-of select="."/></a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#<xsl:value-of select="@name"/></xsl:attribute><xsl:value-of select="."/></a>
   </xsl:template>
 
   <xsl:template match="//dom4ref">
@@ -65,15 +65,15 @@
   </xsl:template>
 
   <xsl:template match="//media-element-load-algorithm">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#media-element-load-algorithm</xsl:attribute>media element load algorithm</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#media-element-load-algorithm</xsl:attribute>media element load algorithm</a>
   </xsl:template>
 
   <xsl:template match="//resource-selection-algorithm">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#concept-media-load-algorithm</xsl:attribute>resource selection algorithm</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#concept-media-load-algorithm</xsl:attribute>resource selection algorithm</a>
   </xsl:template>
 
   <xsl:template match="//resource-fetch-algorithm">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#concept-media-load-resource</xsl:attribute>resource fetch algorithm</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#concept-media-load-resource</xsl:attribute>resource fetch algorithm</a>
   </xsl:template>
 
   <xsl:template match="//not-supported-err">
@@ -97,39 +97,39 @@
   </xsl:template>
 
   <xsl:template match="//readystate">
-    <code title="dom-media-readyState"><a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#dom-media-readystate</xsl:attribute>readyState</a></code>
+    <code title="dom-media-readyState"><a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#dom-media-readystate</xsl:attribute>readyState</a></code>
   </xsl:template>
 
   <xsl:template match="//have-metadata">
-    <code title="dom-media-HAVE_METADATA"><a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#dom-media-have_metadata</xsl:attribute>HAVE_METADATA</a></code>
+    <code title="dom-media-HAVE_METADATA"><a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#dom-media-have_metadata</xsl:attribute>HAVE_METADATA</a></code>
   </xsl:template>
 
   <xsl:template match="//have-future-data">
-    <code title="dom-media-HAVE_FUTURE_DATA"><a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#dom-media-have_future_data</xsl:attribute>HAVE_FUTURE_DATA</a></code>
+    <code title="dom-media-HAVE_FUTURE_DATA"><a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#dom-media-have_future_data</xsl:attribute>HAVE_FUTURE_DATA</a></code>
   </xsl:template>
 
   <xsl:template match="//have-enough-data">
-    <code title="dom-media-HAVE_ENOUGH_DATA"><a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#dom-media-have_enough_data</xsl:attribute>HAVE_ENOUGH_DATA</a></code>
+    <code title="dom-media-HAVE_ENOUGH_DATA"><a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#dom-media-have_enough_data</xsl:attribute>HAVE_ENOUGH_DATA</a></code>
   </xsl:template>
 
   <xsl:template match="//queue-a-task">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/webappapis.html#queue-a-task</xsl:attribute>queue a task</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/webappapis.html#queue-a-task</xsl:attribute>queue a task</a>
   </xsl:template>
 
   <xsl:template match="//fire-a-simple-event">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event</xsl:attribute>fire a simple event</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event</xsl:attribute>fire a simple event</a>
   </xsl:template>
 
   <xsl:template match="//synchronous-section">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/webappapis.html#synchronous-section</xsl:attribute>synchronous section</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/webappapis.html#synchronous-section</xsl:attribute>synchronous section</a>
   </xsl:template>
 
   <xsl:template match="//EventHandler">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/webappapis.html#eventhandler</xsl:attribute>EventHandler</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/webappapis.html#eventhandler</xsl:attribute>EventHandler</a>
   </xsl:template>
 
   <xsl:template match="//media-element">
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/video.html#media-element</xsl:attribute>media element</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#media-element</xsl:attribute>media element</a>
   </xsl:template>
 
   <xsl:template match="//ascii-encoding">