Что такое пространство имен в XML?
Пространство имен XML (XML namespace) — это механизм, позволяющий уникально идентифицировать элементы и атрибуты в XML-документе с помощью URI, чтобы избежать конфликтов имен при объединении нескольких словарей XML в одном документе.
Аналогия из жизни: пространство имен — это как фамилия. В классе может быть два Ивана, но «Иван Петров» и «Иван Сидоров» — разные люди. URI в namespace играет роль фамилии для XML-элементов.
Объявление и использование
Пространства имен объявляются атрибутом xmlns, значением которого является URI, а префикс однозначно идентифицирует принадлежность каждого элемента:
Пример
<root xmlns:app="http://example.com/app"
xmlns:db="http://example.com/db">
<app:config>
<app:timeout>30</app:timeout>
</app:config>
<db:config>
<db:pool-size>10</db:pool-size>
</db:config>
</root>
В данном примере два элемента config не конфликтуют, поскольку принадлежат разным пространствам имен.
Ключевые правила
- URI не обязан указывать на реальный ресурс — он используется только как уникальный идентификатор
- Можно задать пространство имен по умолчанию (без префикса):
xmlns="http://example.com/default" - Все имена элементов в пределах одного пространства имен должны быть уникальны
- Документ может содержать элементы и атрибуты из нескольких пространств имен одновременно
Где используется в Java
- SOAP-сообщения (каждый элемент относится к своему namespace)
- Spring XML-конфигурация:
xmlns:context,xmlns:tx,xmlns:aop - Maven POM:
xmlns="http://maven.apache.org/POM/4.0.0"
На собеседовании: интервьюер хочет услышать, зачем нужны namespace — для устранения конфликтов имен при смешивании разных XML-словарей. Частая ошибка — думать, что URI в namespace обязан быть рабочей ссылкой.