XSD复杂类型扩展与另一种复杂类型

时间:2015-10-28 14:33:57

标签: xml xsd xsd-validation 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>

1 个答案:

答案 0 :(得分:1)

如果您能够将B从complexType更改为组,则可以执行以下操作:

<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>