記事、論文、書籍などの章を記述する XML ファイルのスキーマを作成しています。高レベルの概念は、 に<chapter>
は任意の数の段落<par>
、セクション<section>
、画像、およびリストを含めることができるということです。同じことがセクションにも当てはまり、セクションにも任意の数の段落、画像、リストを含めることができます。サブセクションも同様です (まだ実装されていません)。
私の現在のスキーマの外観は次のとおりです。
<xs:complexType name="chapter-type">
<xs:choice maxOccurs="unbounded">
<xs:element name="section" type="section-type" />
<xs:element name="par" type="par-type" />
<xs:element name="image" type="image-type" />
<xs:element name="ol" type="list-type" />
<xs:element name="ul" type="list-type" />
</xs:choice>
</xs:complexType>
<xs:complexType name="section-type">
<xs:choice maxOccurs="unbounded">
<xs:element name="par" type="par-type" />
<xs:element name="image" type="image-type" />
<xs:element name="ol" type="list-type" />
<xs:element name="ul" type="list-type" />
</xs:choice>
</xs:complexType>
<!-- <subsection> and other content-containing elements will repeat the par, image, ol, ul -->
ご覧のとおり、多くの繰り返しがあり、章/セクションの内容を再利用したいサブセクションやその他の場所で「悪化」します。
<content>
段落/画像/リストをラップするために、新しい要素を追加することもできますが、その場合、その要素を XML に追加する必要があります。そして、それは私が避けたいことです。
だから私の質問は、これらの要素をどこでも繰り返さないようにするにはどうすればよいですか?