2.2.3 Конфликты задания имен

Теперь мы опишем, как определять новые сложные типы (например, PurchaseOrderType), объявлять элементы (например, purchaseOrder) и объявлять атрибуты (например, orderDate). Обычно эти действие представляют собой процесс присвоения имен, и, следовательно, встает вопрос: “что случиться, если мы дадим дважды одинаковое имя?” Ответ зависит от того, чьи имена совпадут, хотя, в общем случае, вероятность конфликта возрастает при совпадении имен подобных объектов.

Рассмотрим ряд примеров, чтобы проиллюстрировать ситуации, когда совпадение имен вызывает проблемы. Если два объекта, и оба являются типами, один сложный тип с именем USStates, а другой простой тип и тоже с именем USStates, то это конфликт. Если два объекта, которые мы определяем и один из них тип, другой элемент или атрибут, например сложный тип с именем USAddress и элемент с тем же именем USAddress, то конфликта нет. Если два объекта элементы, входящие в разные типы (т.е. не глобальные элементы), например, мы объявляем один элемент с именем name, как часть типа USAddress, а другой элемент с тем же именем, как часть типа Item, то конфликта не будет. (Про такие объявления иногда говорят, что это локальные объявления элементов.) Наконец, если есть два объекта и оба типы,  и вы определили один, а в XML Schema определен другой, допустим, вы определили простой тип с именем decimal, то конфликта не будет. Причина этого на первый взгляд противоречия заключается в том, два типа в последнем примере принадлежат разным пространствам имен. Мы объясним использование пространств имен в схеме в последующих разделах.

 

Используются технологии uCoz