Что делает атрибут xmlns?

Валидация требует, чтобы я ее установил, но почему? Мне нравится думать, что код в моем документе xhtml что-то делает.

Ответ 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 вообще.