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

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

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

 

Сайт создан в системе uCoz