2015-10-28 145 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的新元素?

編輯:

現在我想起來了,類型擴展與其他類型的恐怕不是爲了禁止自行擴展許可。

正如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,那麼你可以做:

<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