XML Extender Verwaltung und Programmierung


Teil 5. Anhänge


Anhang A. DTD für die DAD-Datei

Dieser Abschnitt beschreibt die Dokumenttypdeklarationen (DTD) für die DAD-Datei. Die DAD-Datei selbst ist ein mit einer Baumstruktur definiertes XML-Dokument; sie erfordert eine DTD. Der Name der DTD-Datei lautet dxxdad.dtd. Abbildung 13 zeigt die DTD für die DAD-Datei. Die Elemente dieser Datei sind im Anschluß an die Abbildung beschrieben.

Abbildung 13. Die DTD für die Dokumentzugriffsdefinition (DAD)

<?xml encoding="US-ASCII"?>
 
  <!ELEMENT DAD (dtdid?, validation, (Xcolumn | Xcollection))>
  <!ELEMENT dtdid (#PCDATA)>
  <!ELEMENT validation (#PCDATA)>
  <!ELEMENT Xcolumn (table*)>
  <!ELEMENT table (column*)>
  <!ATTLIST table name CDATA #REQUIRED
                               key CDATA #IMPLIED
                               orderBy CDATA #IMPLIED>
  <!ELEMENT column EMPTY>
  <!ATTLIST column
                      name CDATA #REQUIRED
                      type CDATA #IMPLIED
                      path CDATA #IMPLIED
                       multi_occurrence CDATA #IMPLIED>
  <!ELEMENT Xcollection (SQL_stmt?, objids?, prolog, doctype, root_node)>
  <!ELEMENT SQL_stmt (#PCDATA)>
  <!ELEMENT objids (column+)>
  <!ELEMENT prolog (#PCDATA)>
  <!ELEMENT doctype (#PCDATA | RDB_node)*>
  <!ELEMENT root_node (element_node)>
  <!ELEMENT element_node (RDB_node*,
                                         attribute_node*,
                                         text_node?,
                                         element_node*,
                                         namespace_node*,
                                         process_instruction_node*,
                                         comment_node*)>
  <!ATTLIST element_node
                     name CDATA #REQUIRED
                      ID CDATA #IMPLIED
                     multi_occurrence CDATA "NO"
                     BASE_URI CDATA #IMPLIED>
  <!ELEMENT attribute_node (column | RDB_node)>
  <!ATTLIST attribute_node
                     name CDATA #REQUIRED>
  <!ELEMENT text_node (column | RDB_node)>
  <!ELEMENT RDB_node (table+, column?, condition?)>
  <!ELEMENT condition (#PCDATA)>
  <!ELEMENT comment_node (#PCDATA)>
  <!ELEMENT namespace_node (EMPTY)>
  <!ATTLIST namespace_node
                      name CDATA #IMPLIED
                     value CDATA #IMPLIED>
  <!ELEMENT process_instruction_node (#PCDATA)>

Die DAD-Datei umfaßt vier wichtige Elemente:

Xcolumn und Xcollection haben untergeordnete Elemente und Attribute, die die Zuordnung von XML-Daten zu relationalen Tabellen in DB2 erleichtern. Die folgende Liste beschreibt die wichtigsten Elemente und ihre untergeordneten Elemente und Attribute. Die Syntaxbeispiele stammen aus Abbildung 13.

DTD-ID-Element
Gibt die ID der in der Tabelle DTD_REF gespeicherten DTD an. DTD-ID verweist auf die DTD, die die Gültigeit der XML-Dokumente prüft oder die Zuordnung zwischen XML-Objektgruppentabellen und XML-Tabellen steuert. DTD-ID muß für XML-Objektgruppen angegeben werden. Für XML-Spalten ist diese Angabe wahlfrei und nur erforderlich, wenn Sie Seitentabellen zum Indexieren von Elementen oder Attributen erstellen oder die Gültigkeit von XML-Eingabedokumenten prüfen wollen. DTD-ID muß mit der SYSTEM-ID übereinstimmen, die im doctype der XML-Dokumente angegeben wurde.

Syntax: <!ELEMENT dtdid (#PCDATA)>

validation-Element
Gibt an, ob die Gültigkeit des XML-Dokuments mit der DTD für die DAD geprüft werden soll. Bei Angabe von YES muß die DTD-ID ebenfalls angegeben werden.

Syntax: <!ELEMENT validation(#PCDATA)>

Xcolumn-Element
Definiert das Indexierungsschema für eine XML-Spalte. Dieses Element umfaßt Null oder mehr Tabellen.

Syntax: <!ELEMENT Xcolumn (table*)>Xcolumn hat ein untergeordnetes Element, table.

table-Element
Definiert ein oder mehrere relationale Tabellen, die für die Indexierung von Elementen oder Attributen der in einer XML-Spalte gespeicherten XML-Dokumente erstellt wurden.

Syntax:

<!ELEMENT table (column+)>
 <!ATTLIST table name CDATA #REQUIRED
		key CDATA #IMPLIED
		orderBy CDATA #IMPLIED>

Das Element table hat ein Attribut:

name-Attribut
Gibt den Namen der Seitentabelle an.

Das Element table hat ein untergeordnetes Element:

key-Attribut
Der singuläre Primärschlüssel der Tabelle

orderBy-Attribut
Die Namen der Spalten, die die Reihenfolge der mehrfach vorkommenden Elementtexte oder Attributwerte beim Generieren von XML-Dokumenten angibt.

column-Element
Gibt die Spalte der Tabelle an, die den Wert eines Standortpfads des angegebenen Typs enthält.

Syntax:

<!ATTLIST column  
           name CDATA #REQUIRED  
           type  CDATA #IMPLIED  
           path  CDATA #IMPLIED  
           multi_occurrence CDATA #IMPLIED>
Das Element column hat die folgenden Attribute:

name-Attribut
Gibt den Namen der Spalte an. Dies ist der Aliasname des Standortpfads, der ein Element oder ein Attribut angibt.

type-Attribut
Definiert den Datentyp der Spalte. Dies kann ein beliebiger SQL-Datentyp sein.

path-Attribut
Zeigt den Standortpfad eines XML-Elements oder -Attributs an; muß der einfache Standortpfad sein, wie in Tabelle 3.1.a.

multi_occurrence-Attribut
Gibt an, ob dieses Element bzw. Attribut in einem Dokument mehrfach auftreten kann. Gültige Werte sind YES oder NO.

Xcollection
Definiert die Zuordnung zwischen XML-Dokumenten und einer XML-Objektgruppe relationaler Tabellen.

Syntax: <!ELEMENT Xcollection(SQL_stmt*, prolog, doctype, root_node)>Xcollection hat die folgenden untergeordneten Elemente:

SQL_stmt
Gibt die SQL-Anweisung an, die der XML Extender zur Definition der Objektgruppe verwendet. Die Anweisung wählt insbesondere XML-Daten aus den XML-Objektgruppentabellen aus und verwendet die Daten zum Generieren der XML-Dokumente in der Objektgruppe. Der Wert dieses Elements muß eine gültige SQL-Anweisung sein. Dieser Angabe wird nur zum Zusammensetzen verwendet, und es ist nur eine einzige SQL_stmt zulässig. Zum Zerlegen können für SQL_stmt mehrere Werte angegeben werden, um das erforderliche Erstellen und Einfügen der Tabelle durchzuführen.

Syntax: <!ELEMENT SQL_stmt #PCDATA >

prolog
Der Text für den XML-Prolog. Es wird für alle Dokumente in der gesamten Objektgruppe derselbe Prolog verwendet. Der Wert von prolog ist festgelegt.

Syntax: <!ELEMENT prolog #PCDATA>

doctype
Definiert den Text für die Dokumenttypdefinition des XML-Dokuments.

Syntax: <!ELEMENT doctype #PCDATA | RDB_node>doctype kann auf eine der folgenden Arten angegeben werden:

  • Definieren eines expliziten Werts. Dieser Wert wird für alle Dokumente in der gesamten Objektgruppe verwendet.
  • Geben Sie beim Zerlegen das untergeordnete Element RDB_node an, das den Spaltendaten einer Tabelle zugeordnet und auch so gespeichert werden kann.
doctype hat ein untergeordnetes Element:

RDB_node
Noch nicht implementiert.

root_node
(Stammknoten) Definiert den virtuellen Root-Knoten. root_node muß ein untergeordnetes Element element_node haben, das nur ein Mal verwendet werden kann. Der element_node unter dem root_node ist der root_node des XML-Dokuments.

Syntax: <!ELEMENT root_node(element_node)>

element_node
(Elementknoten) Steht für ein XML-Element. Muß in der für die Objektgruppe angegebenen DTD definiert sein. Für die RDB_node-Zuordnung muß der Root-element_node einen RDB_node haben, der alle Tabellen mit XML-Daten und alle untergeordneten Knoten angibt. Er kann Null oder mehr attribute_nodes und untergeordnete element_nodes sowie Null oder einen text_node haben. Für andere Element als das Root-Element ist kein RDB_node erforderlich.

Syntax:

Ein element_node ist durch die folgenden untergeordneten Elemente definiert:

RDB_node
(Wahlfrei) Gibt Tabellen, Spalten und Bedingungen für XML-Daten an. Der RDB_node für ein Element muß nur für die RDB_node-Zuordnung definiert werden. In diesem Fall müssen eine oder mehrere Tabellen angegeben werden. Die Spalte ist nicht erforderlich, da der Elementinhalt durch seinen text_node angegeben ist. Die Bedingung ist wahlfrei, je nach der DTD und der Abfragebedingung.

child nodes
(Wahlfrei) Ein element_node kann auch die folgenden untergeordneten Knoten haben:

element_node
(Elementknoten) Steht für untergeordnete Elemente des aktuellen XML-Elements

attribute_node
(Attributknoten) Steht für Attribute des aktuellen XML-Elements

text_node
(Textknoten) Steht für den CDATA-Text des aktuellen XML-Elements

attribute_node
(Attributknoten) Steht für ein XML-Attribut. Dies ist der Knoten, der die Zuordnung zwischen einem XML-Attribut und den Spaltendaten in einer relationalen Tabelle definiert.

Syntax:

Der attribute_node muß Definitionen für ein name-Attribut haben sowie ein untergeordnetes Element column oder RDB_node. attribute_node hat die folgenden Attribute:

name
Der Name des Attributs.

attribute_node hat die folgenden untergeordneten Elemente:

Column
Für die SQL-Zuordnung verwendet. Die Spalte muß in der SELECT-Klausel von SQL_stmt angegeben werden.

RDB_node
Für die RDB_node-Zuordnung verwendet. Der Knoten definiert die Zuordnung zwischen diesem Attribut und den Spaltendaten in der relationalen Tabelle. Die Tabelle und die Spalte müssen angegeben werden. Die Bedingung ist wahlfrei.

text_node
(Textknoten) Steht für den Textinhalt eines XML-Elements. Dies ist der Knoten, der die Zuordnung zwischen einem XML-Elementinhalt und den Spaltendaten in einer relationalen Tabelle definiert.

Syntax: Er muß über ein untergeordnetes Element column oder RDB_node definiert werden:

Column
Für die SQL-Zuordnung erforderlich. In diesem Fall muß die Spalte in der SELECT-Klausel von SQL_stmt angegeben sein.

RDB_node
Für die RDB_node-Zuordnung erforderlich. Der Knoten definiert die Zuordnung zwischen diesem Textinhalt und den Spaltendaten in der relationalen Tabelle. Die Tabelle und die Spalte müssen angegeben werden. Die Bedingung ist wahlfrei.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]