我想为购物订单数据的 XML 表示定义 XML 模式。
请参阅以下要求
- 订单的 XML 表示应包含订单 ID、描述、请求日期和许多订单项
- 每个行项目元素应包含书籍、数量和价格。价格(即每本书的价格)应限制为大于 0 的值
- 每本书都应包含书名、书名、流派、出版日期和许多作者。应限制类型,使其仅包含以下值{科幻、神秘、惊悚、戏剧}
- 每个作者应包含简历、姓氏、名字和可选的笔名。
评价标准
- 允许许多订单项
- 允许许多作者写一本书并有一个可选的笔名
- 允许指定价格并限制为大于 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>
建议我如果我的方法有效?并建议我如果我遗漏了什么?