sto cercando ereditare e limitare un elemento, ma sto ottenendo seguente errore (nella convalida Eclipse):restrizione XSD dell'elemento con l'ereditarietà non funziona
La particella del tipo non è una valida restrizione della particella della base.
L'elemento "Descrizione" non deve far parte dell'elemento "TipoDevice". Non riesco a capirlo perché. Questo dovrebbe essere possibile (in base a questo tutorial):
Qualcuno mi può aiutare?
saluta,
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>
Grazie per la risposta. Ma ho pensato, questo era esattamente ciò che si può fare con una restrizione applicata a un elemento. Il tutorial collegata fa esattamente questo (limitare un elemento "autore" del tipo di base "Book" nel elment derivata "Pamphlet" di restrizione. Forse mi fraintenda qualcosa qui. Tra l'altro, non è possibile nella mia applicazione per impostare Descrizione a "minOccurs = 0" nell'elemento base. – Bill