Skip to main content

Cornell University

Web Accessibility Reviews

HTML page lang and xml:lang attributes have matching values

Applicability

This rule applies to any document element if it is an html element for which all the following are true:

  • is in a [top-level browsing context][]; and
  • has a node document with a [content type][] of text/html; and
  • has a lang attribute with a [known primary language tag][]; and
  • has a non-empty xml:lang attribute.

Expectation

For each test target, the values of the [primary language subtags][], if any exist, for the lang and xml:lang attributes are the same.

Assumptions

  • The language of the page can be set by other methods than the lang attribute, for example using HTTP headers or the meta element. These methods are not supported by all assistive technologies. This rule assumes that these other methods are insufficient to satisfying Success Criterion 3.1.1: Language of Page.

  • This rule assumes that user agents and assistive technologies can programmatically determine [known primary language tags][known primary language tag] even if these do not conform to the [RFC 5646][] syntax.

  • This rule assumes that only [known primary language tags][known primary language tag] are enough to satisfy [Success Criterion 3.1.1 Language of Page][sc311]; this notably excludes [grandfathered tags][] and [ISO 639.2][] three-letters codes, both having poor support in assistive technologies.

  • The rule assumes that having lang and xml:lang attributes with matching [primary language subtags][] but non-matching language tags overall, will not cause accessibility issues. This is not necessarily the case for all languages. One notable case is the language tags for Cantonese (zh-yue) and Mandarin (zh-cmn) where the [primary language subtags][] match, but the [extended language subtags][] don't. Such a case would not fail this rule, but could lead to accessibility issues.

Accessibility Support

Since most assistive technologies will consistently use lang over xml:lang when both are used, violation of this rule may not necessarily be a violation of WCAG 2. Only when there are inconsistencies between assistive technologies as to which attribute is used to determine the language does this lead to a violation of SC 3.1.1.

Background

This rule is only applicable to non-embedded HTML pages. HTML pages embedded into other documents, such as through iframe or object elements are not applicable because they are not web pages according to the definition in WCAG.

Bibliography

Test Cases

Passed

Passed Example 1

This html element has identical [primary language subtags][] for its lang and xml:lang attributes.

<html lang="EN" xml:lang="en"></html>

Passed Example 2

This html element has identical [primary language subtags][] for its lang and xml:lang attributes. The [extended language subtags][] also match.

<html lang="en-GB" xml:lang="en-GB"></html>

Passed Example 3

This html element has identical [primary language subtags][] for its lang and xml:lang attributes. The [extended language subtags][] do not match, but this is not required by this rule.

<html lang="en-GB" xml:lang="en-US"></html>

Failed

Failed Example 1

This html element has different [primary language subtags][] for its lang and xml:lang attributes.

<html lang="fr" xml:lang="en"></html>

Failed Example 2

This html element has different [primary language subtags][] for its lang and xml:lang attributes. The [extended language subtags][] do match, but this rules only focus on the [primary language subtags][].

<html lang="fr-CA" xml:lang="en-CA"></html>

Inapplicable

Inapplicable Example 1

This rule does not apply to svg elements.

<svg xmlns="http://www.w3.org/2000/svg" lang="en" xml:lang="en"></svg>

Inapplicable Example 2

This rule does not apply to svg elements, even inside an html element.

<html>
	<body>
		<svg lang="en"></svg>
	</body>
</html>

Inapplicable Example 3

This rule does not apply to math elements.

<math xml:lang="en"></math>

Inapplicable Example 4

This rule only applies to documents with a [content type][] of text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="en" xml:lang="en"></html>

Inapplicable Example 5

This rule does not apply to html elements without an xml:lang attribute.

<html lang="en"></html>

Inapplicable Example 6

This rule applies neither to html elements without an xml:lang attribute, nor to html in [nested browsing context][]

<html lang="en">
	<iframe srcdoc="<html lang='en' xml:lang='en'></html>" />
</html>

Inapplicable Example 7

This rule does not apply to html elements with an empty ("") xml:lang attribute.

<html lang="fr" xml:lang=""></html>

AI Prompt