XML-Schema Flashcards

1
Q

Was ist XML-Schema und welche Anforderungen (8) sollte es erfüllen?

A

Mit der Verbreitung von XML wurden die Schwächen einer Validierung mit DTDs immer deutlicher. Aus diesem Grund wurde XML-Schema als neue Sprache für die Strukturdefinition, entwickelt.
XML-Schema soll:
* in XML ausgedrückt werden,
* ausdrucksstärker sein als eine DTD
* selbstdokumentierend sein
* internetfähig sein
* zu anderen XML-Spezifikationen kompatibel sein
* von Menschen lesbar sein
* von XML-Parsern verstanden werden können
* Namensräume berücksichtigen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Aus welchen drei Teilen besteht XML-Schema?

A
  • Part 0: Primer
    Enthält grundlegende Informationen und eine zusammenfassende Einführung
  • Part 1: Structures
    Legt die grundlegenden Strukturen eines XML-Schama-Dokumentes fest und enthält alle wichtigen Elemente der Schema-Sprache
  • Part 2: Datatypes
    Legt die Datentypen für Schema-Dokumente fest
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie ist ein XML-Schema aufgebaut?

A

Ein XML Schema ist selbst ein XML-Dokument und wird immer in einer eigenen Datei gespeichert.
Das Wurzelelement eines XML-Schemas ist das Element schema, dieses muss den Namensraum http://www.w3.org/2001/XMLSchema besitzen, da darin bereits alle erlaubten Elemente und Attribute sowie alle vorderfinierten Dateitypen enthalten sind. Dem Namensraum wird ein Präfix gegeben, meist wird xs oder xsd verwendet.
Als Kindelemente von <xs:schema> werden Definitionen und Deklarationen notiert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was sind Definitionen und Deklarationen in einem XML-Schema?

A
  • Deklaration:
    Deklarationen beschreiben die Elemente und Attribute, die in einer Dokumentinstanz auftreten dürfen.
    <xs:element name="name" type ="xs:string"/>
  • Definition:
    Definitionen definieren neue Typen, Modellgruppen oder Attributgruppen, die in Element- oder Attributdeklaration verwendet werden können.
    <xs:simpleType name="AnredeTyp">
    <xs:restriction base="xs:string">
    <xs:enumeration value="Frau"/>
    <xs:enumeration value="Herr"/>
    </xs:restriction>
    </xs:simpleType>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind globale und lokale Elemente im XML-Schema?

A

Im XML-Schema wird zwischen globalen und lokalen Elementen, Attributen und Datentypen unterschieden.
Elemente, Attribute, bzw. Datentypen, die als Kinder des <xs:schema>-Elements deklariert werden, sind global und können überall im Schema referenziert werden. Alle Anderen sind lokale Deklarationen bzw. Definitionen.
Im Nachfolgenden Beispiel ist bspw. dozent ein globales Element, name und vorname sind lokale Elemente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="dozent">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="vorname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie wird von einer XML-Instanz auf ein XML-Schema referenziert?

A

Im Wurzelelement der XML-Instanz wird für den Namensraum http://www.w3.org/2001/XMLSchema-instance ein Kürzel festgelegt. Aus diesem Namensraum wird das Attribut oNamespaceSchemaLocation verwendet um ein XML-Schema-Dokument zu referenzieren, das über keinen Zielnamensraum verfügt.
<?xml version="1.0" encoding="UTF-8"?>
<dozent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dozent.xsd">
<name>Maier</name>
<vorname>Fritz</vorname>
</dozent>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist ein einfaches Element in einem XML-Schema und wie wird es deklariert?

A

Ein einfaches Element ist ein XML-Elemen, das keine Kindelemente und keine Attribute besitzt.
Es gilt folgende Syntax:
<xs:element name="Elementname" type="Datentyp"/>
Der Elementname wird als Wert des Attributes name angegeben
Als Datentyp kann einer der 49 in XML-Schema vordefinierten Datentypen oder ein benutzerdefinierter einfacher Datentyp verwendet werden. Bei verwendung eines vordefinierten Datentyps muss das definierte Namensraum-Präfix vorangestellt werden.

Hier wird ein Element name vom Typ string deklariert:
<xs:element name="name" type="xs:string"/>
Dies entspricht der DTD-Deklaration:
<!ELEMENT name (#PCDATA)>
Hier wird ein Element geburtsdatum vom Typ date deklariert:
<xs:element name="gebdatum" type="xs:date"/>
In einer XML-Instanz ist folgendes Element dazu valide:
<gebdatum>1980-12-22</gebdatum>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welches sind die 7 meist genutzten vordefinierten Datentypen in XML-Schema?

A
  • xs:string für Zeichenketten,
  • xs:boolean für die Wahrheitswerte true und false,
  • xs:int für ganze Zahlen,
  • xs:decimal für Dezimalzahlen,
  • xs:double für Gleitkommazahlen,
  • xs:date für Datumsangaben im Format JJJJ-MM-TT,
  • xs:time für Zeitangaben.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Darf bei einem einfachen Element in XML-Schema der Datentyp fehlen?

A

Bei einem einfachen Element in XML-Schema darf der Datentyp fehlen. Dann ist das Element vom Typ anyType. Es sind dann beliebige Kindelemente und/oder beliebige Zeichendaten und beliebige Attribute erlaubt, solange es sich um wohlgeformtes XML handelt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was sind komplexe Elementtypen in XML-Schema und wie werden sie deklariert?

A

Komplexe Elementtypen sind Elemente, die andere elemente und Attribute enthalten können. Deklariert werden sie, indem innerhalb des Elements <xs:element> ein komplexer Typ mit <xs:comlexType> notiert wird.
<xs:complexType> wird als Kindelement von <xs:element> notiert. Innerhalb von <xs:complexType> wird zuerst das Inhaltsmodell angegeben, danach folgen Deklarationen der Attribute und weitere Gültigkeitsregeln.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welche vier Typen von komplexen Elementen gibt es in XML-Schema?

A
  • Elemente die andere Elemente (Kindelemente) enthalten
  • Elemente mit gemischtem Inhalt, diese können andere Elemente und Zeichendaten enthalten
  • Elemente, die nur Zeichendaten enthalten
  • leere Elemente
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was versteht man unter einem Anonymen Typ?

A

Komplexe Typen, die ohne Angabe eines Namens definert werden, werden als anonyme Typen bezeichnet. Sie sind nur lokal sichtbar, daher ist es nicht möglich, sie an anderen Stellen wiederzuverwenden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was versteht man unter einem benannten komplexen Typ?

A

Komplexe Typen, für die einen Namen definiert wurde, werden als benannte komplexe Typen bezeichnet. Sie sind global definiert und kann in Elementdeklarationen als Wert des Attributes type angegeben werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sind Kompositoren bei komplexen Elementtypen, welche drei gibt es?

A

Ein Kompositor ist ein Container, in den eine Reihe von Elementen eingebettet werden kann. XML-Schema definiert drei verschiedene Kompositoren: <xs:sequence>, <xs:choice> und <xs:all>.
* <xs:sequence>: Kindelemente müssen genau in der angegebenen Reihenfolge vorkommen
* <xs:choice>: mehrere Kindelemente stehen zur Auswahl, davon kann eins ausgewählt werden
* <xs:all>: Kindelemente dürfen in beliebiger Reihenfolge und mehrmals vorkommen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind Kardinalitäten bei komplexen Elementtypen?

A

Mit Kardinalitäten kann angegeben werden, wie oft ein Element bzw. Modellgruppeen vorkommen darf/muss. Wird nichts angegeben, muss es 1 mal vorkommen.
Mit minOccurs wird die minimale und mit maxOccurs die maximale Anzahl festgelegt. Der Default-Wert ist in beiden Fällen 1. Soll die Anzahl der Vorkommen nach oben unbeschränkt sein, wird maxOccurs="unbounded" gesetzt.

<xs:element name="dozent">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="vorname" type="xs:string" minOccurs="1" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was sind Elemente mit gemischtem Inhalt bei komplexen Elementtypen,wie werden sie gekennzeichnet?

A

Elemente mit gemischtem Inhalt können Kindelemente und auch Zeichendaten enthalten. Zur Kennzeichenung, dass gemischter Inhalt eraubt ist, wird beim Element <xs:complexType> das Attribut mixed="true" gesetzt.

<xs:element name="beschreibung">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="em" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:element>

Die folgende XML-Instanz ist dazu valide:

<beschreibung xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="b9_beschr.xsd">
Dies ist <em>besonders wichtig</em>.
</beschreibung>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Was ist der Unterschied bei der deklaration von Elementen mit gemischtem Inhalt in XML-Schema und in einer DTD?

A

Beim gemischten Inhaltsmodell von XML-Schema kann jeder der Kompositoren <xs:sequence>, <xs:choice> oder <xs:all> verwendet werden, zudem sind genaue Kardinalitätsangaben für die Elemente durch minOccurs und maxOccurs möglich. Mit einem XML-Schema können also wesentlich restriktivere Festlegungen bezüglich der Reihenfolge und der Anzahl der Kindelemente getroffen werden, als dies mit einer DTD möglich ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Wie werden Elemente mit Zeichendaten und Attriubuten in XML-Schema deklariert?

A

Ein Element, wie z. B. <preis waehrung="Euro">57.23</preis>, muss, da es ein Attribut besitzt, als Element komplexen Typs deklariert werden. Da es jedoch keine Kindelemente, sondern einfachen Textinhalt beinhalten soll, muss innerhalb von <xs:complexType> das Element <xs:simpleContent> angegeben werden. Als Kindelement von <xs:simpleContent> wird <xs:extension> notiert. Als Wert des Attributes base wird der Datentyp des Inhaltes angegeben. Als Datentyp erlaubt sind einfache Datentypen und komplexe Typen mit einfachen Zeichendaten (simple content). Die erlaubten Attribute und ggf. Assertions werden als Kindelemente von <xs:extension> deklariert.

Die Deklaration für ein Element der Art <preis waehrung="euro">57.23</preis> hat folgende Form:

<xs:element name="preis">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="waehrung" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Wie werden leere Elemente in XML-Schema deklariert?

A

Auch ein leeres Element muss als ein Element komplexen Typs deklariert werden. Daher ist bei der Deklaration die Angabe von <xs:complexType> erforderlich. Da das Element jedoch leer ist, werden innerhalb von <xs:complexType> keine Elemente deklariert.

<xs:element name="br">
<xs:complexType/>
</xs:element>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Wie werden Attribute innerhalb von komplexen Typen deklariert?

A

Attribte werden innerhalb eines komplexen Typs nach dem Inhaltsmodell deklariert. Verwendet wird hierzu das Element <xs:attribute> mit den Attributen name und type. Es kann festgelegt werden, ob ein Attribut optional oder verplichtend ist. Weiterhin kann ein Default-Wert oder ein fester Wert angegeben werden. Attribute können ach global deklariert und innerhalb eines komplexen Typs referenziert werden.
<xs:attribute name="Attributname" type="Attributtyp"/>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Was kann in komplexen Typen als Attributtyp verwendet werden?

A

Als Attributtyp kann einer der im XML-Schema vordefinierten Typen oder ein benutzerdefinierter einfacher Datentyp verwendet werden.
Wird einer der vordefinierten Datentypen verwendet, muss diesem das definierte Namsensraum-Präfix vorangestellt werden. Fehlt die Typangabe, ist das Attribut vom Typ anySimpleType.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Was bewirkt das Attribut use bei der deklaration von Attributen in komplexen Typen?

A

Mit Hilfe des Attributes use können weitere Angaben über das Vorkommen des Attributs gemacht werden:
* use="required": Attribut ist ein Pflichtattribut
* use="optional": Attribut ist optional (default)
* use="prohibited": Verwendung des Attributs in abgeleiteten Typen ist verboten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Was bewirken die Attribute default und fixed bei der deklaration von Attributen in komplexen Typen?

A
  • default: Default-Wert für das Attribut wird eingesetzt, wenn in der Dokumentinstanz kein anderer Wert notiert wird.
  • fixed: Ein fester, unveränderlicher Wert wird eingesetzt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Wie kann ein globales Attribut in XML-Schema deklariert werden, was ist zu beachten??

A

Eine Attributdeklaration kann auch global, also als direktes Kindelement von <xs:schema> notiert werden. Die Attributdeklaration innerhalb von <xs:complexType> erfolgt dann durch eine Referenz auf ein bereits global deklariertes Attribut. Die Syntax lautet:
<xs:attribute ref="Attributname"/>
Das Attribut use darf bei einer globalen Deklaration nicht verwendet werden und muss bei der lokalen Definition oder der Referenzierung angegeben werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Was wird mit Assertions bei komplexen Typen bezweckt und wo liegt der Vorteil??

A

Mit Assertions können Beschränkungen, welche die Existenz oder die Werte mehrere Elemente und/oder Attribute einbeziehen, formuliert werden.
Der Vorteil ist, dass damit Regeln bereits im Schema formuliert werden können und diese nicht erst nach dem Parsen geprüft oder implementiert werden müssen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Wie werden Assertions in komplexen Typen deklariert, welche Regeln werden unterstützt?

A

Zur Formulierung einer Assertion dient das Element <xs:assert>. Es wird nach der Attributdeklaration eingefügt. Die eigentliche Regel wird als Wert des Attributes test in Form eines XPath-Ausdrucks angegeben.
Unterstützt wird ein Grossteil der XPath Version 2.0.
Syntax: <xs:assert test="XPath-Ausdruck"/>
Der XPath-Ausdruck wird während der Validierung zu true oder false ausgewertet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Wo liegen die Beschränkungen von Assertions?

A

Im XPath-Ausdruck ist nur ein Zugriff auf die Attribute, den Inahlt und die Nachfahrenelemente möglich. Ist ein Zugriff auf Vorfahren oder Geschwiterelemente notwendig, muss die Assertion in einem Vorfahrenelement notiert werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Wie werden vordefinierte einfache Datentypen verwendet, wie viele gibt es?

A

Vordefinierte einfache Datentypen können als Datentyp für einfache Elemente und Attribute verwendet werden oder als Basis für benutzerdefinierte einfache Datentypen.
Es gibt 49 vordefinierte einfache Datentypen, darunter Datentypen, wie sie bei den meisten Programmiersprachen zu finden sind, wie auch Datentypen spezifisch für XML-Dokumente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Was sind vordefinierte einfache Datentypen?

A

Vordefinierte einfache Datentypen werden als Tripel aus einem Werteraum, einem lexikalischen Raum und einer Menge von Eigenschaften (Facetten), betrachtet.
* Werteraum: eine Menge von Werten zu einem gegebenen Datentyp. Jeder Wert im Werteraum wird durch ein oder mehrere Literale im lexikalischen Bereich dargestellt. (z.B. float)
* lexikalischer Raum: ist eine Menge von zulässigen Literalen für einen Datentyp. (z.B. 100)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Was sind Facetten in vordefinierten einfachen Datentypen, welche Facetten gibt es(5)?

A

Mit Facetten können Eigenschaften des Datentyps angegeben werden. Es gibt 5 fundamentale Facetten, mit denen grundlegende Eigenschaften angegeben werden.
1. Ob Werte auf Gleichheit geprüft werden können (equal)
2. Ob für Werte eine Ordnung angegeben werden kann (ordered)
3. Ob der Datentyp auf einen Wertebereich eingeschränkt sein kann (bounded)
4. Ob die Anzahl Werte in einem Wertebereich begrenzt ist (cardinality)
5. Ob der Datentyp nummerisch ist

Indem der Wertebereich durch einschränkende Facetten eingegrenzt wird, können weitere Datentypen entwickelt werden.

31
Q

Wie sieht die Hierarchie der vordefinierten Datentypen aus?

A

Die Typen im XML-Schema Typsystem bilden eine Hierarchie:
* anyType: Ganz oben in der Hierarchie. Generischer Type, der alles erlaubt. Einfache Elemente können einen beliebigen Textinhalt haben, Attribute einen beliebigen Attributwert und komplexe elemente beliebige Kindelemente und beliebige Attribute. Sollte eher vermieden werden
* anySimpleType: Basistyp aller einfachen Typen. Es gibt drei Arten einfacher Typen:
* Atomare Typen haben Werte, die unteilbar sind
* Listentypen erlaubt eine Liste von Werten, jeweils durch mind. ein Whitespace Zeichen getrennt. Bei den vordefinierten Typen gibt es drei Listentypen: IDREFS, NMTOKENS, ENTITIES
* Vereinigungstypen haben als Werteraum bzw. lexikalischen Raum die Vereinigungsmenge der Werteräume/lexikalischen Räume der vereinigten Typen

32
Q

Was sind primitive Typen?

A

Die Typen direkt unter anyAtomicType werden als eingebaute primitive Datentypen bezeichnet.
Beispiele: string, decimal, date

33
Q

Was sind abgeleitete Datentypen?

A

abgeleitete Datentypen sind einfache Datentypen, die von primitiven Datentypen abgeleitet sind. Sie entstehen durch Einschränkung des Wertebereichs eines primitiven Datentyps oder eines anderen abgeleiteten Datentyps.
Beispiel: integer wird aus decimal abgeleitet, indem die erlaubten Dezimalstellen auf Null gesetzt werden.

34
Q

Was sind DTD-Datentypen?

A

Die Datentypen ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN und NMTOKENS werden auch als DTD-Datentypen bezeichnet und bereitgestellt, um die Kompatibilität zwischen XML-Schema und DTDs zu wahren. Sie entsprechen genau den gleichnamigen Typen, die für Attribute einer DTD existieren, deshalb sollten sie auch in einem XML-Schema nur als Datentypen für Attribute verwendet werden.

35
Q

Welche drei Varianten gibt es um Benutzerdefinierte einfache Datentypen zu definieren?

A
  1. Ableitung durch Einschränkung: Durch die Angabe von Facetten wird der Wertebereich eines einfachen Typs eingeschränkt.
  2. Ableitung durch Auflistung: ermöglicht es einen Listen-Datentyp zu definieren
  3. Ableitung durch Vereinigung: ermöglicht die Definition eines Typs, dessen Wertebereich Werte verschiedener Typen umfasst.
36
Q

Wie werden benutzerdefinierte Typen definiert, was sind anonyme und benannte Typen?

A

Zur Definition eines benutzerdefinierten einfachen Datentyps
dient das Element <xs:simpleType>.
* Anonymer Typ: Die Definition des Typs erfolgt vollständig innerhalb einer Element- oder Attributdeklaration. Diese Typen haben keinen Namen, sie sind nur lokal sichtbar und können an keiner anderen Stelle verwendet werden.
* Benannter Typ: Dem Datentyp wird mit dem Attribut name ein Name zugewiesen. Diese Attribute sind global definiert und kann bei Element- und Attributdeklarationen als Wert des Attributes type angegen werden.

37
Q

Wie funktioniert die Ableitung durch Einschränkung?

A

Es werden Beschränkungen für die Menge der zulässigen Werte angegeben.
Zur Definition einer Einschränkung dient das Element <xs:restriction>, der einzuschränkende Basistyp wird im Attribut base angegeben.
Als Kindelemente werden Facetten notiert, welche die einschränkenden Eigenschaften angeben.

<xs:simpleType name="Typname">
<xs:restriction base="Basistyp">
<!-- Angabe von Facetten -->
</xs:restriction>
</xs:simpleType>

Es kann nicht jede Facette bei jedem Tytentyp angewendet werden (z.B. machen Nachkommastellen bei Zeichenketten keinen Sinn).
Bei allen Datentypen sind erlaubt:
* whiteSpace: Leerraumbehandlung
* enumeration: Aufzählung von erlaubten Werten
* pattern: Muster in Form eines regulären Ausdrucks
* assertion: Einschränkung des Wertes, formuliert durch einen XPath-Ausdruck

38
Q

Was wird mit der Facette whiteSpace bewirkt?

A

Mit der Facette whiteSpace wird bestimmt, wie die nicht-druckbaren Zeichen (white spaces) einer Zeichenkette zu behandeln sind. Mögliche Werte ihres Attributes value sind:
* replace: Alle Tabulator- und Zeilenendezeichen aus der Repräsentation werden durch Leerzeichen ersetzt.
* collapse: Zusätzlich werden führende und abschließende Leerzeichen unterdrückt und Folgen von Leerzeichen auf ein einziges reduziert.
* preserve: Der Wert bleibt unverändert.

39
Q

Was wird mit der Facette enumeration bewirkt?

A

Bei der enumeration (Aufzählung) wird jeder erlaubte Wert explizit angegeben. Für jeden Wert wird das Element <xs:enumeration> notiert, dessen Attribut value den erlaubten Wert besitzt. Die werte müssen den selben Typ haben wie das base-Attribut

40
Q

Was wird mit der Facette pattern bewirkt?

A

Das Element <xs:pattern> ermöglicht es, über ein festgelegtes Muster, Muster für die lexikalische Repräsentation die zulässigen Werte eines Datentyps einzuschränken. Das Muster wird als Wert des Attributes value notiert und über einen regulären Ausdruck (regular expression) definiert.

41
Q

Was wird mit der Facette assertion bewirkt?

A

In einem einfachen Typ formuliert eine Assertion eine Regel für die Gültigkeit des aktuellen Wertes eines Elementes oder Attributes. Vorgesehen ist hierfür die Facette assertion. Die eigentliche Regel wird als Wert des Attributes test in Form eines XPath-Ausdrucks angegeben. Der XPath-Ausdruck wird während der Validierung der XML-Instanz zu true oder false ausgewertet. Ist das Ergebnis false, ist die geforderte Bedingung nicht erfüllt und die XML-Instanz daher nicht valide.
Der aktuelle Wert des Elements oder Attributs wird dem XPath-Ausdruck mit der Variable $value übergeben.

42
Q

Welche Facetten können bie Zahlentypen, Zeit- und Datumstypen verwendet werden?

A
  • minInclusive: unter eingeschlossene Grenze
  • minExclusive: untere nicht eingeschlossene Grenze
  • maxInclusive: obere eingeschlosssene Grenze
  • maxExclusive: obere nicht eingeschlossene Grenze

Für Dezimalzahlen sind ausserdem erlaubt:
* fractionDigits: maximale Zahl der Nachkommastellen
* totalDigits: maximale Gesamtzahlen der Stellen

43
Q

Welche Facetten können bei Zeichenketten und binären Datentypen verwendet werden?

A
  • length: für die Angabe einer exakten Länge
  • minLength: Angabe der minimalen Länge
  • maxLength: Angabe der maximalen Länge
44
Q

Welche Facetten können bei Datums- und Zeittypen verwendet werden?

A

explizitTimezone: Angabe einer Zeitzone
Mögliche Werte für value sind dabei:
* optional: Angabe der Zeitzone ist optional
* required: Angabe der Zeitzone ist nicht optional
* prohibited: Angabe der Zeitzone ist nicht erlaubt

45
Q

Wie funktioniert die Ableitung durch Auflistung

A

Bei einer Ableitung durch Auflistung wird ein Listen-Datentyp, kurz Listentyp, von einem atomaren Datentyp abgeleitet. Elemente oder Attribute dieses Listentyps dürfen eine durch Whitespace getrennte Sequenz von Werten des atomaren Datentyps enthalten.
Zur Definition eines Listentyps wird das Element <xs:list> verwendet. Der Basistyp wird als Wert des Attributs itemType angegeben. Alternativ dazu kann eine Typdefinition in <xs:list> eingebettet werden.
<xs:simpleType name="AutomarkeListeTyp">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="VW"/>
<xs:enumeration value="Mercedes"/>
<xs:enumeration value="Toyota"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>

46
Q

Wie funktioniert die Ableitung durch Vereinigung

A

Ableitung durch Vereinigung definiert einen Datentyp, dessen Wertebereich die Wertebereiche mehrerer Typen vereinigt. Die in der Vereinigung enthaltenen Typen werden member types genannt.
Zur Definition ist in XML-Schema das Element <xs:union> vorgesehen. Es gibt zwei Schreibweisen, die auch gemischt werden können. Setzt sich der Vereinigungsdatentyp aus existierenden Typen zusammen, wird die durch Leerzeichen getrennte Liste dieser Typen als Wert des Attributes memberTypes notiert. Die zweite Schreibweise erlaubt die direkte Einbettung von Typdefinitionen in das Element<xs:union>.

<xs:simpleType name="ZahlDatumTyp">
<xs:union memberTypes="xs:integer xs:date"/>
</xs:simpleType>

47
Q

Was sind Modell- und Attributgruppen?

A

Benannte Modell- und Attributgruppen dienen der Wiederverwendung von Teilen von Inhaltsmodellen bzw. einer Reihe von gemeinsam auftretenden Attributen. An der ersetzungsstelle wird mit dem Attribut ref auf sie bezug genommen.
Eine Attributgruppe kann als Default-Attributgruppe definiert werden, dann verfügen alle komplexen Typen über die Attribute dieser Gruppe.

48
Q

Wie werden Modellgruppen gebildet und eingesetzt?

A

Zur Definition einer benannten Modellgruppe dient das Element <xs:group>. Die Definition muss global erfolgen und die Gruppe benötigt einen eindeutigen Namen. Innerhalb von <xs:group> wird jetzt ein Inhaltsmodell angegeben, d.h. direktes Kindelement von <xs:group> ist genau einer der Kompositoren <xs:sequence>, <xs:choice> oder <xs:all>. Es gilt folgende Syntax:
<xs:group name="M_Gruppe1">
<!-- <xs:sequence>, <xs:choice> oder <xs:all> -->
</xs:group>
Eine Modellgruppe wird verwendet, indem ebenfalls das Element <xs:group> verwendet wird und im Attribut ref der Name der Elementgruppe notiert wird.
<xs:group ref="M_Gruppe1"/>

49
Q

Wie werden Attributgruppen gebildet und eingesetzt?

A

Treten mehrere Attribute mehrmals bei verschiedenen Elementen zusammen auf, macht es Sinn sie in einer Attributgruppe zusammenzufassen.
Zur Definition einer Attributgruppe dient das Element Attributgruppe <xs:attributeGroup>. Eine Attributgruppe kann beliebig viele Attributdeklarationen und Referenzen auf andere Attributgruppen enthalten. Somit hat die Definition einer Attributgruppe folgende Form:
<xs:attributeGroup name ="A_Gruppe1">
<xs:attribute name="Name1" type="Typ1"/>
<xs:attribute name="Name2" type="Typ2"/>
...
<xs:attributeGroup ref="A_Gruppe2"/>
...
</xs:attributeGroup>
Eine Attributgruppe kann nun über eine Referenz einfach in
einen komplexen Typ oder eine Attributgruppe eingebunden
werden. Dazu wird ebenfalls das Element <xs:attributeGroup> verwendet
und als Wert des Attributes ref wird der Name der Attributgruppe
notiert:
<xs:attributeGroup ref="A_Gruppe1"/>

50
Q

Wie werden Default-Attributgruppen definiert?

A

Ab der Version 1.1 kann eine Attributgruppe als Default-Attributgruppe allen komplexen Typen eines XML-Schemas zugeordnet werden. Dazu wird ihr Name als Wert des Attributes defaultAttributes im Wurzelelement des Schemas <xs:schema> notiert. Sollen diese Default-Attribute bei einem komplexen Element nicht erlaubt sein, muss defaultAttributesApply="false" dem Element <xs:complexType> hinzugefügt werden.

51
Q

Was ist eine Annotation in XML-Schema und wie wird es gebildet?

A

Ähnlich wi mit Kommentaren <!-- --> kann das Element <xs:annotation> zur Dokumentation und Kemmentierung genutzt werden.
Die Annotation hat zwei Kindelemente:
* <xs:documentation>: Dokumentation für menschliche Leser. Die Sprache des Dokumentationstextes kann als Wert des Attributes xml_lang angegeben werden
* <xs:appinfo>: Informationen für Hilfsprogramme oder weiterverarbeitende Applikationen. z.B. weitere Constraints, die mit XML-Schema nicht abgebildet werden können oder Informationen zu Mappings auf andere Strukturen

52
Q

Was sind Fremd-Attribute in XML-Schema und wozu werden sie verwendet?

A

Als Fremd-Attribute werden Attribute mit einem anderen Namensraum, als dem von XML-Schema bezeichnet. Sie können verwendet werden um ein Schema zu dokumentieren.
Der Vorteil liegt in der Knappheit und darin, dass die Kommentare direkt bei den zu kommentierenden Einheiten notiert sind.

53
Q

Was sind Modellierungsstile in XML-Schema und welche 4 gibt es?

A

Modellierungsstile unterscheiden, wie ein XML-Dokument mit XML-Schema erstellt wurde. Je nachdem, ob Elemente vorwiegend lokal oder global oder oder komplexe Typen als anonyme oder benannte globale Typen definiert werden, werden Modellierungsstile unterschieden.
Unterschieden werden:
* Russian Doll (Russische Matroschka)
* Salami slice / flat catalog (Salami-Design / Salami-Taktik)
* Venetian Blind (Jalousie-Design / Venezianischer Spiegel
* Garden of Eden

54
Q

Wie sieht der Modellierungsstil russian doll (Russische Matroschka) aus und wo sind die Vor-(2) und Nachteile(3)?

A

Es gibt nur ein globales Element, alle anderen Elemente werden innerhalb der Inhaltsmodelle lokal deklariert. Komplexe Typen sind daher immer anonyme typen.
Vorteile
* XML-Schema kommt der Struktur einer Dokumentinstanz nahe, es entspricht dem normalen Lesefluss
* Element- und Attributnamen können Lokal gewählt und unabhängig geändert werden

Nachteile
* Gleiche Elemente müssen mehrfach vollständig deklariert werden, was Redundanzen und schlechte Wiederverwendbarkeit zur Folge hat
* Jedes weitere Strukturelement erzeugt einen immer tieferen Syntaxbaum, dies führt bei tiefen Strukturen zu einer schlechten Lesbarkeit
* Da es nur ein globales Eelement gibt, kann es nur Instanzen mit diesem Element als Wurzelelement geben. Eine Modularisierung einer Dokumentinstanz ist also nicht möglich

55
Q

Wie sieht der Modellierungsstil salami slice (Salami-Design) aus und wo sind die Vor-(2) und Nachteile(2)?

A

Alle Ellemente werden global deklariert und innerhalb der komplexen Typen referenziert. Die komplexen Typen sind anonyme Typen.
Dieser Modellierungsstil entspricht in etwa dem Modellierungsstil einer DTD.
Vorteile
* geringere Strukturtiefe als beim russian doll Modell
* Jedes global deklarierte Element kann als Wurzelelement einer Dokumentinstanz verwendet werden. Eine Modularisierung von Dokumentinstanzen ist gut möglich

Nachteile
* Alle Strukturbestandteile müssen dem gleichen namensraum angehören
* Die komplexen Typen können nicht wiederverwendet werden

56
Q

Wie sieht der Modellierungsstil venetian blind (Jalousie-Design) aus und wo sind die Vor-(2) und Nachteile(2)?

A

Die komplexen Typen werden als globale (also benannte) Typen definiert und enthalten lokal definierte Elemente.
Vorteile
* Grössere Flexibilität als die Modellierungsstile russian doll und salami slice, da Typdefinitioen wiederverwendet werden können
* Aufbau von Typhierarchien ist möglich

Nachteile
* Keine Wiederverwendung von Elementdeklarationen
* Da es nur ein globales Element gibt, kann es nur Instanzen mit diesem Element als Wurzelelement geben. Eine Modularisierung einer Dokumentinstanz ist also nicht möglich

57
Q

Wie sieht der Modellierungsstil Garden of Eden aus und wo sind die Vor-(2) und Nachteile(1)?

A

Alle komplexen Typen werden global definiert und alle Elemente global deklariert. Stellt somit eine Kombination aus salami slice und venetian blind dar.
Vorteile
* Grössere Flexibilität als die Modellierungsstile russian doll und venetian blind, da Typdefinitionen wiederverwendet werden können.
* Jedes Global deklarierte Element kann als Wurzelelement einer Dokumentinstanz verwendet werden. Eine Modularisierung von Dokumentinstanzen ist gut möglich

Nachteil
* Dieser Modellierungsstil erzeugt das umfangreichste Schema

58
Q

Wie können benannte komplexe Typen in XML-Schema wiederverwendet werden?

A

Benannte komplexe Typen können wiederverwendet werden, indem sie erweitert oder eingeschränkt werden.
Eine Erweiterung ermöglicht es, Kindelemente und/oder Attribute dem Typ hinzuzufügen, während eine Restriktion den erlaubten Hinhalt und/oder die Attribute eines Typs einschränkt.

59
Q
A
60
Q

Wie funktioniert eine Ableitung durch Erweiterung von komplexen Typen mit komplexem Inhalt?

A

Im abgeleiteten Typ wird innerhalb von <xs:complexType> das Kindelement <xs:complexContent> notiert. Dieses enthält das Kindelement <xs:extension>, in dessen Attribut base der Name des Basistyps angegeben wird. Innerhalb von <xs:extension> werden nun die Erweiterungen des Inhaltsmodells, zusätzliche Attribute und Assertions notiert.
~~~</xs:extension>

<xs:complexType>
<xs:complexContent>
<xs:extension>
Erweiterung Inhaltsmodell
Attributdeklarationen
Assertions (ab 1.1)
</xs:extension>
</xs:complexContent>
</xs:complexType>

~~~

61
Q
A
62
Q

Wie funktioniert eine Ableitung durch Einschränkung von komplexen Typen mit komplexem Inhalt?

A

Bei einer Ableitung durch Einschränkung wird ein benannter komplexer Typ definiert, der das Inhaltsmodell und/oder die Attributdeklarationen seines Basistyps einschränkt und/oder weitere Assertions hinzugefügt.
Im abgeleiteten Typ wird innerhalb von <xs:complexType> das Kindelement <xs:complexContent> notiert. Dieses enthält das Kindelement <xs:restriction>, in dessen Attribut base wird der Name des Basistyps angegeben. Innerhalb von <xs:restriction> werden nun die Einschränkungen des Inhaltsmodells und der Attribute und ggf. Assertions notiert.
~~~

<xs:complexType>
<xs:complexContent>
<xs:restriction>
<!-- Inhaltsmodell (neuerTyp) -->
<!-- Attributdeklarationen (Einschränkung) -->
<!-- Assertions (ab 1.1) -->
</xs:restriction>
</xs:complexContent>
</xs:complexType>

~~~

63
Q

Was ist bei der Ableitung durch Einschränkung von komplexen Typen mit komplexem Inhalt zu beachten?

A
  • Das Inhaltsmodell des abgeleiteten Typs muss vollständig angegeben werden und es muss eine Restriktion des Inhaltsmodells des Basistyps sein.
  • Attribute des Basistyps werden vererbt. Im abgeleiteten Typ müssen also nur die Attribute aufgeführt werden, die eingeschränkt oder entfernt (verboten) werden sollen.
  • Assertions des Basistyps werden vererbt. Enthält der abgeleitete Typ weitere Assertions gelten diese zusätzlich zu den Assertions des Basistyps.
64
Q

Wie funktioniert eine Ableitung durch Einschränkung von komplexen Typen mit einfachem Inhalt?

A

Im abgeleiteten Typ wird innerhalb von <xs:simpleContent> das Kindelement <xs:restriction> notiert, in dessen base-Attribut der Name des Basistyps angegeben wird. Innerhalb von <xs:restriction> können nun Facetten notiert werden, die den erlaubten Inhalt einschränken. Ebenso können Einschränkungen bzgl. der Attribute und ggf. Assertions angegeben werden.
~~~

<xs:complexType>
<xs:simpleContent>
<xs:restriction>
<!-- Facetten -->
<!-- Attributdeklarationen (Einschränkungen) -->
<!-- Assertions (ab 1.1) -->
</xs:restriction>
</xs:simpleContent>
</xs:complexType>

~~~

65
Q

Wie funktioniert eine bedingte Typzuweisung?

A

Für ein Element können verschiedene Typalternativen definiert werden. Welcher Typ in einer Instanz gültig ist, ist abhängig von der Existenz oder den Werten der Attribute dieses Elementes.
Syntax:
~~~

<xs:element>
<xs:alternative></xs:alternative>
<xs:alternative></xs:alternative>
...
</xs:element>

~~~
Die möglichen Typalternativen werden durch <xs:alternative>-Elemente als Kindelemente von <xs:element> angegeben. Die jeweilige Bedingung wird als Wert des Attributes test in Form eines XPath-Ausdrucks formuliert, als Wert des Attributes type wird der in diesem Fall gewünschte Elementtyp angegeben. Als Typ ist ein vordefinierter oder ein benutzerdefinierter einfacher Typ oder ein benannter komplexer Typ erlaubt.

66
Q

Wofür können Namensräume in XML-Schema verwendet werden?

A

In einem XML-Schema kann ein Zielnamensraum, zu dem die deklarierten Komponenten gehören, definiert werden. Mit Attributen aus dem Namensraum für Versionskontrolle kann für Schemakomponenten festgelegt werden, bei welchen Schemaversionen sie berücksichtigt werden sollen.

67
Q

Wie wird in XML-Schema ein Zielnamensraum definiert?

A

Bei der Definition eines XML-Schemas kann ein spezieller Naraum mensraum, der sogenannte Zielnamensraum, für das aktuelle Schema selbst definiert werden.
Syntax:
~~~
<?xml version=”1.0” encoding=”UTF-8”?>

<xs:schema>
<!-- XML-Schema Definitionen und Deklarationen -->
</xs:schema>

~~~
Im Wurzelelement schema wird durch das Attribut targetNamespace der Namensraum angegeben, zu dem die vom Schema definierten Elemente und Attribute gehören sollen. Der Namensraum xmlns="Namensraum_URI" wird zusätzlich als Standardnamensraum eingeführt, damit die deklarierten Elemente und Attribute unqualifiziert, also ohne Präfix, angegeben werden können.

68
Q

Wozu werden die Attribute elementFormDefault und attributeFormDefault verwendet?

A

Als weitere Angaben im Wurzelelement des Schema-Dokumentes können Sie über die optionalen Attribute elementFormDefault und attributeFormDefault festlegen, ob jedem Element oder Attribut, das im Schema lokal deklariert wurde, in einer Dokumentinstanz das Namensraum-Präfix vorangestellt werden muss. Ist dies gewünscht, setzen Sie das entsprechende Attribut auf den Wert qualified. Standardmäßig ist dieser Wert auf unqualified gesetzt.

69
Q

Wie wird eine XML-Instanz zu einem XML-Schema verknüpft?

A

Die Verknüpfung einer XML-Instanz zu einem XML-Schema hat folgende Form:
~~~
<?xml version=”1.0” encoding=”UTF-8”?>

<wurzelelement>
...
</wurzelelement>

~~~
Besitzt ein XML-Schema einen Zielnamensraum, wird in einer Dokumentinstanz über xsi:schemaLocation das Schema referenziert. Als Attributwert von xsi:schemaLocation wird der Zielnamensraum des XML-Schemas und, getrennt durch ein Leerzeichen, file: und der Name der Schema-Datei notiert. Die Angabe file: ist optional. Damit die Elemente in einer XML-Instanz ohne Präfix benannt werden können, wird ihr Namensraum auch in der XML-Instanz als Standardnamensraum festgelegt.

70
Q

Können die gobalen Einstellungen der Attribute elementFormDefault und attributeFormDefault überschrieben werden?

A

Die globalen Einstellungen der Attribute elementFormDefault und attributeFormDefault können durch lokale Angaben gezielt für einzelne Elemente oder Attribute überschrieben werden. Dazu wird innerhalb einer Element- bzw. Attributdeklaration das Attribut form verwendet. form="unqualified" bedeutet, dass das jeweilige Element bzw. Attribut unqualifiziert, form="qualified", dass es qualifiziert in einer Dokumentinstanz auftreten muss.

71
Q

Wie kann eine kompatibilität für weitere XML-Schema Versionen in der Zukunft gewährleistet werden?

A

Um eine Zukunftssicherheit auch für weitere Schemaversionen zu gewährleisten, gibt es einen Mechanismus, um anzuzeigen, dass bestimmte XML-Schema-Komponenten nur bei bestimmten Schemaversionen anwendbar sind. Vorgesehen ist hierfür der Namensraum zur Versionskontrolle (Version Control Namespace). Er wird üblicherweise an das Präfix vc gebunden. In diesem Namensraum sind sechs Attribute minVersion, maxVersion, typeAvailable, typeUnavailable, facetAvailable und facetUnavailable deklariert, die dem Prozessor signalisieren, unter welchen Bedingungen er auf bestimmte Schemakomponenten achten soll.

72
Q

Was sind die vorteile eines Modularisierten XML-Schemas und wie werden die Module verwendet?

A

Es hat viele Vorteile, ein XML-Schema in Module, aufzuteilen. Diese Module sind übersichtlicher, leichter zu warten, besser an eigene Bedürfnisse anzupassen und wiederverwendbar. Beispielsweise kann es sinnvoll sein, Typdefinitionen, insbesondere benutzerdefinierte einfache Datentypen, in einem eigenen Modul abzuspeichern. Auf diese Weise ist also ein Aufbau von Schema-Bibliotheken möglich.
Zur Einbindung von Modulen stellt XML-Schema zwei Elemente zur Verfügung: <xs:include>, wenn das Modul aus dem gleichen Namensraum stammt oder keinen Zielnamensraum hat und <xs:import>, wenn das Modul aus einem anderen Namensraum stammt.
Diese Elemente müssen als direkte Kindelemente von <xs:schema> und gleich zu Beginn, vor allen anderen Definitionen und Deklarationen stehen.

73
Q

Wie werden <xs:include> und <xs:import> verwendet?

A

Mit <xs:include> kann in ein XML-Schema ein weiteres Schema inkludiert werden, das aus dem gleichen Namensraum stammt oder keinen Zielnamensraum hat. Die Syntax lautet:
<xs:include schemaLocation="URI_Schemadatei"/>
Konflikte, die durch die Inklusion auftreten, z. B. Deklaration von globalen Elementen mit gleichem Namen, werden als Fehler betrachtet.

Mit <xs:import> kann in ein XML-Schema ein weiteres Schema eingefügt werden, das aus einem anderen Namensraum stammt. Dem Element werden zwei Attribute hinzugefügt: namespace zur Angabe des Namensraums und schemaLocation zur Angabe der URI unter der sich die Schemadatei befindet.
<xs:import namespace="Namensraum-URI" schemaLocation="URI_Schemadatei"/>
Alle globalen Deklarationen und Typdefinitionen des importierten Schemas können nun referenziert werden.