IBM Books

Extension XML Administration et programmation


Annexes


Annexe A. DTD de fichier DAD

La présente section décrit la DTD (définition ou déclaration de type de document) applicable au fichier DAD (définition d'accès au document). Le fichier DAD est un document constitué d'une arborescence XML et requiert une DTD. Le nom de fichier de la DTD est dxxdad.dtd. La Figure 13 présente la DTD correspondant au fichier DAD. Les éléments de ce fichier sont décrits après la figure.

Figure 13. DTD de fichier 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)>

Le fichier DAD est constitué de quatre éléments principaux :

Xcolumn et Xcollection ont un élément enfant et des attributs qui facilitent le mappage des données XML dans les tables relationnelles de DB2. La liste suivante décrit les éléments principaux et leurs éléments enfants ainsi que leurs attributs. Les exemples de syntaxe sont extraits de la Figure 13.

élément DTDID
Indique l'ID de la DTD stockée dans la table DTD_REF. DTDID pointe vers la DTD qui valide les documents XML ou guide le mappage entre les tables de collection XML et les documents XML. DTDID doit être spécifié pour les collections XML. Pour les colonnes XML, la spécification de DTDID est facultative et n'est nécessaire que si vous voulez créer des tables annexes pour l'indexation d'éléments ou d'attributs ou pour valider des documents XML. DTDID doit être identique à SYSTEM ID spécifié dans le doctype des documents XML.

Syntaxe : <!ELEMENT dtdid (#PCDATA)>

élément validation
Indique si un document XML doit être validé avec la DTD du fichier DAD. Si YES est spécifié, DTDID doit l'être également.

Syntaxe : <!ELEMENT validation(#PCDATA)>

élément Xcolumn
Définit le mode d'indexation d'une colonne XML. Il est constitué de zéro ou plusieurs tables.

Syntaxe : <!ELEMENT Xcolumn (table*)>Xcolumn dispose d'un élément enfant : table.

élément table
Définit une ou plusieurs tables relationnelles créées pour l'indexation d'éléments ou d'attributs de documents stockés dans une colonne XML.

Syntaxe :

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

L'élément table dispose d'un attribut :

attribut name
Spécifie le nom de la table annexe

L'élément table possède un élément enfant :

attribut key
Clé primaire unique de la table.

attribut orderBy
Noms des colonnes qui déterminent l'ordre séquentiel d'un texte à plusieurs éléments récurrents ou valeurs d'attributs lors de la génération de documents XML.

élément column
Spécifie la colonne de la table qui contient la valeur d'un chemin d'emplacement du type spécifié.

Syntaxe :

  <!ATTLIST column  
                     name CDATA #REQUIRED  
                      type CDATA #IMPLIED  
                      path CDATA #IMPLIED  
                       multi_occurrence CDATA #IMPLIED>
L'élément column comprend les attributs suivants :

attribut name
Spécifie le nom de la colonne. Il s'agit de l'alias du chemin d'emplacement qui identifie un élément ou un attribut.

attribut type
Définit le type de données de la colonne. Il peut s'agir de n'importe quel type de données SQL.

attribut path
Affiche le chemin d'emplacement d'un élément ou d'un attribut XML et doit être le chemin d'emplacement simple (voir tableau 3.1.a).

attribut multi_occurrence
Spécifie si cet élément ou attribut peut se reproduire plusieurs fois dans un document XML. Les valeurs admises sont YES ou NO.

Xcollection
Définit le mappage entre les documents XML et une collection XML de tables relationnelles.

Syntaxe : <!ELEMENT Xcollection(SQL_stmt*, prolog, doctype, root_node)>Xcollection détient les éléments enfants suivants :

SQL_stmt
Spécifie l'instruction SQL utilisée par l'Extension XML pour définir la collection. Explicitement, l'instruction sélectionne les données XML dans les tables de collection XML et utilise ces données pour générer les documents XML dans la collection. La valeur de cet élément doit être une instruction SQL valide. Cet élément n'est utilisé que pour la composition, et un seul élément SQL_stmt est autorisé. Pour la décomposition, plusieurs valeurs de SQL_stmt peuvent être spécifiées pour effectuer la création et l'insertion de la table.

Syntaxe : <!ELEMENT SQL_stmt #PCDATA >

prolog
Texte du prologue XML. Le même prologue est fourni pour tous les documents dans toute la collection. La valeur de prolog est fixe.

Syntaxe : <!ELEMENT prolog #PCDATA>

doctype
Définit le texte correspondant à la définition du type de document XML.

Syntaxe : <!ELEMENT doctype #PCDATA | RDB_node>doctype peut être spécifié de l'une des manières suivantes :

  • Définition d'une valeur explicite. Cette valeur est fournie pour tous les documents dans toute la collection.
  • Lors d'une décomposition, spécifiez l'élément enfant, RDB_node, qui peut être mappé et stocké en tant que données de colonne d'une table.
doctype possède un élément enfant :

RDB_node
Mise en oeuvre en cours.

root_node
Définit le noeud racine virtuel. root_node doit avoir un élément enfant, element_node, qui ne peut être utilisé qu'une seule fois. element_node dans la rubrique root_node est en fait l'élément root_node du document XML.

Syntaxe : <!ELEMENT root_node(element_node)>

element_node
Représente un élément XML. Il doit être défini dans la DTD indiquée pour la collection. Dans le cas du mappage du noeud RDB, le noeud d'élément (element_node) racine doit être doté d'une valeur RDB_node pour indiquer toutes les tables contenant des données XML pour lui-même et pour tous ses noeuds enfants. Il peut avoir zéro ou plusieurs noeuds d'attributs (attribute_node) et noeuds d'éléments (element_node) enfants, ainsi que zéro ou un noeud de texte (text_node). Pour les éléments différents de l'élément racine, aucun RDB_node n'est nécessaire.

Syntaxe :

Un element_node est défini par les éléments enfants suivants :

RDB_node
(Facultatif) Spécifie les conditions, la colonne et les tables pour les données XML. Le paramètre RDB_node d'un élément ne doit être défini que pour le mappage du RDB_node. Dans ce cas, une ou plusieurs tables doivent être spécifiées. La colonne n'est pas nécessaire car le contenu de l'élément est spécifié par text_node. La condition est facultative en fonction de la DTD et de la condition de requête.

noeuds enfants
(Facultatif) Un element_node peut également avoir les noeuds enfants suivants :

element_node
Représente les éléments enfants de l'élément XML en cours.

attribute_node
Représente les attributs de l'élément XML en cours.

text_node
Représente le texte CDATA de l'élément XML en cours.

attribute_node
Représente un attribut XML. Il s'agit du noeud définissant le mappage entre un attribut XML et les données de colonne dans une table relationnelle.

Syntaxe :

attribute_node doit comprendre les définitions d'un attribut name et un élément enfant, soit column ou RDB_node. attribute_node comprend l'attribut suivant :

name
Nom de l'attribut.

attribute_node comprend les éléments enfants suivants :

Column
Utilisé pour le mappage SQL. column doit être spécifié dans la clause SELECT de SQL_stmt.

RDB_node
Utilisé pour le mappage RDB_node. Le noeud définit le mappage entre cet attribut et les données de colonne dans la table relationnelle. La table et la colonne doivent être spécifiées. La condition est facultative.

text_node
Représente le texte d'un élément XML. Il s'agit du noeud définissant le mappage entre un contenu d'élément XML et les données de colonne dans une table relationnelle.

Syntaxe : Il doit être défini par un élément enfant column ou RDB_node :

Column
Nécessaire pour le mappage SQL. Dans ce cas, column doit être spécifié dans la clause SELECT de SQL_stmt.

RDB_node
Nécessaire pour le mappage RDB_node. Le noeud définit le mappage entre ce texte et les données de colonne de la table relationnelle. table et column doivent être spécifiés. La condition est facultative.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]