More pubrules fixes
authorAdrian Bateman <adrianba@microsoft.com>
Mon, 14 Jan 2013 18:04:53 -0800
changeset 70 5e0b05188705
parent 69 43844b1d0579
child 71 fea9f9327d2b
More pubrules fixes
encrypted-media/encrypted-media.html
encrypted-media/encrypted-media.xml
encrypted-media/spec-html.xsl
encrypted-media/video-working-draft.css
--- a/encrypted-media/encrypted-media.html	Mon Jan 14 17:50:30 2013 -0800
+++ b/encrypted-media/encrypted-media.html	Mon Jan 14 18:04:53 2013 -0800
@@ -216,17 +216,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://www.w3.org/TR/html5/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/embedded-content-0.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://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.
+    <p>Initialization data found in the <a href="http://www.w3.org/TR/html5/embedded-content-0.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://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>We extend <dfn id="media-element" title="media element"><a href="http://www.w3.org/TR/html5/embedded-content-0.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">
@@ -264,13 +264,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://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-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/embedded-content-0.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://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>
+      <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/embedded-content-0.html#event-media-loadstart">loadstart</a></code> (per the <a href="http://www.w3.org/TR/html5/embedded-content-0.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>
@@ -350,7 +350,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://www.w3.org/TR/html5/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/embedded-content-0.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> 
@@ -514,15 +514,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://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>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/embedded-content-0.html#media-resource">media resource</a></code>.
+    The <a href="http://www.w3.org/TR/html5/embedded-content-0.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://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>
+      <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/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.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;
@@ -562,7 +562,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://www.w3.org/TR/html5/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/embedded-content-0.html#media-data">media data</a>
 </li>
         </ol>
       </dd>
@@ -649,7 +649,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://www.w3.org/TR/html5/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/embedded-content-0.html#media-data">media data</a>.</span>
        It may be null.
     </p>
 
@@ -710,10 +710,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://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>
+            <br><span class="non-normative"><br>It may have encountered <a href="http://www.w3.org/TR/html5/embedded-content-0.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://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.
+<code title="dom-media-readyState"><a href="http://www.w3.org/TR/html5/embedded-content-0.html#dom-media-readystate">readyState</a></code> is equal to <code title="dom-media-HAVE_METADATA"><a href="http://www.w3.org/TR/html5/embedded-content-0.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>
@@ -743,7 +743,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://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>
+    <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/embedded-content-0.html#media-data">media data</a> during the <a href="http://www.w3.org/TR/html5/embedded-content-0.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
 
     <ol>
       <li><p>Let <var title="">cdm</var> be null.</p></li>
@@ -789,7 +789,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://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>
+              <dd>Abort media element's <a href="http://www.w3.org/TR/html5/embedded-content-0.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>
@@ -805,7 +805,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://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>
+            <dd>Abort media element's <a href="http://www.w3.org/TR/html5/embedded-content-0.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>
@@ -819,18 +819,18 @@
         <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://www.w3.org/TR/html5/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/embedded-content-0.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://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>
+        <dd>Abort media element's <a href="http://www.w3.org/TR/html5/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
     <ol>
       <li><p>Let <var title="">encrypted</var> be false.</p></li>
       <li>
@@ -847,17 +847,17 @@
     </ol>
     </div>
 
-    <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>
+    <p>The following paragraph is added to <a href="http://www.w3.org/TR/html5/embedded-content-0.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://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.
+    it would be <code><a href="http://www.w3.org/TR/html5/embedded-content-0.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/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
 
     <ol>
       <li><p>Let <var title="">cdm</var> be null.</p></li>
@@ -913,18 +913,18 @@
           <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://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>
+        <p class="non-normative">Note that <code title="dom-media-readyState"><a href="http://www.w3.org/TR/html5/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.html#media-element-load-algorithm">media element load algorithm</a>:</p>
     <ul>
       <li>
 <p>Clear the <code><a href="#dom-keys">keys</a></code> attribute for this <a href="#media-element">media element</a>.</p>
-      <p class="non-normative">This also means the <code><a href="#dom-keys">keys</a></code> 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>
+      <p class="non-normative">This also means the <code><a href="#dom-keys">keys</a></code> attribute will be cleared when the <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#attr-media-src">src</a></code> attribute is set or changed per <a href="http://www.w3.org/TR/html5/embedded-content-0.html#location-of-the-media-resource">Location of the media resource</a></p>
       </li>
     </ul>
 
@@ -955,7 +955,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://www.w3.org/TR/html5/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/embedded-content-0.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>
@@ -1076,7 +1076,7 @@
     </div>
 
     <h3 id="example-source-known-but-key-not-known" 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://www.w3.org/TR/html5/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/embedded-content-0.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>
@@ -1305,12 +1305,12 @@
     <h4 id="faq-key-rotation" class="faqquestion">Is key rotation supported?</h4>
     <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://www.w3.org/TR/html5/video.html#media-data">media data</a>.</p>
+    <h4 id="faq-encrypt-captions" 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://www.w3.org/TR/html5/embedded-content-0.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://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.
+    When used with <code><a href="http://www.w3.org/TR/html5/embedded-content-0.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>
@@ -1397,7 +1397,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 id="faq-error-break-apps" 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://www.w3.org/TR/html5/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/embedded-content-0.html#mediaerror">error</a></code></code> is not null.</p>
 
     <h4 id="faq-response-needkey" 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.
@@ -1419,13 +1419,13 @@
     <p class="faqanswer">Containers and codecs are not specified. A user agent may support decryption of whichever container and codec combination(s) it wishes.</p>
     <p class="faqanswer">If a user agent support decryption of a container/codec combination (as reported by <code><a href="#dom-istypesupported">isTypeSupported()</a></code>), it must also support <a href="#simple-decryption">Simple Decryption</a> of that combination.</p>
 
-    <h4 class="faqquestion">What if a container/codec does not support indicating the stream or a frame/block is encrypted?</h4>
+    <h4 id="faq-container-code-indicate" class="faqquestion">What if a container/codec does not support indicating the stream or a frame/block is encrypted?</h4>
     <p class="faqanswer">The application must use <code><a href="#dom-update">update()</a></code> to indicate the stream is encrypted and provide the key before decoding starts.</p>
 
-    <h4 class="faqquestion">Must the container provide Initialization Data or a content key ID?</h4>
+    <h4 id="faq-must-init-data" class="faqquestion">Must the container provide Initialization Data or a content key ID?</h4>
     <p class="faqanswer">This is ideal, but the API would also support the application sending the <a href="#initialization-data">Initialization Data</a> or ID directly to the server or providing it to the <a href="#cdm">CDM</a> via <code><a href="#dom-createsession">createSession()</a></code>.</p>
 
-    <h4 class="faqquestion">What if a container/codec does not support key IDs or bit(s)?</h4>
+    <h4 id="faq-not-support-ids" class="faqquestion">What if a container/codec does not support key IDs or bit(s)?</h4>
     <p class="faqanswer">The application will need to use some other mechanism to select the appropriate key for the content.
     The user agent will only be able to use one key at a time.
     <a href="#faq-key-rotation">Key rotation</a> will be much more complex or impossible.
--- a/encrypted-media/encrypted-media.xml	Mon Jan 14 17:50:30 2013 -0800
+++ b/encrypted-media/encrypted-media.xml	Mon Jan 14 18:04:53 2013 -0800
@@ -1251,7 +1251,7 @@
     <h4 id="faq-key-rotation" class="faqquestion">Is key rotation supported?</h4>
     <p class="faqanswer">Yes.</p>
 
-    <h4 class="faqquestion">Can I encrypt captions / &lt;track&gt; elements?</h4>
+    <h4 id="faq-encrypt-captions" 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 <videoanchor name="media-data">media data</videoanchor>.</p>
 
     <h4 id="sourceelement" class="faqquestion">Can I let the user agent select the appropriate CDM using <code>&lt;source&gt;</code> elements?</h4>
@@ -1364,13 +1364,13 @@
     <p class="faqanswer">Containers and codecs are not specified. A user agent may support decryption of whichever container and codec combination(s) it wishes.</p>
     <p class="faqanswer">If a user agent support decryption of a container/codec combination (as reported by <methodref>isTypeSupported</methodref>), it must also support <a href="#simple-decryption">Simple Decryption</a> of that combination.</p>
 
-    <h4 class="faqquestion">What if a container/codec does not support indicating the stream or a frame/block is encrypted?</h4>
+    <h4 id="faq-container-code-indicate" class="faqquestion">What if a container/codec does not support indicating the stream or a frame/block is encrypted?</h4>
     <p class="faqanswer">The application must use <methodref>update</methodref> to indicate the stream is encrypted and provide the key before decoding starts.</p>
 
-    <h4 class="faqquestion">Must the container provide Initialization Data or a content key ID?</h4>
+    <h4 id="faq-must-init-data" class="faqquestion">Must the container provide Initialization Data or a content key ID?</h4>
     <p class="faqanswer">This is ideal, but the API would also support the application sending the <a href="#initialization-data">Initialization Data</a> or ID directly to the server or providing it to the <a href="#cdm">CDM</a> via <methodref>createSession</methodref>.</p>
 
-    <h4 class="faqquestion">What if a container/codec does not support key IDs or bit(s)?</h4>
+    <h4 id="faq-not-support-ids" class="faqquestion">What if a container/codec does not support key IDs or bit(s)?</h4>
     <p class="faqanswer">The application will need to use some other mechanism to select the appropriate key for the content.
     The user agent will only be able to use one key at a time.
     <a href="#faq-key-rotation">Key rotation</a> will be much more complex or impossible.
--- a/encrypted-media/spec-html.xsl	Mon Jan 14 17:50:30 2013 -0800
+++ b/encrypted-media/spec-html.xsl	Mon Jan 14 18:04:53 2013 -0800
@@ -52,12 +52,12 @@
   </xsl:template>
 
   <xsl:template match="//videoref">
-    <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>
+    <code><a><xsl:attribute name="href">http://www.w3.org/TR/html5/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.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://www.w3.org/TR/html5/video.html#media-element-load-algorithm</xsl:attribute>media element load algorithm</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/embedded-content-0.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://www.w3.org/TR/html5/video.html#concept-media-load-algorithm</xsl:attribute>resource selection algorithm</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/embedded-content-0.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://www.w3.org/TR/html5/video.html#concept-media-load-resource</xsl:attribute>resource fetch algorithm</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/embedded-content-0.html#concept-media-load-resource</xsl:attribute>resource fetch algorithm</a>
   </xsl:template>
 
   <xsl:template match="//not-supported-err">
@@ -97,19 +97,19 @@
   </xsl:template>
 
   <xsl:template match="//readystate">
-    <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>
+    <code title="dom-media-readyState"><a><xsl:attribute name="href">http://www.w3.org/TR/html5/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.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://www.w3.org/TR/html5/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/embedded-content-0.html#dom-media-have_enough_data</xsl:attribute>HAVE_ENOUGH_DATA</a></code>
   </xsl:template>
 
   <xsl:template match="//queue-a-task">
@@ -129,7 +129,7 @@
   </xsl:template>
 
   <xsl:template match="//media-element">
-    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/video.html#media-element</xsl:attribute>media element</a>
+    <a><xsl:attribute name="href">http://www.w3.org/TR/html5/embedded-content-0.html#media-element</xsl:attribute>media element</a>
   </xsl:template>
 
   <xsl:template match="//ascii-encoding">
--- a/encrypted-media/video-working-draft.css	Mon Jan 14 17:50:30 2013 -0800
+++ b/encrypted-media/video-working-draft.css	Mon Jan 14 18:04:53 2013 -0800
@@ -70,7 +70,7 @@
    h1 + h2, hr + h2.no-toc { page-break-before: auto; }
 
    p  > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]),
-   li > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]), { border-bottom: solid #9999CC; }
+   li > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]) { border-bottom: solid #9999CC; }
 
    div.head { margin: 0 0 1em; padding: 1em 0 0 0; }
    div.head p { margin: 0; }