Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 463
Ильдар Шаукатович Хабибуллин
<xsd:complexType name="calcResultType">
<xsd:simpleContent>
<xsd:extension base="xsd:decimal">
<xsd:attribute name="unit" type="xsd:string" />
<xsd:attribute name="precision"
type="xsd:nonNegativeInteger" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Эту конструкцию можно описать словами так: "Определяется тип calcResultType элемента, тело которого содержит значения встроенного простого типа xsd:decimal. Простой тип расширяется тем, что к нему добавляются атрибуты unit и precision".
Если в схеме описать элемент <result> этого типа следующим образом:
<xsd:element name="result" type="calcResultType" />
то в документе XML можно написать
<result unit="cM" precision="2">123.25</result>
В компоненте <restriction> кроме атрибутов описывается простой тип тела элемента и/или фасетки, ограничивающие тип, заданный атрибутом base. Например:
<xsd:complexType name="calcResultType">
<xsd:simpleContent>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="8" />
<xsd:attribute name="unit" type="xsd:string" />
<xsd:attribute name="precision"
type="xsd:nonNegativeInteger" />
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
Определение типа вложенных элементов
Если значениями определяемого сложного типа будут элементы, содержащие вложенные элементы, как, например, элементы <address>, <phone-list> листинга 28.2, то перед перечислением описания вложенных элементов надо выбрать
Компонент <sequence> применяется в том случае, когда перечисляемые элементы должны записываться в документе в конкретном порядке. Пусть, например, мы описываем книгу. Сначала определяем тип:
<xsd:complexType name="bookType">
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="author" type="xsd:normalizedString" minOccurs="0" />
<xsd:element name="title" type="xsd:normalizedString" />
<xsd:element name="pages" type="xsd:positiveInteger" minOccurs="0" />
<xsd:element name="publisher" type="xsd:normalizedString" minOccurs="0" />
</xsd:sequence>
Потом описываем элемент:
<xsd:element name="book" type="bookType" />
Элементы <author>, <title>, <pages> и <publisher> должны входить в элемент <book> именно в таком порядке. В документе XML надо писать:
<book>
<author>H. Ильф, Е. neTpoB</author>
^^^>Золотой тeлeнок</title>
<publisher>Художeствeнная литература</publisher>