2013-02-18 14 views
5

Próbuję dziedziczą i ograniczyć element ale dostaję następujący błąd (w walidacji eclipse):XSD ograniczenie elementu z dziedziczenia nie działa

Cząstka typu nie jest ważna ograniczenie cząsteczki podstawy.

"Opis" element nie powinien być częścią "TypeDevice" elementu. Po prostu nie mogę tego zrozumieć. To powinno być możliwe (zgodnie z tym tutorial):

Czy ktoś może mi pomóc?

Greets,

Bill

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns="http://www.example.com" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <!-- Abstract Base Class --> 
    <xs:complexType name="AbstractDevice" abstract="true"> 
    <xs:sequence> 
     <xs:element name="Name" type="xs:string" /> 
     <xs:element name="Description" type="xs:string" /> 
    </xs:sequence> 
    <xs:attribute name="id" type="xs:string" /> 
    </xs:complexType> 

    <!-- Inheritance with restriction --> 
    <xs:complexType name="TypeDevice"> 
    <xs:complexContent> 
     <xs:restriction base="AbstractDevice">         
     <xs:sequence> 
      <xs:element name="Name" type="xs:string" /> 
     </xs:sequence> 
     <xs:attribute name="id" type="xs:string" use="required" /> 
     </xs:restriction>       
    </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="TypeRoot"> 
    <xs:sequence> 
     <xs:element name="Device" type="TypeDevice" /> 
    </xs:sequence>     
    </xs:complexType> 
    <xs:element name="Configuration" type="TypeRoot" /> 
</xs:schema> 

Odpowiedz

4

Rodzaj AbstractDevice ma dwa wymagane elementy, natomiast typ TypeDevice ma tylko jedną. Tak więc TypeDevice nie jest prawidłową instancją swojego typu podstawowego AbstractDevice. Aby było to ważne, należy dodać element minOccurs="0" do Description lub obrócić wyprowadzenie i użyć rozszerzenia.

+0

Dzięki za odpowiedź. Ale pomyślałem, że właśnie to można zrobić z ograniczeniem zastosowanym do elementu. Połączony samouczek robi dokładnie to (ogranicz element "Autor" bazowego typu "Książka" w pochodnej "Pamphlet" przez ograniczenie.Może coś tu źle rozumiem.Nawiasem mówiąc, nie jest możliwe w mojej realizacji, aby ustawić Opis do "minOccurs = 0" w elemencie podstawowym. – Bill

Powiązane problemy