Gymterview
middle

Что такое пространство имен в 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 обязан быть рабочей ссылкой.