如何使用XSD include 就够了

How to use XSD include in a sufficient matter

所以我正在学习如何使用 XSD,但我对以下文件感到疯狂。 首先,这是我的简单 XML 文件:

     <?xml version="1.0"?>
<menu xmlns="http://www.menu.org"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
      xsd:schemaLocation="http://www.menu.org menuReUseGerecht.xsd">
  <voorgerechten>
    <gerecht id="1" prijs="3.95">Groene salade</gerecht>
    <gerecht id="2" prijs="4.35">Tomatensoep</gerecht>
    <gerecht id="3" prijs="9.95">Carpaccio</gerecht>
  </voorgerechten>
  <hoofdgerechten>
    <gerecht id="4" prijs="19.95">Gegrilde ossehaas</gerecht>
    <gerecht id="5" prijs="15.95">Linguini al Pesto</gerecht>
    <gerecht id="6" prijs="18.95">Gepocheerde zalm</gerecht>
  </hoofdgerechten>
  <desserts>
    <gerecht id="7" prijs="5.95">Dame Blanche</gerecht>
    <gerecht id="8" prijs="7.45">Banana Split</gerecht>
  </desserts>
</menu>

这是第一个 XSD 文件,名为 'gerecht.xsd'.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    elementFormDefault="qualified"
    targetNamespace="http://www.menu.org"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
        <xs:complexType name="gerechttype">
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="id" type="xs:unsignedByte" use="required" />
                    <xs:attribute name="prijs" type="xs:decimal" use="required" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
</xs:schema>

最后我不工作了'MenuReUseGerecht.xsd'

<?xml version="1.0" encoding="Windows-1252"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.menu.org"
            xmlns="http://www.menu.org"
            elementFormDefault="qualified">
<xsd:include schemaLocation="gerecht.xsd"/>
    <xsd:element name="menu">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="voorgerechten">
                    <xsd:complexType>
                        <xsd:sequence>
              <xsd:element name="gerecht"></xsd:element>
                            <!--repair here--> 
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element name="hoofdgerechten">
                    <xsd:complexType>
                        <xsd:sequence>
                            <!--repair here-->
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <!--repair here-->
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

我不知道如何将 gerecht.xsd 实施到 MenuReUseGerecht.xsd 中以创建足够的 XSD 文件。 任何帮助表示赞赏。提前致谢。

要"reuse"您在gerecht.xsd中定义的内容模型,您只需将"gerecht"元素设置为gerechttype.

您还需要设置 maxOccurs 属性以允许多次出现 gerecht 元素。

因此您的架构可以这样修改:

<xsd:element name="menu">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="voorgerechten">
                <xsd:complexType>
                    <xsd:sequence>
                       <xsd:element name="gerecht" type="gerechttype" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="hoofdgerechten">
                <xsd:complexType>
                    <xsd:sequence>
                       <xsd:element name="gerecht" type="gerechttype" maxOccurs="unbounded"/>
                   </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <!--repair here-->
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>