Валидация требует, чтобы я ее установил, но почему? Мне нравится думать, что код в моем документе xhtml что-то делает.
Что делает атрибут xmlns?
Ответ 1
Из W3Schools:
Атрибут xmlns указывает пространство имен xml для документа.
Это в основном помогает избежать конфликтов пространства имен между различными XML-документами, если, например, разработчик микширует XML-документы из разных xml-приложений.
Пример этого (также с веб-сайта W3):
XML-данные для определения таблицы html:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
XML-данные для определения информации о кофейном столике
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Здесь есть два элемента таблицы, которые могут вызвать конфликт. Чтобы исправить это, вы можете добавить пространство имен, чтобы указать, какая часть информации определяет таблицу html и которая содержит информацию о журнальном столике:
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
Ответ 2
Представьте, что мы оба определили схемы xlm, которые включают тег foobar. Как бы вы различали если оба используются в одном документе? Ответ - мы помещаем их в разные пространства имен. И то, что xmlns для Он похож на java-пакеты.
Ответ 3
Когда XHTML-документ служит как text/html, как обычно, атрибут xmlns
ничего не делает.
Когда документ XHTML обслуживается типом содержимого XML, атрибут определяет пространство имен по умолчанию для элементов. В этом случае практическое воздействие заключается в том, что если атрибут опущен, ни один элемент не имеет своего значения HTML - все элементы принимаются как чистый XML, а это означает, что они не имеют особого поведения и не имеют форматирования по умолчанию, и этот документ является бесполезным, он не воспринимается как HTML вообще.