- From: Ian Hickson <ian@hixie.ch>
- Date: Fri, 9 Apr 2010 00:00:51 +0000 (UTC)
- To: public-html@w3.org
ISSUE-88 ======== SUMMARY People are confused by the Content-Language pragma, so it should be made non-conforming. RATIONALE The continued existence of the Content-Language pragma encourages standards advocates and authors to consider it potentially useful. In practice, it is not useful for its original purpose (having servers update their HTTP headers), since servers ignore it and clients don't. It is not useful for the purpose that people previously assumed it had, namely declaring the target audience of the document, because clients treat it as the language of the document, treat multiple values in inconsistent ways, and do not treat it as anything to do with the audience. Finally, for the only purpose that it actually has, it is redundant with simpler and more reliably implemented features. Thus, this change proposal suggests making the feature entirely non-conforming. The specification already makes it trigger a warning in validators, but this doesn't go far enough, as it will just lead to people arguing that's actually useful when it isn't. DETAILS Index: source =================================================================== --- source (revision 4987) +++ source (working copy) @@ -13097,57 +13097,56 @@ gave me some of the songs they wrote. I </div> <p>Metadata names whose values are to be <span title="URL">URLs</span> must not be proposed or accepted. Links must be represented using the <code>link</code> element, not the <code>meta</code> element.</p> <h5>Pragma directives</h5> <p>When the <dfn title="attr-meta-http-equiv"><code>http-equiv</code></dfn> attribute is specified on a <code>meta</code> element, the element is a pragma directive.</p> <p>The <code title="attr-meta-http-equiv">http-equiv</code> attribute is an <span>enumerated attribute</span>. The following table lists the keywords defined for this attribute. The states given in the first cell of the rows with keywords give the states to - which those keywords map. <!--<span class="impl">Some of the + which those keywords map. <span class="impl">Some of the keywords are non-conforming, as noted in the last - column.</span>--></p> + column.</span></p> <!-- things that are neither conforming nor do anything are commented out --> -<!-- if you add something non-conforming, uncomment out the last sentence above --> <table> <thead> <tr> <th>State <th>Keywords <th>Notes <tbody> - <tr> + <tr class="impl"> <td><span title="attr-meta-http-equiv-content-language">Content Language</span> <td><code title="">content-language</code> - <td>Conformance checkers will include a warning + <td>Non-conforming <tr> <td><span title="attr-meta-http-equiv-content-type">Encoding declaration</span> <td><code title="">content-type</code> <td> <!-- <tr class="impl"> <td><span title="attr-meta-http-equiv-content-script-type">Content-Script-Type</span> <td><code title="">Content-Script-Type</code> <td>Non-conforming <tr class="impl"> <td><span title="attr-meta-http-equiv-content-style-type">Content-Style-Type</span> <td><code title="">Content-Style-Type</code> <td>Non-conforming --> <tr> <td><span title="attr-meta-http-equiv-default-style">Default style</span> <td><code title="">default-style</code> <td> <tr> <td><span title="attr-meta-http-equiv-refresh">Refresh</span> @@ -13191,107 +13190,95 @@ Here's some more data, this time from Ph [...] http://philip.html5.org/data/meta-http-equiv.txt These numbers are low; further study is required to establish what people expect to have work and what is necessary. --> <div class="impl"> <p>When a <code>meta</code> element is <span title="insert an element into a document">inserted into the document</span>, if its <code title="attr-meta-http-equiv">http-equiv</code> attribute is present and represents one of the above states, then the user agent must run the algorithm appropriate for that state, as described in the following list:</p> </div> <dl> - <dt><dfn title="attr-meta-http-equiv-content-language">Content language state</dfn> (<code title="">http-equiv="content-language"</code>) + <dt class="impl"><dfn title="attr-meta-http-equiv-content-language">Content language state</dfn> (<code title="">http-equiv="content-language"</code>) - <dd> + <dd class="impl"> + + <p class="note">This feature is non-conforming. Authors are + encouraged to use the <code title="attr-lang">lang</code> + attribute instead.</p> <p>This pragma sets the <dfn>pragma-set default language</dfn>. Until the pragma is successfully processed, there is no <span>pragma-set default language</span>.</p> - <p class="note">Conformance checkers will include a warning if - this pragma is used. Authors are encouraged to use the <code - title="attr-lang">lang</code> attribute instead.</p> - - <div class="impl"> - <ol> <li><p>If another <code>meta</code> element with an <code title="attr-meta-http-equiv">http-equiv</code> attribute in the <span title="attr-meta-http-equiv-content-language">Content Language state</span> has already been successfully processed (i.e. when it was inserted the user agent processed it and reached the last step of this list of steps), then abort these steps.</p></li> <li><p>If the <code>meta</code> element has no <code title="attr-meta-content">content</code> attribute, or if that attribute's value is the empty string, then abort these steps.</p></li> <li><p>If the element's <code title="attr-meta-content">content</code> attribute contains a U+002C COMMA character (,) then abort these steps.</p></li><!-- if you remove this, un-comment-out the corresponding bits in the step below. --> <li><p>Let <var title="">input</var> be the value of the element's <code title="attr-meta-content">content</code> attribute.</p></li> <li><p>Let <var title="">position</var> point at the first character of <var title="">input</var>.</p></li> <li><p><span>Skip whitespace</span>.</p></li> <li><p><span title="collect a sequence of characters">Collect a sequence of characters</span> that are not<!--neither--> <span title="space character">space characters</span><!-- nor a U+002C COMMA character (,)-->.</p></li> <li><p>Let the <span>pragma-set default language</span> be the string that resulted from the previous step.</p></li> </ol> - </div> - - <p>For <code>meta</code> elements with an <code - title="attr-meta-http-equiv">http-equiv</code> attribute in the - <span title="attr-meta-http-equiv-content-language">Content - Language state</span>, the <code - title="attr-meta-content">content</code> attribute must have a - value consisting of a valid BCP 47 language code. <a - href="#refsBCP47">[BCP47]</a></p> - <p class="note">This pragma is not exactly equivalent to the HTTP - <code>Content-Language</code> header, for instance it only - supports one language. <a href="#refsHTTP">[HTTP]</a></p> + <code>Content-Language</code> header. <a + href="#refsHTTP">[HTTP]</a></p> </dd> <dt><dfn title="attr-meta-http-equiv-content-type">Encoding declaration state</dfn> (<code title="">http-equiv="content-type"</code>) <dd> <p>The <span title="attr-meta-http-equiv-content-type">Encoding declaration state</span> is just an alternative form of setting the <code title="meta-charset">charset</code> attribute: it is a <span>character encoding declaration</span>. <span class="impl">This state's user agent requirements are all handled by the parsing section of the specification.</span></p> <p>For <code>meta</code> elements with an <code title="attr-meta-http-equiv">http-equiv</code> attribute in the <span title="attr-meta-http-equiv-content-type">Encoding declaration state</span>, the <code title="attr-meta-content">content</code> attribute must have a value that is an <span>ASCII case-insensitive</span> match for a @@ -96030,46 +96017,40 @@ time:empty { binding: <i title="">time</ <p>When the user actually <span title="obtain a physical form">obtains a physical form</span> (or a representation of a physical form) of a <code>Document</code>, the user agent is expected to create a new rendering of the <code>Document</code> for the print media.</p> </div> <h2 id="obsolete">Obsolete features</h2> <h3>Obsolete but conforming features</h3> <p>Features listed in this section will trigger warnings in conformance checkers.</p> - <p>Authors should not specify an <code - title="attr-meta-http-equiv">http-equiv</code> attribute in the - <span title="attr-meta-http-equiv-content-language">Content - Language</span> state on a <code>meta</code> element. The <code - title="attr-lang">lang</code> attribute should be used instead.</p> - <p>Authors should not specify a <code title="attr-img-border">border</code> attribute on an <code>img</code> element. If the attribute is present, its value must be the string "<code title="">0</code>". CSS should be used instead.</p> <p>Authors should not specify a <code title="attr-script-language">language</code> attribute on a <code>script</code> element. If the attribute is present, its value must be an <span>ASCII case-insensitive</span> match for the string "<code title="">JavaScript</code>" and either the <code title="attr-script-type">type</code> attribute must be omitted or its value must be an <span>ASCII case-insensitive</span> match for the string "<code title="">text/javascript</code>". The attribute should be entirely omitted instead (with the value "<code title="">JavaScript</code>", it has no effect), or replaced with use of the <code title="attr-script-type">type</code> attribute.</p> <p>Authors should not specify the <code title="attr-a-name">name</code> attribute on <code>a</code> @@ -96102,45 +96083,40 @@ time:empty { binding: <i title="">time</ <h4>Warnings for obsolete but conforming features</h4> <p>To ease the transition from HTML4 Transitional documents to the language defined in <em>this</em> specification, and to discourage certain features that are only allowed in very few circumstances, conformance checkers are required to warn the user when the following features are used in a document. These are generally old obsolete features that have no effect, and are allowed only to distinguish between likely mistakes (regular conformance errors) and mere vestigial markup or unusual and discouraged practices (these warnings).</p> <p>The following features must be categorized as described above:</p> <ul><!-- downplayed list --> <li><p>The presence of an <span>obsolete permitted DOCTYPE</span> in an <span title="HTML documents">HTML document</span>.</p></li> - <li><p>The presence of a <code>meta</code> element with an <code - title="attr-meta-http-equiv">http-equiv</code> attribute in the - <span title="attr-meta-http-equiv-content-language">Content - Language</span> state.</p></li> - <li><p>The presence of a <code title="attr-img-border">border</code> attribute on an <code>img</code> element if its value is the string "<code title="">0</code>".</p></li> <li><p>The presence of a <code title="attr-script-language">language</code> attribute on a <code>script</code> element if its value is an <span>ASCII case-insensitive</span> match for the string "<code title="">JavaScript</code>" and if there is no <code title="attr-script-type">type</code> attribute or there is and its value is an <span>ASCII case-insensitive</span> match for the string "<code title="">text/javascript</code>".</p></li> <li><p>The presence of a <code title="attr-a-name">name</code> attribute on an <code>a</code> element, if its value is not the empty string.</p></li> <li><p>The presence of a <code title="attr-table-summary">summary</code> attribute on a =================================================================== IMPACT POSITIVE EFFECTS * Removes any remaining confusion about the appropriateness of the use of the Content-Language pragma. * Saves authors time since it's one less thing to worry about. NEGATIVE EFFECTS * Will flag harmless uses of the pragma in legacy documents when they are updated. Data suggests this affects ~8% of pages [1], though ~5% of another sample were using the pragma incorrectly anyway [2]. CONFORMANCE CLASS CHANGES Authors and conformance checkers are affected. RISKS This might cause wasted time for a small percentage of authors who are currently using the pragma in a harmless fashion and want to update their pages in a way that validates to HTML5. REFERENCES [1] http://philip.html5.org/data/meta-http-equiv.txt [2] http://hsivonen.iki.fi/test/moz/analysis.txt -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Friday, 9 April 2010 00:01:23 UTC