我想模拟Xml,例如
.......
<mood1>
<positive>true</positive>
<probability>23</probability>
</mood1>
<mood2>
<positive>false</positive>
<probability>86</probability>
</mood2>
.........
在xml架构中,目前我有
<xs:element name="mood1">
<xs:complexType>
<xs:sequence>
<xs:element ref="category"/>
</xs:sequence>
</xs:complexType>
<xs:element name="mood2">
<xs:complexType>
<xs:sequence>
<xs:element ref="category"/>
</xs:sequence>
</xs:complexType>
<xs:element name="category">
<xs:complexType>
<xs:sequence>
<xs:element name="positive" type="xs:boolean"/>
<xs:element name="probability" type="xs:float"/>
</xs:sequence>
</xs:complexType>
但当然会建模另外一个不必要的类别元素,例如
.......
<mood1>
<category>
<positive>true</positive>
<probability>23</probability>
</category>
</mood1>
<mood2>
<category>
<positive>false</positive>
<probability>86</probability>
</category>
</mood2>
.........
我不想要。
我能做到
<xs:element name="mood1">
<xs:complexType>
<xs:sequence>
<xs:element name="positive" type="xs:boolean"/>
<xs:element name="probability" type="xs:float"/>
</xs:sequence>
</xs:complexType>
<xs:element name="mood2">
<xs:complexType>
<xs:sequence>
<xs:element name="positive" type="xs:boolean"/>
<xs:element name="probability" type="xs:float"/>
</xs:sequence>
</xs:complexType>
但是我必须继续重复相同的定义(并且不仅仅是mood1和mood2)。
我想说mood1是类别的子类型,但我不知道如何,值得注意的是mood1和mood2确实有相同的元素,但它们不是一回事。
答案 0 :(得分:1)
找到你将常用元素定义为complexType的答案,然后你的顶级元素通过type属性引用complexType
即
<xs:complexType name="category">
<xs:sequence>
<xs:element name="positive" type="xs:boolean"/>
<xs:element name="probability" type="xs:float"/>
</xs:sequence>
</xs:complexType>
<xs:element name="mood1" type="category"/>
<xs:element name="mood2" type="category"/>