[XSD] wozu abstract ComplexType ?

Z

Zassel

Hi,

man kann in XSD einen Typen absract deklarieren.
D.h. man kann von diesem Typ keine Instanz erzeugen.
In der OO-Programmierung erschließt sich mir auch der Sinn dahinter.
Aber in XSD, wo es nur um Strukturen geht, also keine funkltionalität
implementiert wird, fällt mir kein Szenario ein, in dem das sinnvoll ist.

Könnt ihr mir auf die Sprünge helfen?
 
Hi!

Es gibt z.B. Methoden, Programme, Skripte etc. die aus XML Schemata Klassen für diverse Programmiersprachen und/oder Tabellen für Datenbanken generieren, welche dann von den Entwicklern ggf. nur noch erweitert werden brauchen. Der Autor einer XSD-Datei kann somit schon im Voraus festlegen, dass gewisse Strukturen (aber auch Elemente - abstract="true" ist auch hier gültig) nicht instantiiert werden bzw. im XML-Dokument auftauchen können.
Insofern ist der Zweck des abstract Attributes in XML Schema exakt der gleiche wie das Keyword in den diversen Programmiersprachen - und macht auch hier Sinn: es Kennzeichnet eine Deklaration als "reine" Basis für darauf aufbauende.

Gruß
Enum

http://www.w3.org/TR/xmlschema11-1/#Complex_Type_Definition_details hat gesagt.:
Complex types for which {abstract} is true have no valid instances and thus cannot be used in the normal way as the {type definition} for the ·validation· of element information items (if for some reason an abstract type is identified as the ·governing type definition· of an element information item, the item will invariably be invalid). It follows that such abstract types must not be referenced from an xsi:type (§2.7.1) attribute in an instance document. Abstract complex types can be used as {base type definition}s, or even as the declared {type definition}s of element declarations, provided in every case a concrete ·derived· type definition is used for ·validation·, either via xsi:type (§2.7.1) or the operation of a ·substitution group·.
 
Zurück