是否有内联平凡复数 complexTypes 与单独定义它们的既定标准?
详细说明:在定义一些 XML 模式时,我经常遇到希望一个元素包含多个相同类型的子元素的情况。例如,描述数据库中表的模式具有一个fields
元素,该元素可以包含一个或多个field
元素。我可以在复数fields
元素的定义中创建一个内联 complexType:
<xs:element name="fields" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="field" type="table-field"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
或者我可以单独定义一个普通fields
类型并使用它:
<xs:element name="fields" type="table-field-collection" minOccurs="1" maxOccurs="1">
<!-- Elsewhere: -->
<xs:complexType name="table-field-collection">
<xs:sequence>
<xs:element name="field" type="table-field" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
第一种方法使用匿名类型创建了稍微混乱的标记,而第二种方法创建了许多额外的琐碎复杂类型。是否就首选哪种方法达成共识?