2011-06-29 69 views
8

是否有可能为complexTypes使用xs:union?

<xs:element name="Kunde" type="tKunde"/> 


<xs:complexType name="tKunde"> 
    <xs:union memberTypes="tPerson tStudent"></xs:union> 
</xs:complexType> 
<xs:complexType name="tPerson"> 
    <xs:sequence> 
     <xs:element name="Vorname" type="xs:string"/> 
     <xs:element name="Nachname" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="tStudent"> 
    <xs:complexContent> 
     <xs:extension base="tPerson"> 
     <xs:sequence> 
      <xs:element name="Matrikelnummer" type="xs:int" minOccurs="0" maxOccurs="1"/> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

那是它应该是什么样子。任务是派生一个学生从人,然后使用这两种类型之一的元素Kunde。

这似乎是无效的。

回答

2

您不能对此使用xs:union。您可以使用xs:choice,也可以将这些元素放入替换组中,这样它们中的任何一个都可以代替替换组头部的元素。