4.2 Установление типов по расширению

Для того, чтобы создать конструкции адресов, мы начнем как обычно с создания сложного типа. Назовем его Address (см. address.xsd). Тип Address содержит базовые элементы адреса: имя, улица и город. (Такое определение адреса не будет корректно во всех странах, но для объяснений целей нашего примера оно достаточно.) Из этой начальной точки мы получим два новых сложных типа, которые содержат все элементы первоначального типа плюс дополнительные элементы, которые являются специфичными для адресов в США и Великобритании. Воспользуемя методикой, основанной расширении существующего типа, для получения новых (сложных) типов адресов. Это таже самая методика, которую мы использовали в Разделе 2.5.1, за исключением того, что здесь наш базовый тип - сложный тип, тогда как нашим базовым типом в предыдущем разделе был простой тип.

Мы определяем два новых сложных типа, USAddress и UKAddress, используя элемент complexType. Применение элемента complexContent позволяет нам указать, что модели содержания новых типов сложные, то есть содержат элементы, а также расширить исходный тип Address значением атрибута base  в элементе extension.

Когда сложный тип получен расширением, его результирующая модель содержания является совокупностью моделей содержания исходного типа и   образованного типа. Кроме того, две модели содержания трактуются как две дочерние в той же самой группе. В случае UKAddress, модель содержания UKAddress является моделью содержания Address , в которую добавлены объявления для элемента postcode и атрибута exportCode. Это напоминает на самое начальное определение UKAddress:

Пример

<complexType name=”UKAddress”>
 <sequence>
  <!-- content model of Address -->
  <element name=”name” type=”string”/>
  <element name=”street” type=”string”/>
  <element name=”city” type=”string”/>

  <!-- appended element declaration --> 
  <element name=”postcode” type=”ipo:UKPostcode”/>
 </sequence>

 <!-- appended attribute declaration -->
 <attribute name=”exportCode” type=”positiveInteger” fixed=”1”/>
</complexType>
Сайт создан в системе uCoz