Электронный магазин на Java и XML

         

Схема для каталога (catalog.xsd)



Листинг 1.5. Схема для каталога (catalog.xsd)

<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<xsd:element name="Catalog" type="CatalogType"/>
<xsd:complexType name="CatalogType">
<xsd:element name="product" type="ProductType"/>
<xsd:attribute name="onSaleDate" type="xsd:date"/>
<xsd:attribute name="partNum" type="Sku"/>
</xsd:complexType>
<xsd:complexType name="ProductType">
<xsd:element name="productName" type="xsd:string"/>
<xsd:element name="quantity_in_stock">
<xsd:simpleType base="xsd:positivelnteger">
<xsd:maxExclusive value="500"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="pnce" type="xsd'decimal"/>


<xsd:element name="description" type="xsd:string" minOccurs="0"/>
</xsd:complexType>
<xsd:simpleType name="Sku" base="xsd:string">
<xsd:pat tern value="\[A-Z]{3}-[A-Z]{3}d{3}"/>
</xsd:simpleType>
</xsd:schema>
<catalog>
<product partNum="ABC-PR0336" onSaleDate="12/12/2004">
<productName>
BigSoft Xtreminator 3.36</productName>
<quantity_in_stock>
20</quantity_in_stock >
<price>
195.99</price>
<description>
Managing your life has never been so easy.</description>
</product>
<product partNura="ABC-PR0343" onSaleDate="12/12/2004">
<productName>
E-Dev ProntoWorks</productName>
<quanti ty_in_stock>
35</quantity_in_stock >
<price>
299.99</price>
<description>
The premier integrated rapid e-development suite for busy e-professionals.</description>
</product>
</catalog>

Элементы сложного типа определяются с помощью элемента compl exType. Как было уже сказано, элементы сложного типа содержат другие элементы и атрибуты. Элементы и атрибуты, содержащиеся внутри сложных элементов, определяются с помощью элементов element и attribute соответственно. Например, в листинге 1.5 элемент product определен как элемент сложного типа. Внутри определения типа ProductType определяются пять элементов: productName, quantity_in_stock, price, comment и partNum.

Элементы простого типа не имеют атрибутов и не содержат других элементов. В XSD имеется ряд встроенных простых типов, в том числе string, binary, boolean, double, float и т. д. На основе встроенных простых типов можно сконструировать дополнительные простые типы. В частности, в предыдущем примере определяется простой тип Sku, сконструированный на основании типа string.

Процесс конструирования новых простых типов из уже существующих называется ограничением (restriction). Обратите внимание, что в определении нового типа Sku используется регулярное выражение, задающее шаблон, которому должно соответствовать содержимое любого элемента или атрибута данного типа.

В схемах XSD имеются гораздо более гибкие операторы повторяемости, чем в DTD. Как говорилось выше, в DTD можно указать, что элемент должен встретиться ноль, один, один или более или любое количество раз. В дополнение к этим операторам схема XML позволяет задавать минимальное и максимальное количество повторов одного элемента в документе, его значение или диапазон значений и т. д.



Содержание раздела