在定义模式时使用的所有示例中<xs:choice>
,元素始终是简单元素,它们可能引用一些外部类型,但从不具有自己的子元素。这是规则还是惯例?例如,是否有可能做到这一点?
<xs:element name="shape">
<xs:complexType>
<xs:choice>
<xs:element name="circle">
<xs:complexType>
<xs:sequence>
<xs:element name="radius" type="xs:decimal" />
<xs:element name="x" type="xs:integer" />
<xs:element name="y" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rectangle">
<xs:complexType>
<xs:sequence>
<xs:element name="length" type="xs:integer" />
<xs:element name="width" type="xs:integer" />
<xs:element name="x" type="xs:integer" />
<xs:element name="y" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
这大致相当于写作
data Shape = Circle Double Int Int
| Rectangle Int Int Int Int
在哈斯克尔。