次のドキュメントの XML スキーマを作成しようとしています。s またはs のList
いずれかを含む要素が必要です。TextItem
List
<!-- a "List" containing "TextItem"s: -->
<List>
<TextItem><TextItemData>foo</TextItemData></TextItem>
<TextItem><TextItemData>bar</TextItemData></TextItem>
</List>
<!-- a "List" containing "List"s of "TextItem"s: -->
<List>
<List>
<TextItem><TextItemData>foo1</TextItemData></TextItem>
<TextItem><TextItemData>bar1</TextItemData></TextItem>
</List>
<List>
<TextItem><TextItemData>foo2</TextItemData></TextItem>
<TextItem><TextItemData>bar2</TextItemData></TextItem>
</List>
</List>
次の XML スキーマ定義は、タスクを実行します。
<xs:complexType name="TextItemType">
<xs:sequence>
<xs:element name="TextItemData" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ListType">
<xs:choice>
<xs:sequence>
<xs:element name="TextItem" type="TextItemType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:element name="List" type="ListType" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
私が実際に欲しいのは、次のようなリストです( なしTextItemData
):
<List>
<TextItem>foo</TextItem>
<TextItem>bar</TextItem>
</List>
TextItem
の定義を の定義に組み込み、List
を取り除くことができTextItemData
ます。TextItem
ただし、例では属性を省略しているため、 の定義は実際にはかなり複雑です。さらに、 などのアイテムもありますBinaryItems
。の定義はList
読めないほど大きくなります。
TextItemData
要素の必要性を取り除くにはどうすればよいですか?