Minor editorial updates
authorRich Tibbett <richt@opera.com>
Tue, 02 Oct 2012 16:57:24 +0200
changeset 240 4bb39c70f008
parent 239 7e34654692fc
child 241 985e203d74f7
Minor editorial updates
discovery-api/Overview.html
discovery-api/Overview.src.html
--- a/discovery-api/Overview.html	Tue Oct 02 16:32:06 2012 +0200
+++ b/discovery-api/Overview.html	Tue Oct 02 16:57:24 2012 +0200
@@ -612,28 +612,27 @@
         are to be interpreted as requirements on user agents.
       </p>
       <p>
-        Conformance requirements phrased as algorithms or specific steps <em class="ct"><em class="rfc2119"
-            title="may">may</em></em> be implemented in any manner, so long as the end result is equivalent. (In
-            particular, the algorithms defined in this specification are intended to be easy to follow, and not
-            intended to be performant.)
+        Conformance requirements phrased as algorithms or specific steps <em class="rfc2119"
+           title="may">may</em> be implemented in any manner, so long as the end result is equivalent. (In particular,
+           the algorithms defined in this specification are intended to be easy to follow, and not intended to be
+           performant.)
       </p>
       <p>
         The only conformance class defined by this specification is a <dfn id="dfn-user-agent">user agent</dfn>.
       </p>
       <p>
-        User agents <em class="ct"><em class="rfc2119"
-            title="may">may</em></em> impose implementation-specific limits on otherwise unconstrained inputs, e.g. to
-            prevent denial of service attacks, to guard against running out of memory, or to work around
-            platform-specific limitations.
+        User agents <em class="rfc2119"
+           title="may">may</em> impose implementation-specific limits on otherwise unconstrained inputs, e.g. to
+           prevent denial of service attacks, to guard against running out of memory, or to work around
+           platform-specific limitations.
       </p>
       <p>
         When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid
-        in development, or for performance reasons), user agents <em class="ct"><em class="rfc2119"
-            title="must">must</em></em> act as if they had no support for the feature whatsoever, and as if the feature
-            was not mentioned in this specification. For example, if a particular feature is accessed via an attribute
-            in a Web IDL interface, the attribute itself would be omitted from the objects that implement that
-            interface - leaving the attribute on the object but making it return null or throw an exception is
-            insufficient.
+        in development, or for performance reasons), user agents <em class="rfc2119"
+           title="must">must</em> act as if they had no support for the feature whatsoever, and as if the feature was
+           not mentioned in this specification. For example, if a particular feature is accessed via an attribute in a
+           Web IDL interface, the attribute itself would be omitted from the objects that implement that interface -
+           leaving the attribute on the object but making it return null or throw an exception is insufficient.
       </p>
       <section id="dependencies">
         <h3>
@@ -756,8 +755,8 @@
                  class="internalDFN">valid service type</a> tokens that the web page would like to interact with.
             </p>
             <p>
-              If the user accepts, the <var title="">successCallback</var> is invoked, with one or more <code><a href=
-              "#networkservice"><code>NetworkService</code></a></code> objects as its argument.
+              If the user accepts, the <var title="">successCallback</var> is invoked, with one or more <a href=
+              "#networkservice"><code>NetworkService</code></a> objects as its argument.
             </p>
             <p>
               If the user declines, the <var title="">errorCallback</var> (if any) is invoked.
@@ -769,8 +768,8 @@
             When the <dfn id="dom-navigator-getnetworkservices"
                title="dom-navigator-getnetworkservices"><code>getNetworkServices(type, successCallback[,
                errorCallback])</code></dfn> method is called, the <a href="#dfn-user-agent"
-               class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> run the following steps:
+               class="internalDFN">user agent</a> <em class="rfc2119"
+               title="must">must</em> run the following steps:
           </p>
           <ol class="rule">
             <li>Let <var>requested control types</var> be initially set to an empty array.
@@ -789,8 +788,8 @@
                   href="#dfn-valid-service-type"
                   class="internalDFN">valid service type</a> tokens then continue to the step labeled <em>process</em>
                   below. Otherwise, the <a href="#dfn-user-agent"
-                  class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                  title="must">must</em></em> <a href=
+                  class="internalDFN">user agent</a> <em class="rfc2119"
+                  title="must">must</em> <a href=
                   "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                   object of type <code>Function</code>, with a new <a href=
@@ -827,8 +826,8 @@
               </ol>
             </li>
             <li>If <var>services found</var> is an empty array, then the <a href="#dfn-user-agent"
-                  class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                  title="must">must</em></em> <a href=
+                  class="internalDFN">user agent</a> <em class="rfc2119"
+                  title="must">must</em> <a href=
                   "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                   object of type <code>Function</code>, with a new <a href=
@@ -842,8 +841,8 @@
             </li>
             <li>Optionally, e.g. based on a previously-established user preference, for security reasons, or due to
             platform limitations, the <a href="#dfn-user-agent"
-                  class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                  title="may">may</em></em> <a href=
+                  class="internalDFN">user agent</a> <em class="rfc2119"
+                  title="may">may</em> <a href=
                   "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                   object of type <code>Function</code>, with a new <a href=
@@ -854,9 +853,9 @@
                   argument, abort any remaining steps and return.
             </li>
             <li>The <a href="#dfn-user-agent"
-                  class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                  title="must">must</em></em> prompt the user in a user-agent-specific manner for permission to provide
-                  the <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
+                  class="internalDFN">user agent</a> <em class="rfc2119"
+                  title="must">must</em> prompt the user in a user-agent-specific manner for permission to provide the
+                  <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
                   class="externalDFN">entry script</a>'s <a href=
                   "http://www.whatwg.org/specs/web-apps/current-work/complete/origin-0.html#origin"
                   class="externalDFN">origin</a> with an array of <a href=
@@ -870,9 +869,9 @@
               </p>
               <p>
                 If the user denies permission, then the <a href="#dfn-user-agent"
-                   class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                    title="must">must</em></em> <a href=
-                    "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
+                   class="internalDFN">user agent</a> <em class="rfc2119"
+                   title="must">must</em> <a href=
+                   "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                    class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                    object of type <code>Function</code>, with a new <a href=
                    "#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose <a href=
@@ -888,7 +887,7 @@
             <li>Let <var>services</var> be the array of one or more <a href=
             "#networkservice"><code>NetworkService</code></a> objects for which the user granted permission.
             </li>
-            <li>For each Object <var>service</var> in <var>services</var>, run the following substeps:
+            <li>For each Object <var>service</var> in <var>services</var>, run the following sub-steps:
               <ol class="rule">
                 <li>Add the <var>service</var>'s <code>url</code> parameter to the <a href=
                 "#dfn-entry-script-origin-s-url-whitelist"
@@ -916,8 +915,8 @@
                   <var>services manager</var> object.
             </li>
             <li>The <a href="#dfn-user-agent"
-                  class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                  title="must">must</em></em> <a href=
+                  class="internalDFN">user agent</a> <em class="rfc2119"
+                  title="must">must</em> <a href=
                   "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>successCallback</var> with <var>services
                   manager</var> as its argument.
@@ -934,13 +933,13 @@
           <p>
             When a <a href="#networkservice"><code>NetworkService</code></a> object is provided to a Web page, the
             <a href="#dfn-user-agent"
-               class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> add the <code>url</code> property to the <dfn id=
-                "dfn-entry-script-origin-s-url-whitelist">entry script origin's <abbr title=
-                "Uniform Resource Locator">URL</abbr> whitelist</dfn>. This list enables the Web page to override and
-                initiate cross-site resource requests towards these URLs, and any sub-resources of these URLs, within
-                the current <a href=
-                "http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
+               class="internalDFN">user agent</a> <em class="rfc2119"
+               title="must">must</em> add the <code>url</code> property to the <dfn id=
+               "dfn-entry-script-origin-s-url-whitelist">entry script origin's <abbr title=
+               "Uniform Resource Locator">URL</abbr> whitelist</dfn>. This list enables the Web page to override and
+               initiate cross-site resource requests towards these URLs, and any sub-resources of these URLs, within
+               the current <a href=
+               "http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
                class="externalDFN">entry script</a>'s <a href=
                "http://www.whatwg.org/specs/web-apps/current-work/complete/origin-0.html#origin"
                class="externalDFN">origin</a> via various existing mechanisms (e.g. Web Sockets, Server-Sent Events,
@@ -1081,17 +1080,16 @@
         </dl>
         <div>
           <p>
-            The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute <em class="ct"><em class=
-            "rfc2119"
-                title="must">must</em></em> return the number of services represented in the object's corresponding
-                <a href="#dfn-list-of-authorized-service-records"
+            The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute <em class="rfc2119"
+               title="must">must</em> return the number of services represented in the object's corresponding <a href=
+               "#dfn-list-of-authorized-service-records"
                class="internalDFN">list of authorized service records</a> at the time of getting.
           </p>
           <p>
             The <dfn id="dom-networkservices-servicesavailable"><code>servicesAvailable</code></dfn> attribute
-            <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> return the number of services in the <a href=
-                "#dfn-list-of-available-service-records"
+            <em class="rfc2119"
+               title="must">must</em> return the number of services in the <a href=
+               "#dfn-list-of-available-service-records"
                class="internalDFN">list of available service records</a> whose <code>type</code> attribute matches any
                of the <a href="#dfn-valid-service-type"
                class="internalDFN">valid service type</a> tokens that was initially used to create the current <a href=
@@ -1162,10 +1160,9 @@
              class="externalDFN">determine the value of an indexed property</a> for a given index <var>index</var> in a
              <a href="#networkservices"><code>NetworkServices</code></a> object's <a href=
              "#dfn-list-of-authorized-service-records"
-             class="internalDFN">list of authorized service records</a>, the user agent <em class="ct"><em class=
-             "rfc2119"
-              title="must">must</em></em> return the <a href="#networkservice"><code>NetworkService</code></a> object
-              that represents the <var>index</var>th service in the <a href="#dfn-list-of-authorized-service-records"
+             class="internalDFN">list of authorized service records</a>, the user agent <em class="rfc2119"
+             title="must">must</em> return the <a href="#networkservice"><code>NetworkService</code></a> object that
+             represents the <var>index</var>th service in the <a href="#dfn-list-of-authorized-service-records"
              class="internalDFN">list of authorized service records</a>.
         </p>
         <p>
@@ -1177,8 +1174,8 @@
              <a href="#dom-networkservice-id"><code>id</code></a> attribute is equal to the value of the <var>id</var>
              argument. When no services in the <a href="#dfn-list-of-authorized-service-records"
              class="internalDFN">list of authorized service records</a> match the given argument, the method <em class=
-             "ct"><em class="rfc2119"
-              title="must">must</em></em> return null.
+             "rfc2119"
+             title="must">must</em> return null.
         </p>
         <p>
           Services available within the local network can connect and disconnect at different times during the
@@ -1328,8 +1325,8 @@
         </dl>
         <p>
           The <dfn id="dom-networkservice-id"><code>id</code></dfn> attribute is a unique identifier for the service.
-          The same service provided at different times or on different objects <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> have the same <a href="#dom-networkservice-id"><code>id</code></a> value.
+          The same service provided at different times or on different objects <em class="rfc2119"
+             title="must">must</em> have the same <a href="#dom-networkservice-id"><code>id</code></a> value.
         </p>
         <p>
           The <dfn id="dom-networkservice-name"><code>name</code></dfn> attribute represents a human-readable title for
@@ -1377,8 +1374,8 @@
           reporting itself as being either <var>online</var>, and therefore accessible on the local network, in which
           case this attribute will return <code>true</code> or, <var>offline</var>, and therefore not accessible on the
           local network, either temporarily or permanently, in which case this attribute will return
-          <code>false</code>. This attribute <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> default to <code>true</code>.
+          <code>false</code>. This attribute <em class="rfc2119"
+             title="must">must</em> default to <code>true</code>.
         </p>
       </section>
       <section id="events-1">
@@ -1441,9 +1438,9 @@
       </h2>
       <p>
         A <a href="#dfn-user-agent"
-           class="internalDFN">user agent</a> conforming to this specification <em class="ct"><em class="rfc2119"
-            title="may">may</em></em> implement <acronym title="Simple Service Discovery Protocol"><abbr title=
-            "Simple Service Discovery Protocol">SSDP</abbr></acronym> [<cite><a class="bibref"
+           class="internalDFN">user agent</a> conforming to this specification <em class="rfc2119"
+           title="may">may</em> implement <acronym title="Simple Service Discovery Protocol"><abbr title=
+           "Simple Service Discovery Protocol">SSDP</abbr></acronym> [<cite><a class="bibref"
            href="#bib-UPNP-DEVICEARCH11">UPNP-DEVICEARCH11</a></cite>] and Zeroconf [<cite><a class="bibref"
            href="#bib-DNS-SD">DNS-SD</a></cite>] + [<cite><a class="bibref"
            href="#bib-MDNS">MDNS</a></cite>] service discovery mechanisms to enable Web pages to request and connect
@@ -1451,9 +1448,9 @@
            via either mechanism, through this <abbr title="Application Programming Interface">API</abbr>. When a
            <a href="#dfn-user-agent"
            class="internalDFN">user agent</a> implements either of these service discovery mechanisms, then it
-           <em class="ct"><em class="rfc2119"
-            title="must">must</em></em> conform to the corresponding algorithms provided in this section of the
-            specification.
+           <em class="rfc2119"
+           title="must">must</em> conform to the corresponding algorithms provided in this section of the
+           specification.
       </p>
       <p>
         This section presents how the results of these two service discovery mechanisms will be matched to requested
@@ -1461,10 +1458,10 @@
         resulting <a href="#networkservice"><code>NetworkService</code></a> objects.
       </p>
       <p>
-        It is expected that user agents will perform these service discovery mechansisms asynchronously and
-        periodically update the <a>list of networked devices</a> as required. The timing of any service discovery
-        mechanisms is an implementation detail left to the discretion of the implementer (e.g. once on user agent
-        start-up, every X seconds during user agent execution or on invocation of this <abbr title=
+        It is expected that user agents will perform these service discovery mechanisms asynchronously and periodically
+        update the <a>list of networked devices</a> as required. The timing of any service discovery mechanisms is an
+        implementation detail left to the discretion of the implementer (e.g. once on user agent start-up, every X
+        seconds during user agent execution or on invocation of this <abbr title=
         "Application Programming Interface">API</abbr> from a Web page).
       </p>
       <p>
@@ -1606,9 +1603,8 @@
         </li>
       </ol>
       <p>
-        User agents <em class="ct"><em class="rfc2119"
-            title="should">should</em></em> expire a service record from the <a href=
-            "#dfn-list-of-available-service-records"
+        User agents <em class="rfc2119"
+           title="should">should</em> expire a service record from the <a href="#dfn-list-of-available-service-records"
            class="internalDFN">list of available service records</a> when its <code>expiryTimestamp</code> attribute
            exceeds the current UTC timestamp. When this condition is met the <a href="#dfn-user-agent"
            class="internalDFN">user agent</a> <em class="rfc2119"
@@ -1627,8 +1623,8 @@
           with the name <code>_services._dns-sd._udp</code> on the resolved recommended automatic browsing domain
           [<cite><a class="bibref"
              href="#bib-MDNS">MDNS</a></cite>], the <a href="#dfn-user-agent"
-             class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> run the following steps:
+             class="internalDFN">user agent</a> <em class="rfc2119"
+             title="must">must</em> run the following steps:
         </p>
         <ol class="rule">
           <li>Let <var>service <abbr title="Multicast DNS">mDNS</abbr> responses</var> be an array of <abbr title=
@@ -1687,15 +1683,15 @@
           "Simple Service Discovery Protocol">SSDP</abbr>)
         </h3>
         <p>
-          A user agent that implements UPnP service discovery <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> issue an <dfn id="dfn-advertisement-for-upnp-root-devices">advertisement for
-              UPnP root devices</dfn> against the user's current local network according to the full normative text and
-              timing provided in 'Section 1.3.2: Search request with M-SEARCH' detailed in [<cite><a class="bibref"
+          A user agent that implements UPnP service discovery <em class="rfc2119"
+             title="must">must</em> issue an <dfn id="dfn-advertisement-for-upnp-root-devices">advertisement for UPnP
+             root devices</dfn> against the user's current local network according to the full normative text and
+             timing provided in 'Section 1.3.2: Search request with M-SEARCH' detailed in [<cite><a class="bibref"
              href="#bib-UPNP-DEVICEARCH11">UPNP-DEVICEARCH11</a></cite>].
         </p>
         <p>
-          The user agent <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> issue all <a title="advertisement for UPnP root devices"
+          The user agent <em class="rfc2119"
+             title="must">must</em> issue all <a title="advertisement for UPnP root devices"
              href="#dfn-advertisement-for-upnp-root-devices"
              class="internalDFN">advertisements for UPnP root devices</a> with a <abbr title=
              "Hypertext Transfer Protocol">HTTP</abbr> request line equal to <code>M-SEARCH * <abbr title=
@@ -1706,9 +1702,9 @@
              value between <code>1</code> and <code>5</code> seconds.
         </p>
         <p>
-          The user agent <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> listen for incoming requests and process any incoming responses to any
-              <a href="#dfn-advertisement-for-upnp-root-devices"
+          The user agent <em class="rfc2119"
+             title="must">must</em> listen for incoming requests and process any incoming responses to any <a href=
+             "#dfn-advertisement-for-upnp-root-devices"
              class="internalDFN">advertisement for UPnP root devices</a> on the <dfn id=
              "dfn-standard-upnp-address-and-port">standard UPnP address and port</dfn>, on all current local network
              interface addresses with the port <code>1900</code>, according to the rules defined in this section.
@@ -1718,17 +1714,17 @@
           following an initial <a href="#dfn-advertisement-for-upnp-root-devices"
              class="internalDFN">advertisement for UPnP root devices</a> sent on a <a href=
              "#dfn-standard-upnp-address-and-port"
-             class="internalDFN">standard UPnP address and port</a> the user agent <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> run the following steps:
+             class="internalDFN">standard UPnP address and port</a> the user agent <em class="rfc2119"
+             title="must">must</em> run the following steps:
         </p>
         <ol class="rule">
           <li>If the <a href="#dfn-http-response"
                 class="internalDFN"><abbr title="Hypertext Transfer Protocol">HTTP</abbr> Response</a> is not a
                 <abbr title="Hypertext Transfer Protocol">HTTP</abbr> 200 OK response then this response is invalid and
-                the user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> discard this response, abort any remaining steps and return. The user agent
-                <em class="ct"><em class="rfc2119"
-                title="may">may</em></em> issue a new <a href="#dfn-advertisement-for-upnp-root-devices"
+                the user agent <em class="rfc2119"
+                title="must">must</em> discard this response, abort any remaining steps and return. The user agent
+                <em class="rfc2119"
+                title="may">may</em> issue a new <a href="#dfn-advertisement-for-upnp-root-devices"
                 class="internalDFN">advertisement for UPnP root devices</a> as a result of this error occurring.
           </li>
           <li>If the <a href="#dfn-maximum-upnp-advertisement-response-wait-time"
@@ -1737,8 +1733,8 @@
                 class="internalDFN">advertisement for UPnP root devices</a> was sent then the <a href=
                 "#dfn-http-response"
                 class="internalDFN"><abbr title="Hypertext Transfer Protocol">HTTP</abbr> Response</a> is invalid and
-                the user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> discard this response, abort any remaining steps and return.
+                the user agent <em class="rfc2119"
+                title="must">must</em> discard this response, abort any remaining steps and return.
           </li>
           <li>Let <var>ssdp device</var> be an Object with a property for each <abbr title=
           "Hypertext Transfer Protocol">HTTP</abbr> header received in the <a href="#dfn-http-response"
@@ -1751,11 +1747,11 @@
           value of its <var>ST</var> entry is not <code>upnp:rootdevice</code>, then the <a href="#dfn-http-response"
                 class="internalDFN"><abbr title="Hypertext Transfer Protocol">HTTP</abbr> Response</a> is invalid and
                 the <a href="#dfn-user-agent"
-                class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> discard this response, abort any remaining steps and return.
+                class="internalDFN">user agent</a> <em class="rfc2119"
+                title="must">must</em> discard this response, abort any remaining steps and return.
           </li>
-          <li>The user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> run the rule for <a href="#dfn-obtaining-a-upnp-device-description-file"
+          <li>The user agent <em class="rfc2119"
+                title="must">must</em> run the rule for <a href="#dfn-obtaining-a-upnp-device-description-file"
                 class="internalDFN">obtaining a UPnP Device Description File</a> passing in the first occurrence of
                 <var>LOCATION</var> from <var>ssdp device</var> as the <var>device descriptor <abbr title=
                 "Uniform Resource Locator">URL</abbr></var> argument and the first occurrence of <var>USN</var> from
@@ -1766,16 +1762,16 @@
         <p>
           For each <dfn id="dfn-http-request"><abbr title="Hypertext Transfer Protocol">HTTP</abbr> Request</dfn>
           received on a <a href="#dfn-standard-upnp-address-and-port"
-             class="internalDFN">standard UPnP address and port</a> the user agent <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> run the following steps:
+             class="internalDFN">standard UPnP address and port</a> the user agent <em class="rfc2119"
+             title="must">must</em> run the following steps:
         </p>
         <ol class="rule">
           <li>If the <a href="#dfn-http-request"
                 class="internalDFN"><abbr title="Hypertext Transfer Protocol">HTTP</abbr> Request</a> is not a
                 <abbr title="Hypertext Transfer Protocol">HTTP</abbr> NOTIFY request then it is not a valid UPnP
-                Request and the user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> return a <abbr title="Hypertext Transfer Protocol">HTTP</abbr> 200 OK
-                response, discard this request, abort any remaining steps and return.
+                Request and the user agent <em class="rfc2119"
+                title="must">must</em> return a <abbr title="Hypertext Transfer Protocol">HTTP</abbr> 200 OK response,
+                discard this request, abort any remaining steps and return.
           </li>
           <li>Let <var>ssdp device</var> be an Object with a property for each <abbr title=
           "Hypertext Transfer Protocol">HTTP</abbr> header received in the <a href="#dfn-http-request"
@@ -1789,13 +1785,13 @@
           the <a href="#dfn-http-request"
                 class="internalDFN"><abbr title="Hypertext Transfer Protocol">HTTP</abbr> Request</a> is a malformed
                 UPnP Request and the <a href="#dfn-user-agent"
-                class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> return a 400 Bad Request response, discard this request, abort any
-                remaining steps and return.
+                class="internalDFN">user agent</a> <em class="rfc2119"
+                title="must">must</em> return a 400 Bad Request response, discard this request, abort any remaining
+                steps and return.
           </li>
           <li>If <var>ssdp device</var>'s <var>NTS</var> entry is equal to <code>ssdp:alive</code> or
-          <code>ssdp:update</code> then the user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> run the rule for <a href="#dfn-obtaining-a-upnp-device-description-file"
+          <code>ssdp:update</code> then the user agent <em class="rfc2119"
+                title="must">must</em> run the rule for <a href="#dfn-obtaining-a-upnp-device-description-file"
                 class="internalDFN">obtaining a UPnP Device Description File</a> passing in the first occurrence of
                 <var>LOCATION</var> from <var>ssdp device</var> as the <var>device descriptor <abbr title=
                 "Uniform Resource Locator">URL</abbr></var> argument and the first occurrence of <var>USN</var> from
@@ -1803,8 +1799,8 @@
                 <var>CACHE-CONTROL</var> from <var>ssdp device</var> as the <var>device expiry</var>.<br>
             <br>
             Otherwise, if <var>ssdp device</var>'s <var>NTS</var> entry is equal to <code>ssdp:byebye</code> then the
-            user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> run the rule for <a href=
+            user agent <em class="rfc2119"
+                title="must">must</em> run the rule for <a href=
                 "#dfn-removing-all-services-from-a-registered-upnp-device"
                 class="internalDFN">removing all services from a registered UPnP Device</a> passing in the first
                 occurrence of <var>USN</var> from <var>ssdp device</var> as the <var>device identifier</var> argument.
@@ -1817,8 +1813,8 @@
              href="#bib-UPNP-DEVICEARCH11">UPNP-DEVICEARCH11</a></cite>] from a <abbr title=
              "Uniform Resource Locator">URL</abbr>-based resource. This rule takes three arguments - <var>device
              descriptor <abbr title="Uniform Resource Locator">URL</abbr></var>, <var>device identifier</var> and
-             <var>device expiry</var> - and when called the user agent <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> run the following steps:
+             <var>device expiry</var> - and when called the user agent <em class="rfc2119"
+             title="must">must</em> run the following steps:
         </p>
         <ol class="rule">
           <li>Let <var>device descriptor file</var> contain the contents of the file located at the <abbr title=
@@ -1831,8 +1827,8 @@
           <li>If the value provided in <var>device descriptor <abbr title="Uniform Resource Locator">URL</abbr></var>
           cannot be resolved as a reachable <abbr title="Uniform Resource Locator">URL</abbr> on the current network or
           the <var>root device descriptor file</var> remains empty then it is invalid and the <a href="#dfn-user-agent"
-                class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> abort any remaining steps and return.
+                class="internalDFN">user agent</a> <em class="rfc2119"
+                title="must">must</em> abort any remaining steps and return.
           </li>
           <li>Run the rule for <a href="#dfn-processing-a-upnp-device-description-file"
                 class="internalDFN">processing a UPnP Device Description File</a>, passing in the current <var>device
@@ -1840,8 +1836,8 @@
           </li>
           <li>If the current <var>device descriptor file</var> contains a <code>&lt;deviceList&gt;</code> element then
           for each <code>&lt;device&gt;</code> element within <code>&lt;deviceList&gt;</code> - herein known as an
-          <var>embedded device descriptor file</var> - the user agent <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> run the rule for <a href="#dfn-processing-a-upnp-device-description-file"
+          <var>embedded device descriptor file</var> - the user agent <em class="rfc2119"
+                title="must">must</em> run the rule for <a href="#dfn-processing-a-upnp-device-description-file"
                 class="internalDFN">processing a UPnP Device Description File</a>, passing in the current <var>embedded
                 device descriptor file</var> as the <var>device descriptor file</var> argument, along with the common
                 <var>device identifier</var> and <var>device expiry</var> arguments.
@@ -1859,8 +1855,8 @@
           The rule for <a href="#dfn-processing-a-upnp-device-description-file"
              class="internalDFN">processing a UPnP Device Description File</a> takes three arguments - <var>device
              descriptor file</var>, <var>device identifier</var> and <var>device expiry</var> - and when called the
-             user agent <em class="ct"><em class="rfc2119"
-              title="must">must</em></em> run the following steps:
+             user agent <em class="rfc2119"
+             title="must">must</em> run the following steps:
         </p>
         <ol class="rule">
           <li>Let <var>advertised services</var> be a list of all advertised services obtained from the <var>device
@@ -1946,8 +1942,8 @@
         <ol class="rule">
           <li>If <var>network service record</var>'s <code>eventsUrl</code> property is empty then the <a href=
           "#dfn-user-agent"
-                class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> abort these steps.
+                class="internalDFN">user agent</a> <em class="rfc2119"
+                title="must">must</em> abort these steps.
           </li>
           <li>Let <var>callback <abbr title="Uniform Resource Locator">URL</abbr></var> be the value of creating a new
           <a href="#dfn-user-agent-generated-callback-url"
@@ -1962,8 +1958,8 @@
           </li>
           <li>If a non-200 OK response is received from the <abbr title="Hypertext Transfer Protocol">HTTP</abbr>
           SUBSCRIBE request then the <a href="#dfn-user-agent"
-                class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                title="must">must</em></em> abort these steps.
+                class="internalDFN">user agent</a> <em class="rfc2119"
+                title="must">must</em> abort these steps.
           </li>
           <li>On receiving a valid 200 OK response, run the following steps:
             <ol class="rule">
@@ -1973,7 +1969,7 @@
               <li>Let <var>timeout date</var> equal the sum of the current UTC date value plus the integer value of the
               first included <em>TIMEOUT</em> header (minus the leading string of <code>Second-</code>), if it exists.
               </li>
-              <li>Run the following steps aynchronously and continue to the step labeled <em>listen</em> below.
+              <li>Run the following steps asynchronously and continue to the step labeled <em>listen</em> below.
               </li>
               <li>
                 <em>Refresh Subscription</em>: Run the following steps at a set interval (X) within the <a href=
@@ -2008,8 +2004,8 @@
                   <li>Let <var>content clone</var> be the result of obtaining the message body of the <abbr title=
                   "Hypertext Transfer Protocol">HTTP</abbr> NOTIFY request. If <var>content clone</var> is empty, then
                   the <a href="#dfn-user-agent"
-                        class="internalDFN">user agent</a> <em class="ct"><em class="rfc2119"
-                        title="must">must</em></em> abort these steps.
+                        class="internalDFN">user agent</a> <em class="rfc2119"
+                        title="must">must</em> abort these steps.
                   </li>
                   <li>Let <var>notification event</var> be a new simple event that uses the <a href=
                   "http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#event"
@@ -2037,7 +2033,7 @@
              "dfn-terminate-an-existing-upnp-events-subscription">terminate an existing UPnP Events Subscription</dfn>
              at any time for any <var>active service</var> in the <a href="#dfn-list-of-authorized-service-records"
              class="internalDFN">list of authorized service records</a> by sending an <abbr title=
-             "Hypertext Transfer Protocol">HTTP</abbr> UNSUBSCRIBE request - as defined in 'Section 4.1.4: Canceling a
+             "Hypertext Transfer Protocol">HTTP</abbr> UNSUBSCRIBE request - as defined in 'Section 4.1.4: Cancelling a
              subscription with UNSUBSCRIBE' in [<cite><a class="bibref"
              href="#bib-UPNP-DEVICEARCH11">UPNP-DEVICEARCH11</a></cite>] - with a HOST header set to that <var>active
              service</var>'s <code>eventsUrl</code> property and a SID header set to the <var>callback ID</var>
@@ -2054,19 +2050,18 @@
             When the <a href="#dfn-user-agent"
                class="internalDFN">user agent</a> detects that the user has dropped from their connected network then,
                for each <var>existing service record</var> in the <a href="#dfn-list-of-available-service-records"
-               class="internalDFN">list of available service records</a>, the user agent <em class="ct"><em class=
-               "rfc2119"
-                title="must">must</em></em> run the general rule for <a href="#dfn-removing-an-available-service"
+               class="internalDFN">list of available service records</a>, the user agent <em class="rfc2119"
+               title="must">must</em> run the general rule for <a href="#dfn-removing-an-available-service"
                class="internalDFN">removing an available service</a> passing in each <var>existing service
                record</var>'s <code>id</code> property as the only argument for each call.
           </p>
           <p>
             When the <a href="#dfn-user-agent"
                class="internalDFN">user agent</a> detects that the user has connected to a new network or reconnected
-               to an existing network, then it <em class="ct"><em class="rfc2119"
-                title="should">should</em></em> restart its discovery mechanisms as defined in the <a href=
-                "#service-discovery">Service Discovery</a> section of this specification, maintaining the existing
-                <a href="#dfn-list-of-authorized-service-records"
+               to an existing network, then it <em class="rfc2119"
+               title="should">should</em> restart its discovery mechanisms as defined in the <a href=
+               "#service-discovery">Service Discovery</a> section of this specification, maintaining the existing
+               <a href="#dfn-list-of-authorized-service-records"
                class="internalDFN">list of authorized service records</a> currently in use.
           </p>
         </div>
@@ -2217,7 +2212,7 @@
             <li>Example: A Web page advertises that it is capable of interacting with and controlling multiple types of
             Home Media Server. The user can select their Home Media Server type from a drop-down list or known Media
             Servers, at which point the Web page sends a request to the user agent to connect with the associated
-            service type (and, optionally, the associated event type) of the Home Media Server. The communiciation
+            service type (and, optionally, the associated event type) of the Home Media Server. The communication
             protocols supported by Home Media Servers typically vary between UPnP, JSON-RPC, Protocol Buffers or other
             messaging formats depending on the Home Media Server requested. The Web page is able to communicate with
             the user-selected Home Media Server in the messaging format supported by that Device, which, in this
@@ -2347,7 +2342,7 @@
 "str">"POST"</span><span class="pun">,</span><span class="pln"> services</span><span class="pun">[</span><span class=
 "lit">0</span><span class="pun">].</span><span class="pln">url </span><span class="pun">+</span><span class=
 "pln"> </span><span class="str">"/getAlbums"</span><span class="pun">);</span><span class="pln"> </span><span class=
-"com">// services[0].url and its subresources have been</span><span class="pln">
+"com">// services[0].url and its sub-resources have been</span><span class="pln">
                                                         </span><span class=
 "com">// whitelisted for cross-site XHR use in this</span><span class="pln">
                                                         </span><span class=
@@ -2613,7 +2608,7 @@
 "lit">0</span><span class="pun">].</span><span class="pln">url</span><span class="pun">);</span><span class=
 "pln"> </span><span class="com">// services[0].url and its</span><span class="pln">
                                           </span><span class=
-"com">// subresources have been whitelisted for</span><span class="pln">
+"com">// sub-resources have been whitelisted for</span><span class="pln">
                                           </span><span class=
 "com">// cross-site XHR use in this current</span><span class="pln">
                                           </span><span class="com">// browsing context.</span><span class="pln">
@@ -2703,14 +2698,14 @@
         date (in alphabetical order):<br>
         <br>
         Gar Bergstedt, Lars-Erik Bolstad, Cathy Chan, Hari G Kumar, Bob Lund, Giuseppe Pascale, Marcin Simonides,
-        Clarke Stevens, Christian Söderström, Mark Vickers, ...
+        Clarke Stevens, Christian Söderström, Mark Vickers.
       </p>
       <p>
         Thanks are also expressed by the editor to the following organizations and groups for their support in
         producing this specification to date (in alphabetical order):<br>
         <br>
         CableLabs, Opera Software ASA, <abbr title="World Wide Web Consortium">W3C</abbr> Device APIs Working Group,
-        <abbr title="World Wide Web Consortium">W3C</abbr> Web and TV Interest Group, ...
+        <abbr title="World Wide Web Consortium">W3C</abbr> Web and TV Interest Group.
       </p>
     </section>
     <section id="references"
--- a/discovery-api/Overview.src.html	Tue Oct 02 16:32:06 2012 +0200
+++ b/discovery-api/Overview.src.html	Tue Oct 02 16:57:24 2012 +0200
@@ -213,7 +213,7 @@
         are to be interpreted as requirements on user agents.
       </p>
       <p>
-        Conformance requirements phrased as algorithms or specific steps <em class="ct">MAY</em> be implemented in any
+        Conformance requirements phrased as algorithms or specific steps MAY be implemented in any
         manner, so long as the end result is equivalent. (In particular, the algorithms defined in this specification
         are intended to be easy to follow, and not intended to be performant.)
       </p>
@@ -221,13 +221,13 @@
         The only conformance class defined by this specification is a <dfn>user agent</dfn>.
       </p>
       <p>
-        User agents <em class="ct">MAY</em> impose implementation-specific limits on otherwise unconstrained inputs,
+        User agents MAY impose implementation-specific limits on otherwise unconstrained inputs,
         e.g. to prevent denial of service attacks, to guard against running out of memory, or to work around
         platform-specific limitations.
       </p>
       <p>
         When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid
-        in development, or for performance reasons), user agents <em class="ct">MUST</em> act as if they had no support
+        in development, or for performance reasons), user agents MUST act as if they had no support
         for the feature whatsoever, and as if the feature was not mentioned in this specification. For example, if a
         particular feature is accessed via an attribute in a Web IDL interface, the attribute itself would be omitted
         from the objects that implement that interface - leaving the attribute on the object but making it return null
@@ -345,8 +345,8 @@
               page would like to interact with.
             </p>
             <p>
-              If the user accepts, the <var title="">successCallback</var> is invoked, with one or more <code><a href=
-              "#networkservice"><code>NetworkService</code></a></code> objects as its argument.
+              If the user accepts, the <var title="">successCallback</var> is invoked, with one or more <a href=
+              "#networkservice"><code>NetworkService</code></a> objects as its argument.
             </p>
             <p>
               If the user declines, the <var title="">errorCallback</var> (if any) is invoked.
@@ -357,7 +357,7 @@
           <p>
             When the <dfn id="dom-navigator-getnetworkservices"
                title="dom-navigator-getnetworkservices"><code>getNetworkServices(type, successCallback[,
-               errorCallback])</code></dfn> method is called, the <a>user agent</a> <em class="ct">MUST</em> run the
+               errorCallback])</code></dfn> method is called, the <a>user agent</a> MUST run the
                following steps:
           </p>
           <ol class="rule">
@@ -372,7 +372,7 @@
             </li>
             <li>If <var>requested control types</var> is an array that contains at least one or more <a title=
             "valid service type">valid service type</a> tokens then continue to the step labeled <em>process</em>
-            below. Otherwise, the <a>user agent</a> <em class="ct">MUST</em> <a href=
+            below. Otherwise, the <a>user agent</a> MUST <a href=
             "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                   object of type <code>Function</code>, with a new <a href=
@@ -408,7 +408,7 @@
                 </li>
               </ol>
             </li>
-            <li>If <var>services found</var> is an empty array, then the <a>user agent</a> <em class="ct">MUST</em>
+            <li>If <var>services found</var> is an empty array, then the <a>user agent</a> MUST
             <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                   object of type <code>Function</code>, with a new <a href=
@@ -421,7 +421,7 @@
             <li>Return, and run the remaining steps asynchronously.
             </li>
             <li>Optionally, e.g. based on a previously-established user preference, for security reasons, or due to
-            platform limitations, the <a>user agent</a> <em class="ct">MAY</em> <a href=
+            platform limitations, the <a>user agent</a> MAY <a href=
             "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                   object of type <code>Function</code>, with a new <a href=
@@ -431,7 +431,7 @@
                   "#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its
                   argument, abort any remaining steps and return.
             </li>
-            <li>The <a>user agent</a> <em class="ct">MUST</em> prompt the user in a user-agent-specific manner for
+            <li>The <a>user agent</a> MUST prompt the user in a user-agent-specific manner for
             permission to provide the <a href=
             "http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
                   class="externalDFN">entry script</a>'s <a href=
@@ -444,7 +444,7 @@
                 SHOULD include an "ongoing local-network communication" indicator.
               </p>
               <p>
-                If the user denies permission, then the <a>user agent</a> <em class="ct">MUST</em> <a href=
+                If the user denies permission, then the <a>user agent</a> MUST <a href=
                 "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                    class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
                    object of type <code>Function</code>, with a new <a href=
@@ -461,7 +461,7 @@
             <li>Let <var>services</var> be the array of one or more <a href=
             "#networkservice"><code>NetworkService</code></a> objects for which the user granted permission.
             </li>
-            <li>For each Object <var>service</var> in <var>services</var>, run the following substeps:
+            <li>For each Object <var>service</var> in <var>services</var>, run the following sub-steps:
               <ol class="rule">
                 <li>Add the <var>service</var>'s <code>url</code> parameter to the <a>entry script origin's
                   <abbr title="Uniform Resource Locator">URL</abbr> whitelist</a>.
@@ -483,7 +483,7 @@
             <li>Add the set of <var>services</var> to the <a>list of authorized service records</a> internally against
             the newly created <var>services manager</var> object.
             </li>
-            <li>The <a>user agent</a> <em class="ct">MUST</em> <a href=
+            <li>The <a>user agent</a> MUST <a href=
             "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
                   class="externalDFN">queue a task</a> to invoke <var>successCallback</var> with <var>services
                   manager</var> as its argument.
@@ -499,7 +499,7 @@
           </p>
           <p>
             When a <a href="#networkservice"><code>NetworkService</code></a> object is provided to a Web page, the
-            <a>user agent</a> <em class="ct">MUST</em> add the <code>url</code> property to the <dfn>entry script
+            <a>user agent</a> MUST add the <code>url</code> property to the <dfn>entry script
             origin's URL whitelist</dfn>. This list enables the Web page to override and initiate cross-site resource
             requests towards these URLs, and any sub-resources of these URLs, within the current <a href=
             "http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
@@ -634,13 +634,13 @@
         </dl>
         <div>
           <p>
-            The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute <em class="ct">MUST</em>
+            The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute MUST
             return the number of services represented in the object's corresponding <a>list of authorized service
             records</a> at the time of getting.
           </p>
           <p>
             The <dfn id="dom-networkservices-servicesavailable"><code>servicesAvailable</code></dfn> attribute
-            <em class="ct">MUST</em> return the number of services in the <a>list of available service records</a>
+            MUST return the number of services in the <a>list of available service records</a>
             whose <code>type</code> attribute matches any of the <a>valid service type</a> tokens that was initially
             used to create the current <a href="#networkservices"><code>NetworkServices</code></a> object.
           </p>
@@ -696,7 +696,7 @@
           "http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#determine-the-value-of-an-indexed-property"
              class="externalDFN">determine the value of an indexed property</a> for a given index <var>index</var> in a
              <a href="#networkservices"><code>NetworkServices</code></a> object's <a>list of authorized service
-             records</a>, the user agent <em class="ct">MUST</em> return the <a href=
+             records</a>, the user agent MUST return the <a href=
              "#networkservice"><code>NetworkService</code></a> object that represents the <var>index</var>th service in
              the <a>list of authorized service records</a>.
         </p>
@@ -706,7 +706,7 @@
           <a>list of authorized service records</a> represented by the respective object whose <a href=
           "#dom-networkservice-id"><code>id</code></a> attribute is equal to the value of the <var>id</var> argument.
           When no services in the <a>list of authorized service records</a> match the given argument, the method
-          <em class="ct">MUST</em> return null.
+          MUST return null.
         </p>
         <p>
           Services available within the local network can connect and disconnect at different times during the
@@ -848,7 +848,7 @@
         </dl>
         <p>
           The <dfn id="dom-networkservice-id"><code>id</code></dfn> attribute is a unique identifier for the service.
-          The same service provided at different times or on different objects <em class="ct">MUST</em> have the same
+          The same service provided at different times or on different objects MUST have the same
           <a href="#dom-networkservice-id"><code>id</code></a> value.
         </p>
         <p>
@@ -894,7 +894,7 @@
           reporting itself as being either <var>online</var>, and therefore accessible on the local network, in which
           case this attribute will return <code>true</code> or, <var>offline</var>, and therefore not accessible on the
           local network, either temporarily or permanently, in which case this attribute will return
-          <code>false</code>. This attribute <em class="ct">MUST</em> default to <code>true</code>.
+          <code>false</code>. This attribute MUST default to <code>true</code>.
         </p>
       </section>
       <section>
@@ -955,11 +955,11 @@
         Service Discovery
       </h2>
       <p>
-        A <a>user agent</a> conforming to this specification <em class="ct">MAY</em> implement <acronym title=
+        A <a>user agent</a> conforming to this specification MAY implement <acronym title=
         "Simple Service Discovery Protocol">SSDP</acronym> [[!UPNP-DEVICEARCH11]] and Zeroconf [[!DNS-SD]] + [[!MDNS]]
         service discovery mechanisms to enable Web pages to request and connect with HTTP services running on networked
         devices, discovered via either mechanism, through this API. When a <a>user agent</a> implements either of these
-        service discovery mechanisms, then it <em class="ct">MUST</em> conform to the corresponding algorithms provided
+        service discovery mechanisms, then it MUST conform to the corresponding algorithms provided
         in this section of the specification.
       </p>
       <p>
@@ -968,7 +968,7 @@
         resulting <a href="#networkservice"><code>NetworkService</code></a> objects.
       </p>
       <p>
-        It is expected that user agents will perform these service discovery mechansisms asynchronously and
+        It is expected that user agents will perform these service discovery mechanisms asynchronously and
         periodically update the <a>list of networked devices</a> as required. The timing of any service discovery
         mechanisms is an implementation detail left to the discretion of the implementer (e.g. once on user agent
         start-up, every X seconds during user agent execution or on invocation of this API from a Web page).
@@ -1098,7 +1098,7 @@
         </li>
       </ol>
       <p>
-        User agents <em class="ct">SHOULD</em> expire a service record from the <a>list of available service
+        User agents SHOULD expire a service record from the <a>list of available service
         records</a> when its <code>expiryTimestamp</code> attribute exceeds the current UTC timestamp. When this
         condition is met the <a>user agent</a> SHOULD run the rule for <a>removing an available service</a>, passing in
         the expired service record's <code>id</code> attribute as the only argument.
@@ -1111,7 +1111,7 @@
         <p>
           For each DNS response received from a user-agent-initiated Multicast DNS Browse for <abbr title=
           "DNS Pointer Record">PTR</abbr> records with the name <code>_services._dns-sd._udp</code> on the resolved
-          recommended automatic browsing domain [[!MDNS]], the <a>user agent</a> <em class="ct">MUST</em> run the
+          recommended automatic browsing domain [[!MDNS]], the <a>user agent</a> MUST run the
           following steps:
         </p>
         <ol class="rule">
@@ -1158,12 +1158,12 @@
           Simple Service Discovery Protocol (<abbr title="Simple Service Discovery Protocol">SSDP</abbr>)
         </h5>
         <p>
-          A user agent that implements UPnP service discovery <em class="ct">MUST</em> issue an <dfn>advertisement for
+          A user agent that implements UPnP service discovery MUST issue an <dfn>advertisement for
           UPnP root devices</dfn> against the user's current local network according to the full normative text and
           timing provided in 'Section 1.3.2: Search request with M-SEARCH' detailed in [[!UPNP-DEVICEARCH11]].
         </p>
         <p>
-          The user agent <em class="ct">MUST</em> issue all <a title=
+          The user agent MUST issue all <a title=
           "advertisement for UPnP root devices">advertisements for UPnP root devices</a> with a HTTP request line equal
           to <code>M-SEARCH * HTTP/1.1</code>, with a HOST header equal to the reserved multicast address and port of
           <code>239.255.255.250:1900</code>, a MAN header equal to <code>ssdp:discover</code>, an ST header equal to
@@ -1171,24 +1171,24 @@
           response wait time</dfn> value between <code>1</code> and <code>5</code> seconds.
         </p>
         <p>
-          The user agent <em class="ct">MUST</em> listen for incoming requests and process any incoming responses to
+          The user agent MUST listen for incoming requests and process any incoming responses to
           any <a>advertisement for UPnP root devices</a> on the <dfn>standard UPnP address and port</dfn>, on all
           current local network interface addresses with the port <code>1900</code>, according to the rules defined in
           this section.
         </p>
         <p>
           For each <dfn>HTTP Response</dfn> following an initial <a>advertisement for UPnP root devices</a> sent on a
-          <a>standard UPnP address and port</a> the user agent <em class="ct">MUST</em> run the following steps:
+          <a>standard UPnP address and port</a> the user agent MUST run the following steps:
         </p>
         <ol class="rule">
           <li>If the <a>HTTP Response</a> is not a HTTP 200 OK response then this response is invalid and the user
-          agent <em class="ct">MUST</em> discard this response, abort any remaining steps and return. The user agent
-          <em class="ct">MAY</em> issue a new <a>advertisement for UPnP root devices</a> as a result of this error
+          agent MUST discard this response, abort any remaining steps and return. The user agent
+          MAY issue a new <a>advertisement for UPnP root devices</a> as a result of this error
           occurring.
           </li>
           <li>If the <a>maximum UPnP advertisement response wait time</a> has been exceeded since the initial
           <a>advertisement for UPnP root devices</a> was sent then the <a>HTTP Response</a> is invalid and the user
-          agent <em class="ct">MUST</em> discard this response, abort any remaining steps and return.
+          agent MUST discard this response, abort any remaining steps and return.
           </li>
           <li>Let <var>ssdp device</var> be an Object with a property for each HTTP header received in the <a>HTTP
           Response</a>, with each key being the name of a HTTP response header and each value being that HTTP response
@@ -1197,10 +1197,10 @@
           <li>If <var>ssdp device</var> does not contain at least one <var>CACHE-CONTROL</var> entry, at least one
           <var>USN</var> entry, at least one <var>ST</var> entry and at least one <var>LOCATION</var> entry or the
           value of its <var>ST</var> entry is not <code>upnp:rootdevice</code>, then the <a>HTTP Response</a> is
-          invalid and the <a>user agent</a> <em class="ct">MUST</em> discard this response, abort any remaining steps
+          invalid and the <a>user agent</a> MUST discard this response, abort any remaining steps
           and return.
           </li>
-          <li>The user agent <em class="ct">MUST</em> run the rule for <a>obtaining a UPnP Device Description File</a>
+          <li>The user agent MUST run the rule for <a>obtaining a UPnP Device Description File</a>
           passing in the first occurrence of <var>LOCATION</var> from <var>ssdp device</var> as the <var>device
           descriptor URL</var> argument and the first occurrence of <var>USN</var> from <var>ssdp device</var> as the
           <var>device identifier</var> argument and the first occurrence of <var>CACHE-CONTROL</var> from <var>ssdp
@@ -1209,11 +1209,11 @@
         </ol>
         <p>
           For each <dfn>HTTP Request</dfn> received on a <a>standard UPnP address and port</a> the user agent
-          <em class="ct">MUST</em> run the following steps:
+          MUST run the following steps:
         </p>
         <ol class="rule">
           <li>If the <a>HTTP Request</a> is not a HTTP NOTIFY request then it is not a valid UPnP Request and the user
-          agent <em class="ct">MUST</em> return a HTTP 200 OK response, discard this request, abort any remaining steps
+          agent MUST return a HTTP 200 OK response, discard this request, abort any remaining steps
           and return.
           </li>
           <li>Let <var>ssdp device</var> be an Object with a property for each HTTP header received in the <a>HTTP
@@ -1222,18 +1222,18 @@
           <li>If <var>ssdp device</var> does not contain at least one <var>CACHE-CONTROL</var> entry, at least one
           <var>USN</var> entry, at least one <var>NT</var> entry, at least one <var>NTS</var> entry and at least one
           <var>LOCATION</var> entry or the value of its <var>NT</var> entry is not <code>upnp:rootdevice</code>, then
-          the <a>HTTP Request</a> is a malformed UPnP Request and the <a>user agent</a> <em class="ct">MUST</em> return
+          the <a>HTTP Request</a> is a malformed UPnP Request and the <a>user agent</a> MUST return
           a 400 Bad Request response, discard this request, abort any remaining steps and return.
           </li>
           <li>If <var>ssdp device</var>'s <var>NTS</var> entry is equal to <code>ssdp:alive</code> or
-          <code>ssdp:update</code> then the user agent <em class="ct">MUST</em> run the rule for <a>obtaining a UPnP
+          <code>ssdp:update</code> then the user agent MUST run the rule for <a>obtaining a UPnP
           Device Description File</a> passing in the first occurrence of <var>LOCATION</var> from <var>ssdp
           device</var> as the <var>device descriptor URL</var> argument and the first occurrence of <var>USN</var> from
           <var>ssdp device</var> as the <var>device identifier</var> argument and the first occurrence of
           <var>CACHE-CONTROL</var> from <var>ssdp device</var> as the <var>device expiry</var>.<br>
             <br>
             Otherwise, if <var>ssdp device</var>'s <var>NTS</var> entry is equal to <code>ssdp:byebye</code> then the
-            user agent <em class="ct">MUST</em> run the rule for <a>removing all services from a registered UPnP
+            user agent MUST run the rule for <a>removing all services from a registered UPnP
             Device</a> passing in the first occurrence of <var>USN</var> from <var>ssdp device</var> as the <var>device
             identifier</var> argument.
           </li>
@@ -1242,7 +1242,7 @@
           The rule for <dfn>obtaining a UPnP Device Description File</dfn> is the process of obtaining the contents of
           a standard UPnP Device Description [[!UPNP-DEVICEARCH11]] from a URL-based resource. This rule takes three
           arguments - <var>device descriptor URL</var>, <var>device identifier</var> and <var>device expiry</var> - and
-          when called the user agent <em class="ct">MUST</em> run the following steps:
+          when called the user agent MUST run the following steps:
         </p>
         <ol class="rule">
           <li>Let <var>device descriptor file</var> contain the contents of the file located at the URL provided in
@@ -1251,14 +1251,14 @@
           </li>
           <li>If the value provided in <var>device descriptor URL</var> cannot be resolved as a reachable URL on the
           current network or the <var>root device descriptor file</var> remains empty then it is invalid and the
-          <a>user agent</a> <em class="ct">MUST</em> abort any remaining steps and return.
+          <a>user agent</a> MUST abort any remaining steps and return.
           </li>
           <li>Run the rule for <a>processing a UPnP Device Description File</a>, passing in the current <var>device
           descriptor file</var>, <var>device identifier</var> and <var>device expiry</var> arguments.
           </li>
           <li>If the current <var>device descriptor file</var> contains a <code>&lt;deviceList&gt;</code> element then
           for each <code>&lt;device&gt;</code> element within <code>&lt;deviceList&gt;</code> - herein known as an
-          <var>embedded device descriptor file</var> - the user agent <em class="ct">MUST</em> run the rule for
+          <var>embedded device descriptor file</var> - the user agent MUST run the rule for
           <a>processing a UPnP Device Description File</a>, passing in the current <var>embedded device descriptor
           file</var> as the <var>device descriptor file</var> argument, along with the common <var>device
           identifier</var> and <var>device expiry</var> arguments.
@@ -1272,7 +1272,7 @@
         <p>
           The rule for <a>processing a UPnP Device Description File</a> takes three arguments - <var>device descriptor
           file</var>, <var>device identifier</var> and <var>device expiry</var> - and when called the user agent
-          <em class="ct">MUST</em> run the following steps:
+          MUST run the following steps:
         </p>
         <ol class="rule">
           <li>Let <var>advertised services</var> be a list of all advertised services obtained from the <var>device
@@ -1348,7 +1348,7 @@
         </p>
         <ol class="rule">
           <li>If <var>network service record</var>'s <code>eventsUrl</code> property is empty then the <a>user
-          agent</a> <em class="ct">MUST</em> abort these steps.
+          agent</a> MUST abort these steps.
           </li>
           <li>Let <var>callback URL</var> be the value of creating a new <a>user-agent generated callback url</a>.
           </li>
@@ -1359,7 +1359,7 @@
           <code>eventsUrl</code> property.
           </li>
           <li>If a non-200 OK response is received from the HTTP SUBSCRIBE request then the <a>user agent</a>
-            <em class="ct">MUST</em> abort these steps.
+            MUST abort these steps.
           </li>
           <li>On receiving a valid 200 OK response, run the following steps:
             <ol class="rule">
@@ -1369,7 +1369,7 @@
               <li>Let <var>timeout date</var> equal the sum of the current UTC date value plus the integer value of the
               first included <em>TIMEOUT</em> header (minus the leading string of <code>Second-</code>), if it exists.
               </li>
-              <li>Run the following steps aynchronously and continue to the step labeled <em>listen</em> below.
+              <li>Run the following steps asynchronously and continue to the step labeled <em>listen</em> below.
               </li>
               <li>
                 <em>Refresh Subscription</em>: Run the following steps at a set interval (X) within the <a>user
@@ -1396,7 +1396,7 @@
                 agent</a> is to run the following steps:
                 <ol class="rule">
                   <li>Let <var>content clone</var> be the result of obtaining the message body of the HTTP NOTIFY
-                  request. If <var>content clone</var> is empty, then the <a>user agent</a> <em class="ct">MUST</em>
+                  request. If <var>content clone</var> is empty, then the <a>user agent</a> MUST
                   abort these steps.
                   </li>
                   <li>Let <var>notification event</var> be a new simple event that uses the <a href=
@@ -1421,7 +1421,7 @@
         <p>
           A <a>user agent</a> can <dfn>terminate an existing UPnP Events Subscription</dfn> at any time for any
           <var>active service</var> in the <a>list of authorized service records</a> by sending an HTTP UNSUBSCRIBE
-          request - as defined in 'Section 4.1.4: Canceling a subscription with UNSUBSCRIBE' in [[!UPNP-DEVICEARCH11]]
+          request - as defined in 'Section 4.1.4: Cancelling a subscription with UNSUBSCRIBE' in [[!UPNP-DEVICEARCH11]]
           - with a HOST header set to that <var>active service</var>'s <code>eventsUrl</code> property and a SID header
           set to the <var>callback ID</var> obtained when the initial <a>setup a UPnP Events Subscription</a> action
           occurred.
@@ -1435,12 +1435,12 @@
           <p>
             When the <a>user agent</a> detects that the user has dropped from their connected network then, for each
             <var>existing service record</var> in the <a>list of available service records</a>, the user agent
-            <em class="ct">MUST</em> run the general rule for <a>removing an available service</a> passing in each
+            MUST run the general rule for <a>removing an available service</a> passing in each
             <var>existing service record</var>'s <code>id</code> property as the only argument for each call.
           </p>
           <p>
             When the <a>user agent</a> detects that the user has connected to a new network or reconnected to an
-            existing network, then it <em class="ct">SHOULD</em> restart its discovery mechanisms as defined in the
+            existing network, then it SHOULD restart its discovery mechanisms as defined in the
             <a href="#service-discovery">Service Discovery</a> section of this specification, maintaining the existing
             <a>list of authorized service records</a> currently in use.
           </p>
@@ -1585,7 +1585,7 @@
             <li>Example: A Web page advertises that it is capable of interacting with and controlling multiple types of
             Home Media Server. The user can select their Home Media Server type from a drop-down list or known Media
             Servers, at which point the Web page sends a request to the user agent to connect with the associated
-            service type (and, optionally, the associated event type) of the Home Media Server. The communiciation
+            service type (and, optionally, the associated event type) of the Home Media Server. The communication
             protocols supported by Home Media Servers typically vary between UPnP, JSON-RPC, Protocol Buffers or other
             messaging formats depending on the Home Media Server requested. The Web page is able to communicate with
             the user-selected Home Media Server in the messaging format supported by that Device, which, in this
@@ -1672,7 +1672,7 @@
 // Send a service message to get albums list (and process the service response)
 
    var svcXhr = new XMLHttpRequest();
-   svcXhr.open("POST", services[0].url + "/getAlbums"); // services[0].url and its subresources have been
+   svcXhr.open("POST", services[0].url + "/getAlbums"); // services[0].url and its sub-resources have been
                                                         // whitelisted for cross-site XHR use in this
                                                         // current browsing context.
 
@@ -1783,7 +1783,7 @@
 
     var svcXhr = new XMLHttpRequest();
     svcXhr.open("POST", services[0].url); // services[0].url and its
-                                          // subresources have been whitelisted for
+                                          // sub-resources have been whitelisted for
                                           // cross-site XHR use in this current
                                           // browsing context.