English

Пространства имён XML: почему одинаковые теги различаются

XSDHub · 4 ноября 2026 года

Причина и контекст

Пространство имён связывает имя элемента с URI. Записи a:order и b:order обозначают один элемент, если оба префикса указывают на одинаковый URI. Сам префикс служит сокращением; принимающая система сравнивает пространство имён и локальную часть имени. Поэтому замена префикса обычно безопасна, а изменение URI меняет смысл документа.

Что проверить в документе

Объявление xmlns задаёт пространство имён по умолчанию для элементов внутри своей области действия. Непрефиксные атрибуты оно не затрагивает. Если схема ожидает корень из urn:orders, документ с корнем order без объявления xmlns не соответствует этому ожиданию. Внешне имена похожи, но для валидатора это разные элементы.

Разбор примера

В приведённой схеме targetNamespace описывает словарь заказа. Значение elementFormDefault="qualified" требует, чтобы вложенный quantity тоже принадлежал этому словарю. Правильный пример распространяет пространство имён по умолчанию на оба элемента. Ошибочный вариант снимает его у quantity через xmlns=""; синтаксис остаётся допустимым, но проверка структуры завершается отказом.

Как найти источник ошибки

При сообщении «No matching global declaration» сначала сравните URI корня с targetNamespace. Скопируйте обе строки целиком: регистр, завершающий слеш и протокол имеют значение. URI здесь является идентификатором и не обязан открываться как веб-страница. Не пытайтесь исправить ошибку скачиванием адреса пространства имён.

Особые случаи

Для воспроизведения используйте режим XML + XSD и вставляйте схему отдельно от документа. Затем меняйте только объявление пространства имён и запускайте повторную проверку. Атрибут xsi:schemaLocation не исправляет принадлежность элементов к словарю и не заставляет эту страницу загружать файлы из сети. Если получатель публикует несколько версий словаря, выберите URI именно нужной версии.

Воспроизведите результат

Открыть инструмент для этих примеров. Сначала проверьте вариант с ошибкой, затем исправленный документ. Вставьте приведённую XSD в поле схемы.

Полная учебная схема XSD 1.0

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:orders" elementFormDefault="qualified"><xs:element name="order"><xs:complexType><xs:sequence><xs:element name="quantity" type="xs:positiveInteger"/></xs:sequence></xs:complexType></xs:element></xs:schema>

XML с ошибкой — ожидается отказ

<order xmlns="urn:orders"><quantity xmlns="">3</quantity></order>

Исправленный XML — ожидается успех

<order xmlns="urn:orders"><quantity>3</quantity></order>

Спецификация

Первоисточник W3C (English)