XSD 具有另一个复杂类型的复杂类型扩展
XSD complex type extension with another complex type
我想使用另一个复杂类型定义一个 XSD 复杂类型。
<xs:complexType name="A">
<!-- sequence with some elements -->
</xs:complexType>
<xs:complexType name="B">
<!-- sequence with some elements -->
</xs:complexType>
<xs:complexType name="C">
<xs:complexContent>
<xs:extension base="A">
<!-- ??? reference to complex type B ??? -->
</xs:extension>
</xs:complexContent>
</xs:complexType>
有没有办法在不声明 B 类型的新元素的情况下做到这一点?
编辑:
现在想起来,为了禁止自扩展,可能不允许使用另一种类型进行类型扩展。
正如 RCB 所建议的,可以使用组作为解决方法。
<xs:complexType name="A">
<!-- sequence with some elements -->
</xs:complexType>
<xs:group name="B">
<!-- sequence with some elements -->
</xs:group>
<xs:complexType name="B">
<xs:group ref="B"/>
</xs:complexType>
<xs:complexType name="C">
<xs:complexContent>
<xs:extension base="A">
<xs:group ref="B"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
如果您能够将 B 从复杂类型更改为组,那么您可以这样做:
<xs:group name="B">
<xs:sequence>
<!-- Some elements -->
</xs:sequence>
</xs:group>
<xs:complexType name="C">
<xs:complexContent>
<xs:extension base="A">
<xs:group ref="B"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
我想使用另一个复杂类型定义一个 XSD 复杂类型。
<xs:complexType name="A">
<!-- sequence with some elements -->
</xs:complexType>
<xs:complexType name="B">
<!-- sequence with some elements -->
</xs:complexType>
<xs:complexType name="C">
<xs:complexContent>
<xs:extension base="A">
<!-- ??? reference to complex type B ??? -->
</xs:extension>
</xs:complexContent>
</xs:complexType>
有没有办法在不声明 B 类型的新元素的情况下做到这一点?
编辑:
现在想起来,为了禁止自扩展,可能不允许使用另一种类型进行类型扩展。
正如 RCB 所建议的,可以使用组作为解决方法。
<xs:complexType name="A">
<!-- sequence with some elements -->
</xs:complexType>
<xs:group name="B">
<!-- sequence with some elements -->
</xs:group>
<xs:complexType name="B">
<xs:group ref="B"/>
</xs:complexType>
<xs:complexType name="C">
<xs:complexContent>
<xs:extension base="A">
<xs:group ref="B"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
如果您能够将 B 从复杂类型更改为组,那么您可以这样做:
<xs:group name="B">
<xs:sequence>
<!-- Some elements -->
</xs:sequence>
</xs:group>
<xs:complexType name="C">
<xs:complexContent>
<xs:extension base="A">
<xs:group ref="B"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>