2.5.1 Сложные типы от простых типов

Давайте, сначала решим, как объявить элемент, который имеет атрибут и содержит простое значение. В документе примера такой элемент можно представить как:

<internationalPrice currency="EUR">423.46</internationalPrice>

В счете на покупку объявляется элемент USPrice, который является отправной точкой:

<xsd:element name=”USPrice” type=”decimal”/>

Теперь, как нам добавить атрибут к этому элементу? Как мы говорили ранее, простые типы не могут иметь атрибутов, а decimal - это простой тип. Следовательно, мы должны определить сложный тип, чтобы ввести объявление атрибута. Мы также хотим, чтобы содержание было простым типом decimal. Таким образом, наш первоначальный вопрос примет следующий вид: «Как нам определить сложный тип, который базируется на простом типе decimal? Ответ - получить новый сложный тип от простого типа decimal :

Получение сложного типа от простого типа

<xsd:element name=”internationalPrice”> <xsd:complexType> <xsd:simpleContent> <xsd:extension base=”xsd:decimal”> <xsd:attribute name=”currency” type=”xsd:string”/> <</xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element>

Мы используем элемент complexType в начале определения нового (анонимного) типа. Для указания того, что модель содержания нового типа содержит только символьные данные, и в ней нет элементов, мы используем элемент simpleContent. Наконец, мы получаем новый тип, расширяя простой тип decimal. Расширение выполняется посредством добавления атрибута currency, используя стандартное объявление атрибута. (Мы затронули  образование типа, которое подробно рассмотрим в Разделе 4.)  Элемент internationalPrice, объявленный этим способом появится в примере, как показано в примере в начале этого раздела.

 

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