IBM Books

Administración y programación


Apéndices


Apéndice A. DTD para el archivo DAD

Esta sección describe las DTD (declaraciones de tipo de documento) del archivo DAD (archivo de definición de acceso a documento). El propio archivo DAD es un documento XML con estructura arborescente y necesita una DTD. El nombre del archivo DTD es dxxdad.dtd. La Figura 13 muestra la DTD del archivo DAD. Los elementos de este archivo se describen en la figura siguiente.

Figura 13. Declaraciones DTD de la DAD (definición de acceso a documento)

<?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)>

El archivo DAD tiene cuatro elementos principales:

Xcolumn y Xcollection tienen elementos y atributos asociados que ayudan a correlacionar datos XML con tablas relacionales de DB2. La lista siguiente describe los elementos principales y sus elementos y atributos asociados. Los ejemplos de sintaxis proceden de la Figura 13.

elemento DTDID
Especifica el ID de la DTD almacenada en la tabla DTD_REF. DTDID apunta a la DTD que valida los documentos XML o dirige la correlación entre tablas de colección XML y documentos XML. Es obligatorio especificar el DTDID para colecciones XML. Es opcional especificarlo para columnas XML y sólo es necesario si desea crear tablas secundarias para indexar elementos o atributos, o si desea validar documentos XML de entrada. DTDID debe ser igual al ID de sistema (SYSTEM ID) especificado en doctype para los documentos XML.

Sintaxis: <!ELEMENT dtdid (#PCDATA)>

elemento validation
Indica si el documento XML se debe validar mediante la DTD de la DAD. Si se especifica YES, entonces también debe especificarse el DTDID.

Sintaxis: <!ELEMENT validation(#PCDATA)>

elemento Xcolumn
Define el esquema de indexación para una columna XML. Consta de 0, 1 o más tablas.

Sintaxis: <!ELEMENT Xcolumn (table*)>Xcolumn tiene un elemento hijo, table.

elemento table
Define una o más tablas relacionales creadas para indexar elementos o atributos de documentos contenidos en una columna XML.

Sintaxis:

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

El elemento table tiene un solo atributo:

atributo name
Especifica el nombre de la tabla secundaria.

El elemento table tiene un solo elemento hijo:

atributo key
Es la clave única primaria de la tabla

atributo orderBy
Son los nombres de las columnas que determinan el orden secuencial de elementos o atributos que aparecen varias veces al generar documentos XML.

elemento column
Especifica la columna de la tabla que contiene el valor de una vía de ubicación del tipo especificado.

Sintaxis:

<!ATTLIST column
                     name CDATA #REQUIRED
                     type  CDATA #IMPLIED
                     path  CDATA #IMPLIED
                     multi_occurrence CDATA #IMPLIED>
El elemento column tiene los atributos siguientes:

atributo name
Especifica el nombre de la columna. Es el seudónimo de la vía de ubicación que sirve para identificar un elemento o atributo.

atributo type
Define el tipo de datos de la columna. Puede ser un tipo de datos cualquiera del SQL.

atributo path
Muestra la vía de ubicación de un elemento o atributo XML y debe ser la vía de ubicación simple tal como está especificada en la Tabla 3.1.a (enlace fijo).

atributo multi_occurrence
Indica si el elemento o atributo puede aparecer más de una vez en un documento XLM. Los valores son YES o NO.

Xcollection
Define la correlación existente entre documentos XML y una colección XML de tablas relacionales.

Sintaxis: <!ELEMENT Xcollection(SQL_stmt*, prolog, doctype, root_node)>Xcollection tiene los elementos asociados siguientes:

SQL_stmt
Especifica la sentencia de SQL que el XML Extender utiliza para definir la colección. En concreto, la sentencia selecciona datos XML de las tablas de colección XML, y utiliza los datos para generar los documentos XML de la colección. El valor de este elemento debe ser una sentencia de SQL válida. Sólo se utiliza en la generación de documentos, y sólo está permitido un único valor de SQL_stmt. Para la descomposición de documentos, se puede especificar más de un valor de SQL_stmt para realizar la creación e inserción de tablas necesaria.

Sintaxis: <!ELEMENT SQL_stmt #PCDATA >

prolog
Es el texto del prólogo XML. Se proporciona el mismo prólogo a todos los documentos de la colección completa. El valor de prolog es fijo.

Sintaxis: <!ELEMENT prolog #PCDATA>

doctype
Define el texto para la definición del tipo de documento XML.

Sintaxis: <!ELEMENT doctype #PCDATA | RDB_node>doctype se puede especificar en una de las maneras siguientes:

  • Para definir un valor explícito. Este valor se proporciona a todos los documentos de la colección completa.
  • Cuando se utiliza la descomposición de documentos, para especificar el elemento hijo RDB_node, que se puede correlacionar con datos de columna de una tabla y almacenar como datos de columna.
doctype tiene un solo elemento hijo:

RDB_node
No está implantado todavía.

root_node
Define el nodo raíz virtual. root_node debe tener un elemento hijo obligatorio, element_node, que se puede utilizar una sola vez. El elemento element_node situado dentro de root_node es en realidad el nodo raíz del documento XML.

Sintaxis: <!ELEMENT root_node(element_node)>

element_node
Representa un elemento XML. Debe estar definido en la DTD especificada para la colección. Si se utiliza la correlación de nodo_RDB, el nodo de elemento raíz debe tener un nodo RDB para especificar todas las tablas que contienen datos XML para el nodo raíz y todos sus nodos asociados. Puede haber 0, 1 o más nodos de atributo y nodos de elemento asociados, así como 0 ó 1 nodos de texto. Para los elementos que no sean el elemento raíz no es necesario ningún nodo RDB.

Sintaxis:

Un nodo de elemento está definido por los elementos asociados siguientes:

RDB_node
(Opcional) Especifica tablas, columnas y condiciones para datos XML. El RDB_node de un elemento sólo necesita definirse para la correlación de nodo_RDB. En este caso, se deben especificar una o más tablas. La columna no es necesaria, pues el contenido del elemento está especificado por su text_node. La condición es opcional, dependiendo de la DTD y de la condición de consulta.

nodos asociados
(Opcional) Un element_node pueden también tener los nodos asociados siguientes:

element_node
Representa elementos asociados del elemento XML actual

attribute_node
Representa atributos del elemento XML actual

text_node
Representa el texto CDATA del elemento XML actual

attribute_node
Representa un atributo XML. Es el nodo que define la correlación entre un atributo XML y los datos de columna de una tabla relacional.

Sintaxis:

El attribute_node debe tener definiciones para un atributo name y un elemento hijo column o RDB_node. attribute_node tiene el atributo siguiente:

name
Es el nombre del atributo.

attribute_node tiene los elementos asociados siguientes:

Column
Se utiliza para la correlación SQL. La columna se debe especificar en la cláusula SELECT de SQL_stmt.

RDB_node
Se utiliza para la correlación de nodo_RDB. El nodo define la correlación entre el atributo y los datos de columna de la tabla relacional. Se deben especificar la tabla y la columna. La condición es opcional.

text_node
Representa el contenido de texto de un elemento XML. Es el nodo que define la correlación entre el contenido de un elemento XML y los datos de columna de una tabla relacional.

Sintaxis: Debe estar definido por un elemento hijo column o RDB_node:

Column
Es necesario para la correlación SQL. En este caso, la columna se debe especificar en la cláusula SELECT de SQL_stmt.

RDB_node
Es necesario para la correlación de nodo_RDB. El nodo define la correlación entre el contenido de texto y los datos de columna de la tabla relacional. Se deben especificar la tabla y la columna. La condición es opcional.


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]