Где определяется атрибут xmlns?

Я знаю, что это правильный XML

<Data xmlns="http://w3.schools.com">
  <One>Data1</One>
</Data>

xmlns - это атрибут, и использование вышеупомянутого синтаксиса означает, что все узлы принадлежат пространству имен в двойных кавычках. Я не могу понять, где определяется атрибут xmlns?

Ответ 1

См. Пространства имен в XML 1.0 Рекомендация W3C для определения как атрибута xmlns, так и xmlns: приставка.

Резюме причин использования xmlns:

  • Используйте xmlns как атрибут для определения пространства имен XML, которое является стандарт именования, предназначенный для того, чтобы стороны могли самостоятельно определять словари имен элементов и атрибутов, избегая именования столкновения.
  • Используйте xmlns: в качестве префикса для определения пользовательского префикса, с помощью которого XML Значение пространства имен можно ссылаться сокращением.

Атрибут xmlns

Атрибут xmlns - зарезервированный атрибут и определяется следующим образом:

DefaultAttName ::= 'xmlns'

Префикс xmlns:

Префикс xmlns: - зарезервированный префикс и определяется следующим образом:

[2] PrefixedAttName ::= 'xmlns:' NCName

См. также Ограничение пространства имен: зарезервированные префиксы и имена пространства имен

Префикс xmlns используется только для объявления привязок пространств имен и по определение, связанное с именем пространства имен http://www.w3.org/2000/xmlns/. Он НЕ ДОЛЖЕН быть объявлен. Другие префиксы НЕ ДОЛЖНЫ быть связаны с этим имя пространства имен, и оно НЕ ДОЛЖНО быть объявлено как пространство имен по умолчанию. Имена элементов НЕ ДОЛЖНЫ иметь префикс xmlns.

Ссылка из Рекомендация XML

2.3 Общие синтаксические конструкции

Примечание:

Пространства имен в XML-рекомендации [XML Names] присваивает значение имена, содержащие символы двоеточия. Поэтому авторы не должны использовать двоеточие в именах XML, кроме целей пространства имен, но XML процессоры должны принимать двоеточие как символ имени.