1

我想为购物订单数据的 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>

建议我如果我的方法有效?并建议我如果我遗漏了什么?

4

0 回答 0