EN15907-XML-Anwendungsschemata: Unterschied zwischen den Versionen
(→Hintergrund) |
(→Methodik) |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | Betrifft: [[EN15907-XML-Implementierung]] | ||
+ | |||
= Hintergrund = | = Hintergrund = | ||
Zeile 14: | Zeile 16: | ||
* Die Typdeklaration des Basis-Schemas wird im Anwendungsschema zu Konstruktion eines abgeleiteten Typs herangezogen | * Die Typdeklaration des Basis-Schemas wird im Anwendungsschema zu Konstruktion eines abgeleiteten Typs herangezogen | ||
* Der abgeleitete Typ kann unter dem Namensraum des Anwendungsschemas für anwendungsspezifische Typrestriktionen verwendet werden | * Der abgeleitete Typ kann unter dem Namensraum des Anwendungsschemas für anwendungsspezifische Typrestriktionen verwendet werden | ||
+ | |||
+ | Instanzen eines Anwendungsschemas deklarieren (mindestens) zwei Namensräume: den des Basis-Schemas und den des Anwendungsschemas. Für die Validierung braucht nur das Anwendungsschema herangezogen werden, denn dieses enthält eine Import-Anweisung für das Basis-Schema. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | Im Anwendungsschema sei der <code>TitleRelationshipType</code> des Basis-Schemas abgeleitet zu einem anwendungsbezogenen <code>TitleRelationship</code>, indem der ursprüngliche Inhaltstyp <code>string</code> durch einen Aufzählungstyp ersetzt wird: | ||
+ | <source lang="xml"> | ||
+ | |||
+ | <xs:complexType name="TitleRelationship"> | ||
+ | <xs:simpleContent> | ||
+ | <xs:restriction base="cw:TitleRelationshipType"> | ||
+ | <xs:enumeration value="Originaltitel"/> | ||
+ | <xs:enumeration ... | ||
+ | (...) | ||
+ | |||
+ | </source> | ||
+ | Nehmen wir weiter an, das Anwendungsschema sei in der XML-Instanz unter dem Namensraumkürzel "apd" und das Basis-Schema als "cw" deklariert. Nun können wir das ursprüngliche Element "cw:TitleRelationship" mit einer Typrestriktion aus dem Namensraum "apd" versehen: | ||
+ | <source lang="xml"> | ||
+ | <cw:TitleRelationship | ||
+ | xs:type="apd:TitleRelationship">Originaltitel</cw:TitleRelationship> | ||
+ | </source> | ||
+ | Diese Aussage wird von einem validierenden Parser als gültig erkannt. Wogegen | ||
+ | <source lang="xml"> | ||
+ | <cw:TitleRelationship | ||
+ | xs:type="apd:TitleRelationship">Original-Titel</cw:TitleRelationship> | ||
+ | </source> | ||
+ | als ungültig zurückgewiesen wird, da die Schreibweise "Original-Titel" in der Aufzählung gültiger Werte nicht vorkommt. Ohne das Anwendungsschema wären beide Aussagen dagegen gleichermaßen valide: | ||
+ | <source lang="xml"> | ||
+ | <cw:TitleRelationship>Originaltitel</cw:TitleRelationship> | ||
+ | </source> | ||
+ | ebenso wie | ||
+ | <source lang="xml"> | ||
+ | <cw:TitleRelationship>Original-Titel</cw:TitleRelationship> | ||
+ | </source> | ||
+ | Eine zum Anwendungsschema konforme XML-Instanz ist damit immer auch konform mit dem Basis-Schema. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Zurück zur [[EN15907-XML-Implementierung|Übersicht der EN15907-XML-Implementierung]]. | ||
+ | |||
+ | [[Kategorie:EN15907-XML]] |
Aktuelle Version vom 13. Dezember 2017, 19:29 Uhr
Betrifft: EN15907-XML-Implementierung
Hintergrund
Das XML-Basis-Schema für den EN 15907-Standard definiert die Elemente und die Struktur einer filmografischen Beschreibung. Die Inhalte der meisten Elemente und auch die etlicher Attribute unterliegen dabei keiner Kontrolle durch das Schema. In praktischen Datenaustausch-Szenarien benötigen die Beteiligten oft eine bessere Vorhersagbarkeit der Elementinhalte, als dies durch das Basis-Schema gewährleistet werden kann.
Gefordert ist daher eine Beschränkung auf solche Aussagen, über deren Bedeutung sich die Austauschpartner verständigt haben. Gleichzeitig soll die allgemeinere Bedeutung der Datenelemente nicht verändert werden, so dass deren Inhalte auch ohne Kenntnis des Anwendungsschemas gültig bleiben.
Methodik
Zur Ausdifferenzierung von Schemadefinitionen bietet die XML-Schemasprache einige Konstrukte an, die im vorliegenden Kontext wie folgt gebraucht werden:
- Eine Elementdefinition im Basis-Schema basiert auf einer Typdeklaration
- Die Typdeklaration verwendet nur die grundlegenden XML-Datentypen
- Das Anwendungsschema verwendet einen eigenen, vom Basis-Schema unterscheidbaren Namensraum
- Die Typdeklaration des Basis-Schemas wird im Anwendungsschema zu Konstruktion eines abgeleiteten Typs herangezogen
- Der abgeleitete Typ kann unter dem Namensraum des Anwendungsschemas für anwendungsspezifische Typrestriktionen verwendet werden
Instanzen eines Anwendungsschemas deklarieren (mindestens) zwei Namensräume: den des Basis-Schemas und den des Anwendungsschemas. Für die Validierung braucht nur das Anwendungsschema herangezogen werden, denn dieses enthält eine Import-Anweisung für das Basis-Schema.
Beispiel:
Im Anwendungsschema sei der TitleRelationshipType
des Basis-Schemas abgeleitet zu einem anwendungsbezogenen TitleRelationship
, indem der ursprüngliche Inhaltstyp string
durch einen Aufzählungstyp ersetzt wird:
<source lang="xml">
<xs:complexType name="TitleRelationship"> <xs:simpleContent> <xs:restriction base="cw:TitleRelationshipType"> <xs:enumeration value="Originaltitel"/> <xs:enumeration ... (...)
</source> Nehmen wir weiter an, das Anwendungsschema sei in der XML-Instanz unter dem Namensraumkürzel "apd" und das Basis-Schema als "cw" deklariert. Nun können wir das ursprüngliche Element "cw:TitleRelationship" mit einer Typrestriktion aus dem Namensraum "apd" versehen: <source lang="xml"> <cw:TitleRelationship
xs:type="apd:TitleRelationship">Originaltitel</cw:TitleRelationship>
</source> Diese Aussage wird von einem validierenden Parser als gültig erkannt. Wogegen <source lang="xml"> <cw:TitleRelationship
xs:type="apd:TitleRelationship">Original-Titel</cw:TitleRelationship>
</source> als ungültig zurückgewiesen wird, da die Schreibweise "Original-Titel" in der Aufzählung gültiger Werte nicht vorkommt. Ohne das Anwendungsschema wären beide Aussagen dagegen gleichermaßen valide: <source lang="xml"> <cw:TitleRelationship>Originaltitel</cw:TitleRelationship> </source> ebenso wie <source lang="xml"> <cw:TitleRelationship>Original-Titel</cw:TitleRelationship> </source> Eine zum Anwendungsschema konforme XML-Instanz ist damit immer auch konform mit dem Basis-Schema.
Zurück zur Übersicht der EN15907-XML-Implementierung.