Расширение сложного типа XSD с другим сложным типом

Я хотел бы определить сложный тип 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>

person Bastien    schedule 28.10.2015    source источник
comment
насколько я знаю, другого выхода нет.   -  person Kachna    schedule 28.10.2015


Ответы (1)


Если вы можете изменить 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>
person RCB    schedule 28.10.2015
comment
Это интересно. Однако это предотвращает использование B в качестве типа. Но поскольку я могу определить тип B, состоящий из группы B, его можно использовать в качестве обходного пути. Спасибо. - person Bastien; 29.10.2015