Перевод рекомендации W3C - XML Schema Part 0. Выполнил Г.Е. Берман
Перевод рекомендации W3C - XML Schema Part 0. Выполнил Г.Е. Берман
5. Расширенные концепции III:
Квартальный отчет
Приложение
для учета изделий для дома может сгенерировать специализированные отчеты,
которые суммируют, сколько и какие типы продуктов были поставлены в регион.
Пример такого отчета за четвертый квартал 1999, показан в 4Q99.xml.
Отметим, что в этом разделе мы
используем квалифицированные элементы в схеме, и где возможно пространство имен
по умолчанию.
Квартальный
отчет, 4Q99.xml
<purchaseReport
xmlns="http://www.example.com/Report"
period="P3M" periodEnding="1999-12-31">
<regions>
<zip code="95819">
<part number="872-AA" quantity="1"/>
<part number="926-AA" quantity="1"/>
<part number="833-AA" quantity="1"/>
<part number="455-BX" quantity="1"/>
</zip>
<zip code="63143">
<part number="455-BX" quantity="4"/>
</zip>
</regions>
<parts>
<part number="872-AA">Lawnmower</part>
<part number="926-AA">Baby Monitor</part>
<part number="833-AA">Lapis Necklace</part>
<part number="455-BX">Sturdy Shelves</part>
</parts>
</purchaseReport>
Части
списков отчетов с номером и количеством
объявляются с различными почтовыми индексами. Это обеспечивает описание каждой
части отдельно. Действительно, анализируя представленные счета, ясно видно
назначение отчетов и однозначность данных, которые определены номером. Например, каждый почтовый индекс появляется
только однажды (уникальность). Точно так же описание каждой объявленной части
представляется только один раз, хотя части могут быть связаны с несколькими
почтовыми индексами (ссылочное ограничение), как, например, номер части 455-BX. В следующих разделах, мы увидим, как специфицировать эти
ограничения, используя XML Schema.
Схема отчета, report.xsd
<schema targetNamespace="http://www.example.com/Report"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:r="http://www.example.com/Report"
xmlns:xipo="http://www.example.com/IPO"
elementFormDefault="qualified">
<!-- for SKU -->
<import namespace="http://www.example.com/IPO"/>
<annotation>
<documentation xml:lang="en">
Report schema for Example.com
Copyright 2000 Example.com. All rights reserved.
</documentation>
</annotation>
<element name="purchaseReport">
<complexType>
<sequence>
<element name="regions" type="r:RegionsType">
<keyref name="dummy2" refer="r:pNumKey">
<selector xpath="r:zip/r:part"/>
<field xpath="@number"/>
</keyref>
</element>
<element name="parts" type="r:PartsType"/>
</sequence>
<attribute name="period" type="duration"/>
<attribute name="periodEnding" type="date"/>
</complexType>
<unique name="dummy1">
<selector xpath="r:regions/r:zip"/>
<field xpath="@code"/>
</unique>
<key name="pNumKey">
<selector xpath="r:parts/r:part"/>
<field xpath="@number"/>
</key>
</element>
<complexType name="RegionsType">
<sequence>
<element name="zip" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="part" maxOccurs="unbounded">
<complexType>
<complexContent>
<restriction base="anyType">
<attribute name="number" type="xipo:SKU"/>
<attribute name="quantity" type="positiveInteger"/>
</restriction>
</complexContent>
</complexType>
</element>
</sequence>
<attribute name="code" type="positiveInteger"/>
</complexType>
</element>
</sequence>
</complexType>
<complexType name="PartsType">
<sequence>
<element name="part" maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="number" type="xipo:SKU"/>
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</complexType>
</schema>
#bn {display:block;}
#bt {display:block;}
содержание | 2 | Лирика, рассказы, стихи, эссе.
Используются технологии
uCoz