我有一些complexType元素,它是某个元素的父元素:
<xs:complexType name="elementParent">
<xs:sequence>
<xs:element name="b" type="xs:String" />
<xs:element name="c" type="xs:String" />
</xs:complexType>
现在我想创建anothex复杂类型,它将是我父母的扩展。问题是有序的。第一个元素应该是a然后是b然后是c。我只知道这个选项,订单将是b c a我不想要的:
<xs:complexType name="elementChild">
<xs:complexContent>
<xs:extension base="elementParent">
<xs:sequence>
<xs:element name="a" type="xs:String" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
答案 0 :(得分:3)
<xs:extension>
创建一个类型,该类型首先包含基类型,然后是<xs:extension>
中定义的显式内容。如果您只想在另一个类型的元素之前添加新元素,则可以将公共元素定义为<xs:group>
,然后在两个类型定义中引用该组。
这样的事情:
<!-- common elements defined as a group -->
<xs:group name="elementGroup">
<xs:sequence>
<xs:element name="b" type="xs:string" />
<xs:element name="c" type="xs:string" />
</xs:sequence>
</xs:group>
<!-- group is referred to in element type definitions -->
<xs:element name="elementParent">
<xs:complexType>
<xs:sequence>
<xs:group ref="elementGroup" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="elementChild">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:string" />
<xs:group ref="elementGroup" />
</xs:sequence>
</xs:complexType>
</xs:element>