Они не повторяются. Пространство имен XML для XHTML и объявление doctype не совпадают. Также нет атрибутов xml:lang
и lang
. Спецификация XHTML 1.0 требует, чтобы все они были включены.
Список атрибутов для элемента <html>
, как описано в XHTML 1.0 Strict DTD , выглядит следующим образом:
<!ATTLIST html
%i18n;
id ID #IMPLIED
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
>
(где %i18n
- внутренняя сущность, представляющая атрибуты интернационализации xml:lang
, lang
и dir
, см. Ниже)
Обратите внимание на четвертую строку. В нем говорится, что xmlns
является атрибутом данного значения URI и фиксирован в том же URL-адресе пространства имен. Это означает, что если вы опустите атрибут или предоставите ему другое пространство имен, ваш документ будет недопустимым строгим XHTML.
Сущность %i18n
соответствует этим атрибутам:
<!-- internationalization attributes
lang language code (backwards compatible)
xml:lang language code (as per XML 1.0 spec)
dir direction for weak/neutral text
-->
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"
>
Атрибут lang
предназначен для обратной совместимости (т. Е. HTML ≤ 4.01), а xml:lang
описывается XML 1.0 (отсюда видно пространство имен xml
). Я не слишком уверен в точной причине, почему xml:lang
должен предшествовать lang
, но это имеет смысл, учитывая, что XHTML - это просто HTML, «переформатированный» в синтаксис XML (так сказать).
Атрибут dir
по умолчанию равен ltr
(текст слева направо), если не указан, следовательно, это не обязательный атрибут.