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>