あなたは XSD を学習しているようなので、より完全な XML サンプルを作成し、ツールを使用してこれらすべてのサンプル XML から XSD を生成する方が簡単かもしれません。生成された XSD から多くのことを学ぶことができ、目標に合わせて段階的に変更することが容易になるはずです。
xs:schema
エラーは、または以外の下に名前付き型をネストできないことですxs:redefine
。
したがって、以下のように見える場合、切り取ったものは正しいでしょう。
<?xml version="1.0" encoding="utf-8" ?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="machine">
<xs:complexType>
<xs:all>
<!-- Definition for the <timing> child element. -->
<xs:element name="timing" type="timing_type"/>
<!-- Definitions for the other <machine> child elements... -->
</xs:all>
</xs:complexType>
</xs:element>
<xs:complexType name="timing_type">
<xs:attribute name="offset" type="xs:string"/>
<xs:attribute name="period" type="xs:string"/>
</xs:complexType>
</xs:schema>
遭遇する可能性のある問題は、またはのxs:all
代わりに を使用することに関連しています。XSD 1.0 では、要素に対して複数のオカレンスを持つことができないという点で非常にうるさいです。xs:sequence
xs:choice
xs:all
timing
以下の XSD は、ツールによって生成されました。これは、追加したバリエーション (maxOccurs="unbounded") を可能にする( allの代わりに)シーケンスコンポジターを使用します。
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="machine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="timing" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="offset" type="xsd:string" use="required" />
<xsd:attribute name="period" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
ミックスに別のタイプの要素を追加し(提案したように)、そのような要素を任意の数、個別に複数回、任意の順序で発生させたい場合、以下のモデルが機能します。ここで注目すべきは、xsd:choice maxOccurs="unbounded"
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="machine">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="timing">
<xsd:complexType>
<xsd:attribute name="offset" type="xsd:string" use="required" />
<xsd:attribute name="period" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="cycle">
<xsd:complexType>
<xsd:attribute name="duration" type="xsd:positiveInteger" use="required" />
<xsd:attribute name="period" type="xsd:positiveInteger" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>