lang 属性
3.2.3.3 lang と xml:lang 属性
lang 属性(名前空間に属さない)は、該当要素のコンテンツと、その要素のテキストを含んだ属性の主となる言語を指定するものです。その値は、BCP 47 の言語コードに準拠するか、もしくは空文字でなければいけません。空文字列をこの属性にセットすると、主言語は不明ということを表します。[BCP47]
XML 名前空間の lang 属性は、XML で定義されています。[XML]
これらの属性が要素から省略された場合、その要素の言語は、もし親要素があれば、その親要素の言語と同じになります。
名前空間に属さない lang 属性は、あらゆる HTML 要素で使うことができます。
XML 名前空間の lang 属性は、関連の仕様が認められているのであれば(具体的には、MathML や SVG では、それらの要素に XML 名前空間の lang 属性を指定することが認められています)、他の名前空間の要素と同様に、XML ドキュメントで HTML 要素に使うことができます。名前空間に属さない lang 属性とXML 名前空間の lang 属性の両方を同じ要素に指定する場合、それらの値は大文字と小文字を区別せずに比較したときに正確に同じでなければいけません。
ウェブ制作者はXML 名前空間の lang 属性を HTML ドキュメントで HTML 要素に使ってはいけません。XHTMLへの移行やXHTMLからの移行を簡単にするため、ウェブ制作者は HTML ドキュメントで HTML 要素に、プレフィックスがなく、文字通りのローカル名である "xml:lang" を持った名前空間に属さない属性を指定することができます。しかし、そのような属性は、名前空間に属さない lang 属性も指定される場合にのみ、指定することができます。そして、これらの属性の値はいずれも大文字と小文字を区別せずに比較したときに同じでなければいけません。
プレフィックスがなく、文字通りのローカル名である "xml:lang" を持った名前空間に属さない属性は、言語処理において影響を及ぼすことはありません。
ノードの言語を決定するために、ユーザーエージェントは、XML 名前空間の lang 属性がセットされている、または、HTML 要素であり、名前空間に属さない lang 属性がセットされている直近の祖先の要素(そのノードが要素なら、要素である自分自身も含みます)を見なければいけません。その属性は、そのノードの言語を指定します(その値は問いません)。
もし名前空間に属さない lang 属性とXML 名前空間の lang 属性の両方が要素にセットされているなら、ユーザーエージェントは、XML 名前空間の lang 属性を採用しなければいけません。そして、名前空間に属さない lang 属性は、その要素の言語を決定する目的においては、無視しなければいけません。
もし、root 要素も含め、いずれかの属性がセットされたノードが祖先にひとつもないけれども、プラグマ・セットのデフォルト言語がセットされているなら、それが該当のノードの言語になります。プラグマ・セットのデフォルト言語がセットされていない場合、上位プロトコル(HTTP など)から言語情報が得られるなら、それが最終のフォールバック言語として採用されなければいけません。言語情報が何も見つからず、上位プロトコルが多言語を報告する場合は、該当のノードの言語は不明となり、関連の言語タグは空文字列となります。
得られた値が認識可能な言語タグでなければ、それは、他のあらゆる言語と区別して、指定言語タグを持つ不明の言語として扱われなければいけません。言語タグを期待する他のサービスとやりとりする目的においては、ユーザーエージェントは不明な言語タグを変更せずにそのまま引き渡すべきです。
ゆえに、例えば、 lang="xyzzy" を持った要素は、セレクタ :lang(xyzzy) (例:CSSで)に一致するでしょうが、:lang(abcde)には一致しないでしょう。もちろん、どちらも妥当ではありません。同様に、ウェブ・ブラウザーとスクリーン・リーダーが要素の言語について連絡し合って協調するなら、ブラウザーはスクリーン・リーダーに、その言語は "xyzzy" だったと教えるでしょう。たとえ、それが妥当でないと分かっていたとしてもです。もしかしたら、スクリーン・リーダーは結局は実際にそのタグが表す言語をサポートしているかもしれないのです。
得られた値が空文字列なら、それは、そのノードの言語が明示的に不明という意味で解釈されなければいけません。
ユーザーエージェントは、要素の言語を使って、それに合わせた処理やレンダリングを決定することができます(例えば、フォントや発音の選択においてや、辞書選択のために使えます)。
3.2.3.4 xml:base 属性 (XML のみ)
xml:base 属性は、XML Base で定義されています。[XMLBASE]
xml:base 属性は、XML ドキュメントの要素で使うことができます。ウェブ制作者は HTML ドキュメントで xml:base 属性を使うことはできません。
※ 原文:http://www.w3.org/TR/2011/WD-html5-20110113/elements.html#the-lang-and-xml:lang-attributes