Простори імен XML: як зіставити документ зі схемою
XSDHub · 4 листопада 2026 року
Що означає проблема
Два елементи з однаковою назвою можуть належати до різних словників XML. Простір імен дає змогу їх розрізняти: повне ім’я складається з URI простору імен та локальної назви. Префікс лише скорочує запис URI. Тому зміна префікса зі збереженням його прив’язки зазвичай не змінює ідентичності елемента, а інший URI змінює її.
З чого почати перевірку
Почніть із кореневого елемента. Порівняйте його URI зі значенням targetNamespace у XSD, враховуючи регістр і кінцеву скісну риску. Адреса простору імен є ідентифікатором; вона не обов’язково веде на сторінку для завантаження. Відкриття такої адреси в браузері не виправить розбіжність між документом і схемою.
Як працює приклад
У прикладі схема очікує order у просторі urn:orders. Налаштування elementFormDefault="qualified" поширює вимогу належності до цього простору на локальний дочірній елемент quantity. Помилковий XML містить xmlns="" саме на quantity, скасовуючи успадкований простір імен. Обидва документи синтаксично коректні, проте лише виправлений відповідає схемі.
На що звернути увагу
Простір імен за замовчуванням застосовується до елементів без префікса, але не до атрибутів без префікса. Це суттєво, коли схема вимагає кваліфікований атрибут: додавання xmlns до батьківського елемента саме собою його не кваліфікує. Перевіряйте оголошення атрибута окремо й додавайте потрібний префікс лише відповідно до специфікації формату.
Як застосувати виправлення
Відтворіть відмову з наведеною повною XSD, а потім приберіть порожнє оголошення xmlns із quantity. Решту документа залиште без змін. Якщо перевірка успішна, причину встановлено. Атрибут xsi:schemaLocation не змінює імен елементів і не запускає мережевого завантаження на цій сторінці; схему потрібно вставити у відведене поле.
Перевірте приклади самостійно
Відкрити безкоштовний інструмент. Порівняйте помилковий і виправлений документи. Вставте повну 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>