discovery-api/Overview.src.html
changeset 240 4bb39c70f008
parent 239 7e34654692fc
child 241 985e203d74f7
     1.1 --- a/discovery-api/Overview.src.html	Tue Oct 02 16:32:06 2012 +0200
     1.2 +++ b/discovery-api/Overview.src.html	Tue Oct 02 16:57:24 2012 +0200
     1.3 @@ -213,7 +213,7 @@
     1.4          are to be interpreted as requirements on user agents.
     1.5        </p>
     1.6        <p>
     1.7 -        Conformance requirements phrased as algorithms or specific steps <em class="ct">MAY</em> be implemented in any
     1.8 +        Conformance requirements phrased as algorithms or specific steps MAY be implemented in any
     1.9          manner, so long as the end result is equivalent. (In particular, the algorithms defined in this specification
    1.10          are intended to be easy to follow, and not intended to be performant.)
    1.11        </p>
    1.12 @@ -221,13 +221,13 @@
    1.13          The only conformance class defined by this specification is a <dfn>user agent</dfn>.
    1.14        </p>
    1.15        <p>
    1.16 -        User agents <em class="ct">MAY</em> impose implementation-specific limits on otherwise unconstrained inputs,
    1.17 +        User agents MAY impose implementation-specific limits on otherwise unconstrained inputs,
    1.18          e.g. to prevent denial of service attacks, to guard against running out of memory, or to work around
    1.19          platform-specific limitations.
    1.20        </p>
    1.21        <p>
    1.22          When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid
    1.23 -        in development, or for performance reasons), user agents <em class="ct">MUST</em> act as if they had no support
    1.24 +        in development, or for performance reasons), user agents MUST act as if they had no support
    1.25          for the feature whatsoever, and as if the feature was not mentioned in this specification. For example, if a
    1.26          particular feature is accessed via an attribute in a Web IDL interface, the attribute itself would be omitted
    1.27          from the objects that implement that interface - leaving the attribute on the object but making it return null
    1.28 @@ -345,8 +345,8 @@
    1.29                page would like to interact with.
    1.30              </p>
    1.31              <p>
    1.32 -              If the user accepts, the <var title="">successCallback</var> is invoked, with one or more <code><a href=
    1.33 -              "#networkservice"><code>NetworkService</code></a></code> objects as its argument.
    1.34 +              If the user accepts, the <var title="">successCallback</var> is invoked, with one or more <a href=
    1.35 +              "#networkservice"><code>NetworkService</code></a> objects as its argument.
    1.36              </p>
    1.37              <p>
    1.38                If the user declines, the <var title="">errorCallback</var> (if any) is invoked.
    1.39 @@ -357,7 +357,7 @@
    1.40            <p>
    1.41              When the <dfn id="dom-navigator-getnetworkservices"
    1.42                 title="dom-navigator-getnetworkservices"><code>getNetworkServices(type, successCallback[,
    1.43 -               errorCallback])</code></dfn> method is called, the <a>user agent</a> <em class="ct">MUST</em> run the
    1.44 +               errorCallback])</code></dfn> method is called, the <a>user agent</a> MUST run the
    1.45                 following steps:
    1.46            </p>
    1.47            <ol class="rule">
    1.48 @@ -372,7 +372,7 @@
    1.49              </li>
    1.50              <li>If <var>requested control types</var> is an array that contains at least one or more <a title=
    1.51              "valid service type">valid service type</a> tokens then continue to the step labeled <em>process</em>
    1.52 -            below. Otherwise, the <a>user agent</a> <em class="ct">MUST</em> <a href=
    1.53 +            below. Otherwise, the <a>user agent</a> MUST <a href=
    1.54              "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
    1.55                    class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
    1.56                    object of type <code>Function</code>, with a new <a href=
    1.57 @@ -408,7 +408,7 @@
    1.58                  </li>
    1.59                </ol>
    1.60              </li>
    1.61 -            <li>If <var>services found</var> is an empty array, then the <a>user agent</a> <em class="ct">MUST</em>
    1.62 +            <li>If <var>services found</var> is an empty array, then the <a>user agent</a> MUST
    1.63              <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
    1.64                    class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
    1.65                    object of type <code>Function</code>, with a new <a href=
    1.66 @@ -421,7 +421,7 @@
    1.67              <li>Return, and run the remaining steps asynchronously.
    1.68              </li>
    1.69              <li>Optionally, e.g. based on a previously-established user preference, for security reasons, or due to
    1.70 -            platform limitations, the <a>user agent</a> <em class="ct">MAY</em> <a href=
    1.71 +            platform limitations, the <a>user agent</a> MAY <a href=
    1.72              "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
    1.73                    class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
    1.74                    object of type <code>Function</code>, with a new <a href=
    1.75 @@ -431,7 +431,7 @@
    1.76                    "#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its
    1.77                    argument, abort any remaining steps and return.
    1.78              </li>
    1.79 -            <li>The <a>user agent</a> <em class="ct">MUST</em> prompt the user in a user-agent-specific manner for
    1.80 +            <li>The <a>user agent</a> MUST prompt the user in a user-agent-specific manner for
    1.81              permission to provide the <a href=
    1.82              "http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
    1.83                    class="externalDFN">entry script</a>'s <a href=
    1.84 @@ -444,7 +444,7 @@
    1.85                  SHOULD include an "ongoing local-network communication" indicator.
    1.86                </p>
    1.87                <p>
    1.88 -                If the user denies permission, then the <a>user agent</a> <em class="ct">MUST</em> <a href=
    1.89 +                If the user denies permission, then the <a>user agent</a> MUST <a href=
    1.90                  "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
    1.91                     class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an
    1.92                     object of type <code>Function</code>, with a new <a href=
    1.93 @@ -461,7 +461,7 @@
    1.94              <li>Let <var>services</var> be the array of one or more <a href=
    1.95              "#networkservice"><code>NetworkService</code></a> objects for which the user granted permission.
    1.96              </li>
    1.97 -            <li>For each Object <var>service</var> in <var>services</var>, run the following substeps:
    1.98 +            <li>For each Object <var>service</var> in <var>services</var>, run the following sub-steps:
    1.99                <ol class="rule">
   1.100                  <li>Add the <var>service</var>'s <code>url</code> parameter to the <a>entry script origin's
   1.101                    <abbr title="Uniform Resource Locator">URL</abbr> whitelist</a>.
   1.102 @@ -483,7 +483,7 @@
   1.103              <li>Add the set of <var>services</var> to the <a>list of authorized service records</a> internally against
   1.104              the newly created <var>services manager</var> object.
   1.105              </li>
   1.106 -            <li>The <a>user agent</a> <em class="ct">MUST</em> <a href=
   1.107 +            <li>The <a>user agent</a> MUST <a href=
   1.108              "http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task"
   1.109                    class="externalDFN">queue a task</a> to invoke <var>successCallback</var> with <var>services
   1.110                    manager</var> as its argument.
   1.111 @@ -499,7 +499,7 @@
   1.112            </p>
   1.113            <p>
   1.114              When a <a href="#networkservice"><code>NetworkService</code></a> object is provided to a Web page, the
   1.115 -            <a>user agent</a> <em class="ct">MUST</em> add the <code>url</code> property to the <dfn>entry script
   1.116 +            <a>user agent</a> MUST add the <code>url</code> property to the <dfn>entry script
   1.117              origin's URL whitelist</dfn>. This list enables the Web page to override and initiate cross-site resource
   1.118              requests towards these URLs, and any sub-resources of these URLs, within the current <a href=
   1.119              "http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script"
   1.120 @@ -634,13 +634,13 @@
   1.121          </dl>
   1.122          <div>
   1.123            <p>
   1.124 -            The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute <em class="ct">MUST</em>
   1.125 +            The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute MUST
   1.126              return the number of services represented in the object's corresponding <a>list of authorized service
   1.127              records</a> at the time of getting.
   1.128            </p>
   1.129            <p>
   1.130              The <dfn id="dom-networkservices-servicesavailable"><code>servicesAvailable</code></dfn> attribute
   1.131 -            <em class="ct">MUST</em> return the number of services in the <a>list of available service records</a>
   1.132 +            MUST return the number of services in the <a>list of available service records</a>
   1.133              whose <code>type</code> attribute matches any of the <a>valid service type</a> tokens that was initially
   1.134              used to create the current <a href="#networkservices"><code>NetworkServices</code></a> object.
   1.135            </p>
   1.136 @@ -696,7 +696,7 @@
   1.137            "http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#determine-the-value-of-an-indexed-property"
   1.138               class="externalDFN">determine the value of an indexed property</a> for a given index <var>index</var> in a
   1.139               <a href="#networkservices"><code>NetworkServices</code></a> object's <a>list of authorized service
   1.140 -             records</a>, the user agent <em class="ct">MUST</em> return the <a href=
   1.141 +             records</a>, the user agent MUST return the <a href=
   1.142               "#networkservice"><code>NetworkService</code></a> object that represents the <var>index</var>th service in
   1.143               the <a>list of authorized service records</a>.
   1.144          </p>
   1.145 @@ -706,7 +706,7 @@
   1.146            <a>list of authorized service records</a> represented by the respective object whose <a href=
   1.147            "#dom-networkservice-id"><code>id</code></a> attribute is equal to the value of the <var>id</var> argument.
   1.148            When no services in the <a>list of authorized service records</a> match the given argument, the method
   1.149 -          <em class="ct">MUST</em> return null.
   1.150 +          MUST return null.
   1.151          </p>
   1.152          <p>
   1.153            Services available within the local network can connect and disconnect at different times during the
   1.154 @@ -848,7 +848,7 @@
   1.155          </dl>
   1.156          <p>
   1.157            The <dfn id="dom-networkservice-id"><code>id</code></dfn> attribute is a unique identifier for the service.
   1.158 -          The same service provided at different times or on different objects <em class="ct">MUST</em> have the same
   1.159 +          The same service provided at different times or on different objects MUST have the same
   1.160            <a href="#dom-networkservice-id"><code>id</code></a> value.
   1.161          </p>
   1.162          <p>
   1.163 @@ -894,7 +894,7 @@
   1.164            reporting itself as being either <var>online</var>, and therefore accessible on the local network, in which
   1.165            case this attribute will return <code>true</code> or, <var>offline</var>, and therefore not accessible on the
   1.166            local network, either temporarily or permanently, in which case this attribute will return
   1.167 -          <code>false</code>. This attribute <em class="ct">MUST</em> default to <code>true</code>.
   1.168 +          <code>false</code>. This attribute MUST default to <code>true</code>.
   1.169          </p>
   1.170        </section>
   1.171        <section>
   1.172 @@ -955,11 +955,11 @@
   1.173          Service Discovery
   1.174        </h2>
   1.175        <p>
   1.176 -        A <a>user agent</a> conforming to this specification <em class="ct">MAY</em> implement <acronym title=
   1.177 +        A <a>user agent</a> conforming to this specification MAY implement <acronym title=
   1.178          "Simple Service Discovery Protocol">SSDP</acronym> [[!UPNP-DEVICEARCH11]] and Zeroconf [[!DNS-SD]] + [[!MDNS]]
   1.179          service discovery mechanisms to enable Web pages to request and connect with HTTP services running on networked
   1.180          devices, discovered via either mechanism, through this API. When a <a>user agent</a> implements either of these
   1.181 -        service discovery mechanisms, then it <em class="ct">MUST</em> conform to the corresponding algorithms provided
   1.182 +        service discovery mechanisms, then it MUST conform to the corresponding algorithms provided
   1.183          in this section of the specification.
   1.184        </p>
   1.185        <p>
   1.186 @@ -968,7 +968,7 @@
   1.187          resulting <a href="#networkservice"><code>NetworkService</code></a> objects.
   1.188        </p>
   1.189        <p>
   1.190 -        It is expected that user agents will perform these service discovery mechansisms asynchronously and
   1.191 +        It is expected that user agents will perform these service discovery mechanisms asynchronously and
   1.192          periodically update the <a>list of networked devices</a> as required. The timing of any service discovery
   1.193          mechanisms is an implementation detail left to the discretion of the implementer (e.g. once on user agent
   1.194          start-up, every X seconds during user agent execution or on invocation of this API from a Web page).
   1.195 @@ -1098,7 +1098,7 @@
   1.196          </li>
   1.197        </ol>
   1.198        <p>
   1.199 -        User agents <em class="ct">SHOULD</em> expire a service record from the <a>list of available service
   1.200 +        User agents SHOULD expire a service record from the <a>list of available service
   1.201          records</a> when its <code>expiryTimestamp</code> attribute exceeds the current UTC timestamp. When this
   1.202          condition is met the <a>user agent</a> SHOULD run the rule for <a>removing an available service</a>, passing in
   1.203          the expired service record's <code>id</code> attribute as the only argument.
   1.204 @@ -1111,7 +1111,7 @@
   1.205          <p>
   1.206            For each DNS response received from a user-agent-initiated Multicast DNS Browse for <abbr title=
   1.207            "DNS Pointer Record">PTR</abbr> records with the name <code>_services._dns-sd._udp</code> on the resolved
   1.208 -          recommended automatic browsing domain [[!MDNS]], the <a>user agent</a> <em class="ct">MUST</em> run the
   1.209 +          recommended automatic browsing domain [[!MDNS]], the <a>user agent</a> MUST run the
   1.210            following steps:
   1.211          </p>
   1.212          <ol class="rule">
   1.213 @@ -1158,12 +1158,12 @@
   1.214            Simple Service Discovery Protocol (<abbr title="Simple Service Discovery Protocol">SSDP</abbr>)
   1.215          </h5>
   1.216          <p>
   1.217 -          A user agent that implements UPnP service discovery <em class="ct">MUST</em> issue an <dfn>advertisement for
   1.218 +          A user agent that implements UPnP service discovery MUST issue an <dfn>advertisement for
   1.219            UPnP root devices</dfn> against the user's current local network according to the full normative text and
   1.220            timing provided in 'Section 1.3.2: Search request with M-SEARCH' detailed in [[!UPNP-DEVICEARCH11]].
   1.221          </p>
   1.222          <p>
   1.223 -          The user agent <em class="ct">MUST</em> issue all <a title=
   1.224 +          The user agent MUST issue all <a title=
   1.225            "advertisement for UPnP root devices">advertisements for UPnP root devices</a> with a HTTP request line equal
   1.226            to <code>M-SEARCH * HTTP/1.1</code>, with a HOST header equal to the reserved multicast address and port of
   1.227            <code>239.255.255.250:1900</code>, a MAN header equal to <code>ssdp:discover</code>, an ST header equal to
   1.228 @@ -1171,24 +1171,24 @@
   1.229            response wait time</dfn> value between <code>1</code> and <code>5</code> seconds.
   1.230          </p>
   1.231          <p>
   1.232 -          The user agent <em class="ct">MUST</em> listen for incoming requests and process any incoming responses to
   1.233 +          The user agent MUST listen for incoming requests and process any incoming responses to
   1.234            any <a>advertisement for UPnP root devices</a> on the <dfn>standard UPnP address and port</dfn>, on all
   1.235            current local network interface addresses with the port <code>1900</code>, according to the rules defined in
   1.236            this section.
   1.237          </p>
   1.238          <p>
   1.239            For each <dfn>HTTP Response</dfn> following an initial <a>advertisement for UPnP root devices</a> sent on a
   1.240 -          <a>standard UPnP address and port</a> the user agent <em class="ct">MUST</em> run the following steps:
   1.241 +          <a>standard UPnP address and port</a> the user agent MUST run the following steps:
   1.242          </p>
   1.243          <ol class="rule">
   1.244            <li>If the <a>HTTP Response</a> is not a HTTP 200 OK response then this response is invalid and the user
   1.245 -          agent <em class="ct">MUST</em> discard this response, abort any remaining steps and return. The user agent
   1.246 -          <em class="ct">MAY</em> issue a new <a>advertisement for UPnP root devices</a> as a result of this error
   1.247 +          agent MUST discard this response, abort any remaining steps and return. The user agent
   1.248 +          MAY issue a new <a>advertisement for UPnP root devices</a> as a result of this error
   1.249            occurring.
   1.250            </li>
   1.251            <li>If the <a>maximum UPnP advertisement response wait time</a> has been exceeded since the initial
   1.252            <a>advertisement for UPnP root devices</a> was sent then the <a>HTTP Response</a> is invalid and the user
   1.253 -          agent <em class="ct">MUST</em> discard this response, abort any remaining steps and return.
   1.254 +          agent MUST discard this response, abort any remaining steps and return.
   1.255            </li>
   1.256            <li>Let <var>ssdp device</var> be an Object with a property for each HTTP header received in the <a>HTTP
   1.257            Response</a>, with each key being the name of a HTTP response header and each value being that HTTP response
   1.258 @@ -1197,10 +1197,10 @@
   1.259            <li>If <var>ssdp device</var> does not contain at least one <var>CACHE-CONTROL</var> entry, at least one
   1.260            <var>USN</var> entry, at least one <var>ST</var> entry and at least one <var>LOCATION</var> entry or the
   1.261            value of its <var>ST</var> entry is not <code>upnp:rootdevice</code>, then the <a>HTTP Response</a> is
   1.262 -          invalid and the <a>user agent</a> <em class="ct">MUST</em> discard this response, abort any remaining steps
   1.263 +          invalid and the <a>user agent</a> MUST discard this response, abort any remaining steps
   1.264            and return.
   1.265            </li>
   1.266 -          <li>The user agent <em class="ct">MUST</em> run the rule for <a>obtaining a UPnP Device Description File</a>
   1.267 +          <li>The user agent MUST run the rule for <a>obtaining a UPnP Device Description File</a>
   1.268            passing in the first occurrence of <var>LOCATION</var> from <var>ssdp device</var> as the <var>device
   1.269            descriptor URL</var> argument and the first occurrence of <var>USN</var> from <var>ssdp device</var> as the
   1.270            <var>device identifier</var> argument and the first occurrence of <var>CACHE-CONTROL</var> from <var>ssdp
   1.271 @@ -1209,11 +1209,11 @@
   1.272          </ol>
   1.273          <p>
   1.274            For each <dfn>HTTP Request</dfn> received on a <a>standard UPnP address and port</a> the user agent
   1.275 -          <em class="ct">MUST</em> run the following steps:
   1.276 +          MUST run the following steps:
   1.277          </p>
   1.278          <ol class="rule">
   1.279            <li>If the <a>HTTP Request</a> is not a HTTP NOTIFY request then it is not a valid UPnP Request and the user
   1.280 -          agent <em class="ct">MUST</em> return a HTTP 200 OK response, discard this request, abort any remaining steps
   1.281 +          agent MUST return a HTTP 200 OK response, discard this request, abort any remaining steps
   1.282            and return.
   1.283            </li>
   1.284            <li>Let <var>ssdp device</var> be an Object with a property for each HTTP header received in the <a>HTTP
   1.285 @@ -1222,18 +1222,18 @@
   1.286            <li>If <var>ssdp device</var> does not contain at least one <var>CACHE-CONTROL</var> entry, at least one
   1.287            <var>USN</var> entry, at least one <var>NT</var> entry, at least one <var>NTS</var> entry and at least one
   1.288            <var>LOCATION</var> entry or the value of its <var>NT</var> entry is not <code>upnp:rootdevice</code>, then
   1.289 -          the <a>HTTP Request</a> is a malformed UPnP Request and the <a>user agent</a> <em class="ct">MUST</em> return
   1.290 +          the <a>HTTP Request</a> is a malformed UPnP Request and the <a>user agent</a> MUST return
   1.291            a 400 Bad Request response, discard this request, abort any remaining steps and return.
   1.292            </li>
   1.293            <li>If <var>ssdp device</var>'s <var>NTS</var> entry is equal to <code>ssdp:alive</code> or
   1.294 -          <code>ssdp:update</code> then the user agent <em class="ct">MUST</em> run the rule for <a>obtaining a UPnP
   1.295 +          <code>ssdp:update</code> then the user agent MUST run the rule for <a>obtaining a UPnP
   1.296            Device Description File</a> passing in the first occurrence of <var>LOCATION</var> from <var>ssdp
   1.297            device</var> as the <var>device descriptor URL</var> argument and the first occurrence of <var>USN</var> from
   1.298            <var>ssdp device</var> as the <var>device identifier</var> argument and the first occurrence of
   1.299            <var>CACHE-CONTROL</var> from <var>ssdp device</var> as the <var>device expiry</var>.<br>
   1.300              <br>
   1.301              Otherwise, if <var>ssdp device</var>'s <var>NTS</var> entry is equal to <code>ssdp:byebye</code> then the
   1.302 -            user agent <em class="ct">MUST</em> run the rule for <a>removing all services from a registered UPnP
   1.303 +            user agent MUST run the rule for <a>removing all services from a registered UPnP
   1.304              Device</a> passing in the first occurrence of <var>USN</var> from <var>ssdp device</var> as the <var>device
   1.305              identifier</var> argument.
   1.306            </li>
   1.307 @@ -1242,7 +1242,7 @@
   1.308            The rule for <dfn>obtaining a UPnP Device Description File</dfn> is the process of obtaining the contents of
   1.309            a standard UPnP Device Description [[!UPNP-DEVICEARCH11]] from a URL-based resource. This rule takes three
   1.310            arguments - <var>device descriptor URL</var>, <var>device identifier</var> and <var>device expiry</var> - and
   1.311 -          when called the user agent <em class="ct">MUST</em> run the following steps:
   1.312 +          when called the user agent MUST run the following steps:
   1.313          </p>
   1.314          <ol class="rule">
   1.315            <li>Let <var>device descriptor file</var> contain the contents of the file located at the URL provided in
   1.316 @@ -1251,14 +1251,14 @@
   1.317            </li>
   1.318            <li>If the value provided in <var>device descriptor URL</var> cannot be resolved as a reachable URL on the
   1.319            current network or the <var>root device descriptor file</var> remains empty then it is invalid and the
   1.320 -          <a>user agent</a> <em class="ct">MUST</em> abort any remaining steps and return.
   1.321 +          <a>user agent</a> MUST abort any remaining steps and return.
   1.322            </li>
   1.323            <li>Run the rule for <a>processing a UPnP Device Description File</a>, passing in the current <var>device
   1.324            descriptor file</var>, <var>device identifier</var> and <var>device expiry</var> arguments.
   1.325            </li>
   1.326            <li>If the current <var>device descriptor file</var> contains a <code>&lt;deviceList&gt;</code> element then
   1.327            for each <code>&lt;device&gt;</code> element within <code>&lt;deviceList&gt;</code> - herein known as an
   1.328 -          <var>embedded device descriptor file</var> - the user agent <em class="ct">MUST</em> run the rule for
   1.329 +          <var>embedded device descriptor file</var> - the user agent MUST run the rule for
   1.330            <a>processing a UPnP Device Description File</a>, passing in the current <var>embedded device descriptor
   1.331            file</var> as the <var>device descriptor file</var> argument, along with the common <var>device
   1.332            identifier</var> and <var>device expiry</var> arguments.
   1.333 @@ -1272,7 +1272,7 @@
   1.334          <p>
   1.335            The rule for <a>processing a UPnP Device Description File</a> takes three arguments - <var>device descriptor
   1.336            file</var>, <var>device identifier</var> and <var>device expiry</var> - and when called the user agent
   1.337 -          <em class="ct">MUST</em> run the following steps:
   1.338 +          MUST run the following steps:
   1.339          </p>
   1.340          <ol class="rule">
   1.341            <li>Let <var>advertised services</var> be a list of all advertised services obtained from the <var>device
   1.342 @@ -1348,7 +1348,7 @@
   1.343          </p>
   1.344          <ol class="rule">
   1.345            <li>If <var>network service record</var>'s <code>eventsUrl</code> property is empty then the <a>user
   1.346 -          agent</a> <em class="ct">MUST</em> abort these steps.
   1.347 +          agent</a> MUST abort these steps.
   1.348            </li>
   1.349            <li>Let <var>callback URL</var> be the value of creating a new <a>user-agent generated callback url</a>.
   1.350            </li>
   1.351 @@ -1359,7 +1359,7 @@
   1.352            <code>eventsUrl</code> property.
   1.353            </li>
   1.354            <li>If a non-200 OK response is received from the HTTP SUBSCRIBE request then the <a>user agent</a>
   1.355 -            <em class="ct">MUST</em> abort these steps.
   1.356 +            MUST abort these steps.
   1.357            </li>
   1.358            <li>On receiving a valid 200 OK response, run the following steps:
   1.359              <ol class="rule">
   1.360 @@ -1369,7 +1369,7 @@
   1.361                <li>Let <var>timeout date</var> equal the sum of the current UTC date value plus the integer value of the
   1.362                first included <em>TIMEOUT</em> header (minus the leading string of <code>Second-</code>), if it exists.
   1.363                </li>
   1.364 -              <li>Run the following steps aynchronously and continue to the step labeled <em>listen</em> below.
   1.365 +              <li>Run the following steps asynchronously and continue to the step labeled <em>listen</em> below.
   1.366                </li>
   1.367                <li>
   1.368                  <em>Refresh Subscription</em>: Run the following steps at a set interval (X) within the <a>user
   1.369 @@ -1396,7 +1396,7 @@
   1.370                  agent</a> is to run the following steps:
   1.371                  <ol class="rule">
   1.372                    <li>Let <var>content clone</var> be the result of obtaining the message body of the HTTP NOTIFY
   1.373 -                  request. If <var>content clone</var> is empty, then the <a>user agent</a> <em class="ct">MUST</em>
   1.374 +                  request. If <var>content clone</var> is empty, then the <a>user agent</a> MUST
   1.375                    abort these steps.
   1.376                    </li>
   1.377                    <li>Let <var>notification event</var> be a new simple event that uses the <a href=
   1.378 @@ -1421,7 +1421,7 @@
   1.379          <p>
   1.380            A <a>user agent</a> can <dfn>terminate an existing UPnP Events Subscription</dfn> at any time for any
   1.381            <var>active service</var> in the <a>list of authorized service records</a> by sending an HTTP UNSUBSCRIBE
   1.382 -          request - as defined in 'Section 4.1.4: Canceling a subscription with UNSUBSCRIBE' in [[!UPNP-DEVICEARCH11]]
   1.383 +          request - as defined in 'Section 4.1.4: Cancelling a subscription with UNSUBSCRIBE' in [[!UPNP-DEVICEARCH11]]
   1.384            - with a HOST header set to that <var>active service</var>'s <code>eventsUrl</code> property and a SID header
   1.385            set to the <var>callback ID</var> obtained when the initial <a>setup a UPnP Events Subscription</a> action
   1.386            occurred.
   1.387 @@ -1435,12 +1435,12 @@
   1.388            <p>
   1.389              When the <a>user agent</a> detects that the user has dropped from their connected network then, for each
   1.390              <var>existing service record</var> in the <a>list of available service records</a>, the user agent
   1.391 -            <em class="ct">MUST</em> run the general rule for <a>removing an available service</a> passing in each
   1.392 +            MUST run the general rule for <a>removing an available service</a> passing in each
   1.393              <var>existing service record</var>'s <code>id</code> property as the only argument for each call.
   1.394            </p>
   1.395            <p>
   1.396              When the <a>user agent</a> detects that the user has connected to a new network or reconnected to an
   1.397 -            existing network, then it <em class="ct">SHOULD</em> restart its discovery mechanisms as defined in the
   1.398 +            existing network, then it SHOULD restart its discovery mechanisms as defined in the
   1.399              <a href="#service-discovery">Service Discovery</a> section of this specification, maintaining the existing
   1.400              <a>list of authorized service records</a> currently in use.
   1.401            </p>
   1.402 @@ -1585,7 +1585,7 @@
   1.403              <li>Example: A Web page advertises that it is capable of interacting with and controlling multiple types of
   1.404              Home Media Server. The user can select their Home Media Server type from a drop-down list or known Media
   1.405              Servers, at which point the Web page sends a request to the user agent to connect with the associated
   1.406 -            service type (and, optionally, the associated event type) of the Home Media Server. The communiciation
   1.407 +            service type (and, optionally, the associated event type) of the Home Media Server. The communication
   1.408              protocols supported by Home Media Servers typically vary between UPnP, JSON-RPC, Protocol Buffers or other
   1.409              messaging formats depending on the Home Media Server requested. The Web page is able to communicate with
   1.410              the user-selected Home Media Server in the messaging format supported by that Device, which, in this
   1.411 @@ -1672,7 +1672,7 @@
   1.412  // Send a service message to get albums list (and process the service response)
   1.413  
   1.414     var svcXhr = new XMLHttpRequest();
   1.415 -   svcXhr.open("POST", services[0].url + "/getAlbums"); // services[0].url and its subresources have been
   1.416 +   svcXhr.open("POST", services[0].url + "/getAlbums"); // services[0].url and its sub-resources have been
   1.417                                                          // whitelisted for cross-site XHR use in this
   1.418                                                          // current browsing context.
   1.419  
   1.420 @@ -1783,7 +1783,7 @@
   1.421  
   1.422      var svcXhr = new XMLHttpRequest();
   1.423      svcXhr.open("POST", services[0].url); // services[0].url and its
   1.424 -                                          // subresources have been whitelisted for
   1.425 +                                          // sub-resources have been whitelisted for
   1.426                                            // cross-site XHR use in this current
   1.427                                            // browsing context.
   1.428