2009-10-16 147 views
5

我有這樣的複雜類型:包含在XSD複雜類型元素,而新元素

<xsd:complexType name="Identifier"> 
    <xsd:sequence> 
     <xsd:element name="Id" type="xsd:string"/> 
     <xsd:element name="Version" type="xsd:string"/> 
    </xsd:sequence> 
</xsd:complexType> 

現在我想包括這另一個複雜類型,我一直在做的是這樣的:

<xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="Id" type="Identifier"/> 
       <!-- More elements here --> 
    </xsd:sequence> 
</xsd:complexType> 

這不是我真正想要的。我想直接在我的第二個複雜類型中包含標識符類型的元素,而不創建新元素。例如。就像這樣做:

<xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="Id" type="xsd:string"/> 
     <xsd:element name="Version" type="xsd:string"/> 
       <!-- More elements here --> 
    </xsd:sequence> 
</xsd:complexType> 

希望是有道理的。

在此先感謝。

回答

6

可以擴展類型,像這樣:

<xsd:complexType name="MySubType"> 
    <xsd:complexContent> 
     <xsd:extension base="Identifier"> 
         <xsd:sequence> 
          <!-- More elements here --> 
         </xsd:sequence> 
     </xsd:extension> 
    </xsd:complexContent> 
</xsd:complexType> 
+0

完美 - 謝謝。你知道如何在一個複雜類型中包含多個擴展嗎? – ng5000 2009-10-16 13:10:21

+1

找到了答案。我想要的是多重繼承,可以使用xsd:group來實現。 – ng5000 2009-10-16 13:41:10

+0

Aye,團體是非常方便的事情,儘管如果你過度使用它們,它們會變得混亂。 – skaffman 2009-10-16 13:52:18

1

這個複雜的類型將始終解析爲

<Identifier> 
    <Id>string</Id> 
    <Version>string</Version> 
</Identifier> 

,如果你不想要一個孩子的結構,你可以定義Id和版本元素和使用

<xsd:element ref="Id"/> 
<xsd:element ref="Version"/> 

以後引用它們。但你沒有保證,他們都出現

您也可以Id和版本屬性標識符元素複雜類型

好運 邁克

相關問題