Я хочу определить схему XML для XML представления данных заказа на покупку.
См. Следующие требования
- Представление заказа XML должно содержать идентификатор заказа, описание, дату запроса и много строк
- Каждый элемент позиции должен содержать книгу, количество и цену. Цена (то есть цена за книгу) должна быть ограничена значениями, превышающими 0
- Каждая книга должна содержать идентификатор книги, название книги, жанр, дату публикации sh и множество авторов. Жанр должен быть ограничен так, чтобы он мог содержать только следующие значения: {фантастика, тайна, триллер, драма}
- Каждый автор должен содержать биографию, фамилию, имя и необязательное псевдоним.
Критерии оценки
- допускает много позиций
- позволяет многим авторам книги и иметь ДОПОЛНИТЕЛЬНОЕ псевдоним
- позволяет указывать цену и ограничивает значения больше 0
- позволяет указывать жанр, но ограничивает список значений ТОЛЬКО тем, что указано выше. Пожалуйста, кто-нибудь, помогите мне определить XML определение для этого типа вложенных требований.
вот мой код
XML
<?xml version="1.0" encoding="UTF-8" ?>
<orders>
<order id="1">
<description>first order of the day</description>
<req_date>9-4-2020</req_date>
<line_items>
<book>
<id>1</id>
<name>Book1</name>
<publish_date>12-2-2010</publish_date>
<genre>science-fiction</genre>
<authors>
<author id="120">
<bio> description about author120</bio>
<first_name>George</first_name>
<last_name>Smith</last_name>
<pen_name>pen name </pen_name>
</author>
<author id="122">
<bio> description about author122</bio>
<first_name>George</first_name>
<last_name>Smith</last_name>
</author>
</authors>
</book>
<book>
<id>1</id>
<name>Book2</name>
<publish_date>12-2-2010</publish_date>
<genre>science-fiction</genre>
<authors>
<author id="120">
<bio> description about author120</bio>
<first_name>George</first_name>
<last_name>Smith</last_name>
<pen_name>pen name </pen_name>
</author>
</authors>
</book>
<quantity>1</quantity>
<price>20</price>
</line_items>
</order>
</orders>
XSD
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="orders">
<xs:complexType>
<xs:sequence>
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="description" />
<xs:element type="xs:string" name="req_date" />
<!-- criteria 1 -->
<xs:element name="line_items" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="id" />
<xs:element type="xs:string" name="name" />
<xs:element type="xs:string" name="publish_date" />
<xs:element name="genre" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="science-fiction"/>
<xs:enumeration value="mystery" />
<xs:enumeration value="thriller" />
<xs:enumeration value="drama" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- criteria 2 -->
<xs:element name="authors" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="author" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="bio" />
<xs:element type="xs:string" name="first_name" />
<xs:element type="xs:string" name="last_name" />
<!-- make a pen name optional -->
<xs:element type="xs:string" name="pen_name" minOccurs="0" />
</xs:sequence>
<xs:attribute type="xs:byte" name="id" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:byte" name="quantity" />
<!-- price criteria -->
<xs:element name="price">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:byte" name="id" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Подскажите, если мой подход работает? и подскажите, если я что-то упустил?