2015-10-28 2 views
2

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

EDIT:

Теперь, когда я думаю об этом, расширение типа с другим типом, вероятно, не допускается, чтобы запретить само-расширение.

Как рекомендовал 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

, насколько я знаю, нет никакого другого пути. – Kachna

ответ

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

Это интересно. Однако это предотвращает использование B как типа. Но так как я могу определить тип B, состоящий из группы B, его можно использовать в качестве обходного пути. Благодарю. – Bastien

Смежные вопросы