Конфликт имен — это ситуация, когда два или более идентификаторов в заданном пространстве имен или заданной области действия не могут быть разрешены однозначно , и такое однозначное разрешение является требованием базовой системы.
В XML имена элементов могут быть созданы и изменены для отражения типа информации, содержащейся в документе. Этот уровень гибкости может вызвать проблемы, если отдельные документы кодируют разные виды информации, но используют одни и те же идентификаторы для имен элементов.
Например, следующий образец документа определяет базовую семантику для документа "person" и документа "book". Оба они используют элемент "title", но значение не одинаково:
<root> <person> <fname> Нэнси </fname> <lname> Даволио </lname> <title> Доктор </title> <age> 29 </age> </person> <book> <title> Гарри Поттер и проклятое дитя </title> <isbn> ABCD1234567 </isbn> </book> </root>
Чтобы приложение позволяло пользователю правильно запрашивать и извлекать элемент "title", оно должно предоставлять способ однозначно указать, какой элемент title запрашивается. Невыполнение этого требования приведет к конфликту имен элемента title (а также любых других элементов, которые разделяют это непреднамеренное сходство).
В предыдущем примере в структуре самого документа (которая определяется элементом «root») имеется достаточно информации, чтобы обеспечить возможность однозначного разрешения имен элементов.
Например, используя XPath :
//root/person/title ;; официальное звание человека //root/book/title ;; название книги
Термин «домен коллизий» может также использоваться для обозначения системы, в которой одно имя или идентификатор открыты для множественных интерпретаций различными уровнями или обработкой. Понятие пространства имен широко применяется в практике программирования программного обеспечения для предотвращения нежелательных коллизий. Обратите внимание, что его использование в области сетевых технологий на первый взгляд похоже, но на самом деле совершенно иное.