如何使用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>
所以我正在学习如何使用 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>