我正在为描述文章、论文、书籍等章节的 XML 文件编写模式。高级概念是 a<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 中。这就是我想避免的。
所以我的问题是:我怎样才能避免在任何地方重复这些元素?