IBM Books

Administración y programación


Trabajar con colecciones XML

Para configurar colecciones XML es necesario crear un esquema de correlación y, opcionalmente, habilitar la colección con un nombre virtual que asocia las tablas DB2 con un archivo DAD.

Aunque habilitar la colección XML no es obligatorio, proporciona un mejor rendimiento.

Creación o edición del archivo DAD para el esquema de correlación

Si se utilizan colecciones XML es necesario crear un archivo DAD. El archivo DAD define la relación existente entre datos XML y varias tablas relacionales. El XML Extender utiliza el archivo DAD para:

Puede utilizar dos métodos para correlacionar datos entre las tablas XML y la tabla DB2: la correlación SQL y la correlación de nodo_RDB:

Correlación SQL
Utiliza un elemento de sentencia de SQL para especificar la consulta SQL que obtiene las tablas y columnas utilizadas para contener los datos XML. La correlación SQL sólo se puede utilizar para componer documentos XML.

Correlación de nodo_RDB
Utiliza un elemento exclusivo del XML Extender, el nodo de Base de datos relacional, o nodo_RDB, que especifica tablas, columnas, condiciones y secuencias de ordenación para los datos XML. La correlación de nodo_RDB permite realizar correlaciones más complejas que las efectuadas mediante una sentencia de SQL. La correlación de nodo_RDB se puede utilizar tanto para componer como para descomponer documentos XML.

Ambos métodos de correlación utilizan el modelo de datos XPath, que se describe en El archivo DAD.

Antes de comenzar

Composición de documentos XML con correlación SQL

Utilice correlación SQL cuando componga documentos XML y desee utilizar SQL.

Utilización del asistente de administración

Efectúe los pasos siguientes para crear un archivo DAD utilizando una correlación SQL para las colecciones XML.

Para crear un archivo DAD para componerlo utilizando correlación SQL:

Utilice correlación SQL cuando componga documentos XML y desee utilizar una sentencia de SQL para definir la tabla y las columnas de las cuales procederán los datos del documento XML.

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con archivos DAD desde la ventana Área de ejecución. Se visualizará la ventana Especificar DAD.
  3. Elija si desea editar un archivo DAD existente o crear uno nuevo.

    Para crear un nuevo archivo DAD:

    1. Deje el campo Nombre de archivo en blanco.
    2. Desde el menú Tipo, seleccione Correlación SQL para colecciones XML.
    3. Pulse Siguiente para abrir la ventana Seleccionar validación.

    Para editar un archivo DAD existente:

    1. Escriba el nombre de archivo DAD en el campo Nombre de archivo o pulse ... para localizar un archivo DAD existente.
    2. Verifique que el asistente reconoce el archivo DAD especificado.
      • Si el asistente reconoce el archivo DAD especificado, puede seleccionar Siguiente y el campo Tipo muestra Correlación SQL para colecciones XML.
      • Si el asistente no reconoce el archivo DAD especificado, no se puede seleccionar Siguiente. Escriba de nuevo el nombre de archivo DAD o pulse ... para localizar de nuevo un archivo DAD existente. Corrija los valores del campo de entrada hasta que sea seleccionable Siguiente.
    3. Pulse Siguiente para abrir la ventana Seleccionar validación.
  4. En la ventana Seleccionar validación, elija si desea validar los documentos XML con una DTD.
  5. Pulse Siguiente para abrir la ventana Especificar texto.
  6. Escriba el nombre del prólogo en el campo Prólogo para especificar el prólogo del documento XML que debe componerse.
    <?xml versión="1.0"?>
    

    Si está editando una DAD existente, el prólogo se visualiza automáticamente en el campo Prólogo.

  7. Escriba el tipo de documento del documento XML en el campo Tipo de documento de la ventana Especificar texto, apuntando a la DTD para el documento XML. Por ejemplo:
    ! DOCTYPE DAD SYSTEM "c:\dxx\samples\dtd\getstart.dtd"
    

    Si está editando una DAD existente, el tipo de documento se visualiza automáticamente en el campo Tipo de documento.

  8. Pulse Siguiente para abrir la ventana Especificar sentencia de SQL.
  9. Escriba una sentencia SELECT válida de SQL en el campo Sentencia de SQL. Por ejemplo:
       SELECT o.order_key, customer_name, customer_email, p.part_key, color, quantity, 
       price, tax, ship_id, date, mode from order_tab o, part_tab p, 
       table (select substr(char(timestamp(generate_unique())),16) 
         as ship_id, date, mode, part_key from ship_tab) s 
             WHERE o.order_key = 1 and 
                   p.price > 20000 and 
                   p.order_key = o.order_key and 
                   s.part_key = p.part_key 
             ORDER BY order_key, part_key, ship_id
     
    

    Si está editando una DAD existente, la sentencia de SQL se visualiza automáticamente en el campo Sentencia de SQL.

  10. Pulse Probar SQL para verificar la validez de la sentencia de SQL.
  11. Pulse Siguiente para abrir la ventana Correlación SQL.
  12. Seleccione un nodo de elemento o atributo desde el que desee correlacionar pulsando sobre el mismo en el área izquierda de la ventana Correlación SQL.

    Correlacione los elementos y atributos del documento XML con nodos de elemento y atributo correspondientes a los datos DB2. Estos nodos proporcionan una vía de acceso desde los datos XML a los datos DB2.

  13. En el campo Nombre de archivo de la ventana Especificar DAD, escriba un nombre de archivo de salida para el archivo DAD modificado.
  14. Pulse Finalizar para volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

Utilice notación de correlación SQL cuando componga documentos XML y desee utilizar SQL.

El archivo DAD es un archivo XML que puede crear utilizando un editor de texto cualquiera. Las instrucciones siguientes proceden del apéndice de ejemplos, Archivos de definición de acceso a documento. Consulte esos ejemplos para obtener una información más completa y de contexto.

  1. Abra un editor de texto.
  2. Cree la cabecera de DAD:
    <?xml versión="1.0"?>
    <!DOCTYPE DAD SYSTEM "path\dad.dtd"> --> vía de acceso y nombre de
    archivo de la DTD para la DAD
    
  3. Inserte los códigos <DAD></DAD>.
  4. A continuación del código <DAD>, especifique el ID de DTD que asocia el archivo DAD con la DTD del documento XML.
    <dtdid>vía\nombre_dtd.dtd> --> vía de acceso y nombre
    de archivo de la DTD para la aplicación
    
  5. Especifique si desea realizar la validación (es decir, utilizar una DTD para asegurarse de que el documento XML es válido). Por ejemplo:
    <validation>NO</validation> --> especifique YES o NO
    
  6. Utilice el elemento <Xcollection> para definir el método de acceso y de almacenamiento como colección XML. Los métodos de acceso y de almacenamiento definen que el contenido del documento XML deriva de los datos almacenados en tablas DB2.
    <Xcollection>
    </Xcollection>
    
  7. Especifique una o más sentencias SQL para consultar datos de tablas DB2 o insertarlos en ellas. Vea Requisitos del esquema de correlación para obtener directrices. Por ejemplo, especifique una única consulta de SQL como la del ejemplo siguiente:
     <SQL_stmt> 
       SELECT o.order_key, customer_name, customer_email, p.part_key, color, quantity, 
       price, tax, ship_id, date, mode from order_tab o, part_tab p, 
       table (select substr(char(timestamp(generate_unique())),16) 
         as ship_id, date, mode, part_key from ship_tab) s 
             WHERE o.order_key = 1 and 
                   p.price > 20000 and 
                   p.order_key = o.order_key and 
                   s.part_key = p.part_key 
             ORDER BY order_key, part_key, ship_id
     </SQL_stmt> 
    
  8. Añada la información de prólogo siguiente:
    <prolog>?xml versión="1.0"?</prolog>
    
    Este texto exacto es necesario.
  9. Añada los códigos <doctype></doctype>. Por ejemplo:
    <doctype>! DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype>
    
  10. Defina el nodo raíz utilizando los códigos <root_node></root_node>. Dentro del nodo raíz, especifique los elementos y atributos que forman el documento XML.
  11. Correlacione los elementos y atributos del documento XML con nodos de elemento y atributo correspondientes a los datos DB2. Estos nodos proporcionan una vía de acceso desde los datos XML a los datos DB2.
    1. Defina un <element_node> (nodo de elemento) para cada elemento del documento XML que se correlacione con una columna de una tabla DB2.
      <element_node
      name="nombre"></element_node>
      

      Un element_node (nodo de elemento) puede tener los nodos siguientes.

      • nodo_de_atributo
      • nodo_de_elemento hijo
      • nodo_de_texto
    2. Defina un <attribute_node> (nodo de atributo) para cada atributo del documento XML que se correlacione con una columna de una tabla DB2. Vea las DTD de ejemplo proporcionadas al principio de esta sección para la correlación SQL, así como la DTD para el archivo DAD en el Apéndice A, DTD para el archivo DAD, que proporciona la sintaxis completa para el archivo DAD.

      Por ejemplo, necesita una clave de atributo para un elemento <Order> (Pedido). El valor de la clave se guarda en una columna PART_KEY.

      Archivo DAD: En el archivo DAD, cree un nodo de atributo para la clave e indique la tabla donde debe guardarse el valor 1.

      <attribute_node name="key">
          <column name="part_key"/>  
      </attribute_node>
      

      Documento XML compuesto: El valor de la clave se toma de la columna PART_KEY.

      <Order key="1"> 
      
  12. Cree un <text_node> (nodo de texto) para cada elemento o atributo cuyo contenido derive de una tabla DB2. El nodo de texto tiene un elemento <column> que especifica de qué columna se proporcionará el contenido.

    Por ejemplo, puede tener un elemento XML <Tax> con un valor que se tomará de una columna llamada TAX (IMPUESTO):

    elemento de DAD:

    <element_node name="Tax"> 
       <text_node> 
             <column name="tax"/>
       </text_node> 
    </element_node> 
    

    El nombre de columna debe estar en la sentencia SQL al principio del archivo DAD.

    Documento XML compuesto:

    <Tax>0.02</Tax>
    

    El valor 0.02 derivará de la columna TAX.

  13. Compruebe que hay un código final </root_node> a continuación del último código </element_node>.
  14. Compruebe que hay un código final </Xcollection> a continuación del código </root_node>.
  15. Compruebe que hay un código final </DAD> a continuación del código </Xcollection>.

Composición de documentos XML con correlación de nodo_RDB

Utilice correlación de nodo_RDB para componer documentos XML utilizando una estructura similar a XML.

Este método utiliza el <RDB_node> (nodo RDB) para especificar tablas, columnas y condiciones de DB2 para un nodo de elemento o de atributo. <RDB_node> utiliza los elementos siguientes:

Los elementos asociados que se utilizan en <RDB_node> dependen del contexto del nodo y siguen las normas siguientes:
Si el tipo de nodo es: Se utiliza el elemento hijo RDB:

Tabla Columna Condición1
Elemento raíz S N S
Atributo S S opcional
Texto S S opcional
(1) Necesario si se utilizan varias tablas

Utilización del asistente de administración

Para crear una DAD para la composición, utilizando la correlación de nodo_RDB:

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con archivos DAD desde la ventana Área de ejecución. Se visualizará la ventana Especificar DAD.
  3. Elija si desea editar un archivo DAD existente o crear uno nuevo.

    Para editar una DAD existente:

    1. Escriba el nombre de archivo DAD en el campo Nombre de archivo o pulse ... para localizar un archivo DAD existente.
    2. Verifique que el asistente reconoce el archivo DAD especificado.
      • Si el asistente reconoce el archivo DAD especificado, puede seleccionar Siguiente y el campo Tipo muestra Correlación de nodo_RDB para colecciones XML.
      • Si el asistente no reconoce el archivo DAD especificado, no se puede seleccionar Siguiente. Escriba de nuevo el nombre del archivo DAD en el campo Nombre de archivo o pulse ... para volver a localizar un archivo DAD existente. Repita estos pasos hasta que pueda seleccionar Siguiente.
    3. Pulse Siguiente para abrir la ventana Seleccionar validación.

    Para crear una DAD nueva:

    1. Deje el campo Nombre de archivo en blanco.
    2. En el menú Tipo, seleccione Correlación de nodo_RDB para colecciones XML.
    3. Pulse Siguiente para abrir la ventana Seleccionar validación.
  4. En la ventana Seleccionar validación, elija si desea validar los documentos XML con una DTD.
  5. Pulse Siguiente para abrir la ventana Especificar texto.
  6. Escriba el nombre del prólogo en el campo Prólogo de la ventana Especificar texto.
    <?xml versión="1.0"?>
    

    Si está editando una DAD existente, el prólogo se visualiza automáticamente en el campo Prólogo.

  7. Escriba el tipo de documento del documento XML en el campo Tipo de documento de la ventana Especificar texto.

    Si está editando una DAD existente, el tipo de documento se visualiza automáticamente en el campo Tipo de documento.

  8. Pulse Siguiente para abrir la ventana Correlación RDB.
  9. Seleccione un nodo de elemento o atributo desde el que desee correlacionar pulsando sobre el mismo en el campo situado a la izquierda de la ventana Correlación RDB.

    Correlacione los elementos y atributos del documento XML con nodos de elemento y atributo correspondientes a datos DB2. Estos nodos proporcionan una vía de acceso desde los datos XML a los datos DB2.

  10. Para añadir el nodo raíz:
    1. Seleccione el icono Raíz.
    2. Pulse Nuevo elemento para definir un nuevo nodo.
    3. En el recuadro Detalles, especifique Tipo de nodo como Elemento.
    4. Entre el nombre del nodo de nivel superior del campo Nombre de nodo.
    5. Pulse Añadir para crear el nuevo nodo.

      Ha creado el nodo raíz o elemento, que es el padre de los demás nodos de elemento o atributo de la correlación. El nodo raíz tiene elementos asociados de tabla y una condición de unión.

    6. Añada nodos de tabla para cada tabla que forme parte de la colección.
      1. Resalte el nombre del nodo raíz y seleccione Nuevo elemento.
      2. En el recuadro Detalles, especifique Tipo de nodocomo Tabla.
      3. Seleccione el nombre de la tabla desde Nombre de tabla. La tabla ya debe existir.
      4. Pulse Añadir para añadir el nodo de tabla.
      5. Repita estos pasos para cada tabla.
    7. Añada una condición de unión para los nodos de tabla.
      1. Resalte el nombre del nodo raíz y seleccione Nuevo elemento.
      2. En el recuadro Detalles, especifique Tipo de nodo como Condición.
      3. En el campo Condición, entre la condición de unión utilizando la sintaxis siguiente:
        nombre_tabla.columna_tabla = nombre_tabla.columna_tabla AND
        nombre_tabla.columna_tabla = nombre_tabla.columna_tabla ...
        
      4. Pulse Añadir para añadir la condición.
  11. Para añadir un nodo de elemento o de atributo:
    1. Pulse sobre un nodo padre del campo de la izquierda para añadir un elemento o atributo asociado.
    2. Pulse Nuevo elemento.Si no ha seleccionado ningún nodo padre, no se podrá seleccionar Nuevo elemento.
    3. En el recuadro Detalles, seleccione un tipo de nodo en el menú Tipo de nodo.

      El menú Tipo de nodo muestra sólo los tipos de nodo que son válidos para el lugar seleccionado del mapa. Elemento o Atributo.

    4. Especifique un nombre de nodo en el campo Nombre de nodo.
    5. Pulse Añadir para añadir el nuevo nodo.
    6. Para correlacionar el contenido de un nodo de elemento o de atributo con una tabla relacional:
      1. Especifique un nodo de texto.
        1. Pulse sobre el nodo padre.
        2. Pulse Nuevo elemento.
        3. En el campo Tipo de nodo, seleccione Texto.
        4. Seleccione Añadir para añadir el nodo.
      2. Añada un nodo de tabla.
        1. Seleccione el nodo de texto que acaba de crear y pulse Nuevo elemento.
        2. En el campo Tipo de nodo, seleccione Tabla y especifique un nombre de tabla para el elemento.
        3. Pulse Añadir para añadir el nodo.
      3. Añada un nodo de columna.
        1. Seleccione de nuevo el nodo de texto y pulse Nuevo elemento.
        2. En el campo Tipo de nodo, seleccione Columna y especifique un nombre de columna para el elemento.
        3. Pulse Añadir para añadir el nodo.

        Restricción: No puede utilizar el asistente de administración para crear nuevas columnas. Si especifica Columna como tipo de nodo, sólo puede seleccionar una columna que ya exista en su base de datos DB2.

      4. Opcionalmente, añada una condición para la columna.
        1. Seleccione de nuevo el nodo de texto y pulse Nuevo elemento.
        2. En el campo Tipo de nodo, seleccione Condición y la condición con la sintaxis:
          operador LIKE|<|>|= valor
          
        3. Pulse Añadir para añadir el nodo.
    7. Continúe editando la correlación RDB o pulse Siguiente para abrir la ventana Especificar DAD.
  12. Para eliminar un nodo:
    1. En el área izquierda de la ventana, pulse sobre un nodo.
    2. Pulse Eliminar.
    3. Continúe editando la correlación de nodo_RDB o pulse Siguiente para abrir la ventana Especificar DAD.
  13. En el campo Nombre de archivo de la ventana Especificar DAD, escriba un nombre de archivo de salida para la DAD modificada.
  14. Pulse Finalizar para eliminar el nodo y volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

El archivo DAD es un archivo XML que puede crear utilizando un editor de texto cualquiera. Las instrucciones siguientes proceden del apéndice de ejemplos, Archivos de definición de acceso a documento. Consulte esos ejemplos para obtener una información más completa y de contexto.

  1. Abra un editor de texto.
  2. Cree la cabecera de DAD:
    <?xml versión="1.0"?>
    <!DOCTYPE DAD SYSTEM "path\dad.dtd"> --> vía de acceso y nombre de
    archivo de la DTD para la DAD
    
  3. Inserte los códigos <DAD></DAD>.
  4. A continuación del código <DAD>, especifique el ID de DTD que asocia el archivo DAD con la DTD del documento XML.
    <dtdid>vía\nombre_dtd.dtd> --> vía
    de acceso y nombre de archivo de la DTD
                                         para la aplicación
    
  5. Especifique si desea realizar la validación (es decir, utilizar una DTD para asegurarse de que el documento XML es válido). Por ejemplo:
    <validation>NO</validation> --> especifique YES o NO
    
  6. Utilice el elemento <Xcollection> para definir el método de acceso y de almacenamiento como colección XML. Los métodos de acceso y de almacenamiento definen que los datos XML se guardan en una colección de tablas DB2.
    <Xcollection>
    </Xcollection>
    
  7. Añada la información de prólogo siguiente:
    <prolog>?xml versión="1.0"?</prolog>
    
    Este texto exacto es necesario.
  8. Añada los códigos <doctype></doctype>. Por ejemplo:
    <doctype>! DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype>
    
  9. Defina el nodo raíz utilizando <root_node>. Dentro del nodo raíz, especifique los elementos y atributos que forman el documento XML.
  10. Correlacione los elementos y atributos del documento XML con nodos de elemento y atributo correspondientes a los datos DB2. Estos nodos proporcionan una vía de acceso desde los datos XML a los datos DB2.
    1. Defina un element_node raíz. Este element_node contiene:
      • Un RDB_node que especifica table_nodes con una condición de unión para especificar la colección
      • Elementos asociados
      • Atributos
      Para especificar los nodos de tabla y la condición:
      1. Cree un elemento RDB_node: Por ejemplo:
              <RDB_node>
              </RDB_node>
        
      2. Defina un <table_node> para cada tabla que contenga datos que deban incluirse en el documento XML. Por ejemplo, si tiene tres tablas, ORDER_TAB, PART_TAB y SHIP_TAB, con datos de columnas que deban estar en el documento, cree un nodo de tabla para cada una de ellas. Por ejemplo:
        <RDB_node>
        <table name="ORDER_TAB">
        <table name="PART_TAB">
        <table name="SHIP_TAB"></RDB_node>
        
      3. Opcionalmente, especifique una columna de clave para cada tabla cuando tenga planeado habilitar esta colección. El atributo de clave no suele ser necesario para la composición; no obstante, cuando habilite una colección, el archivo DAD utilizado deberá dar soporte a la composición y a la descomposición. Por ejemplo:
        <RDB_node>
        <table name="ORDER_TAB" key="order_key"> 
        <table name="PART_TAB" key="part_key">
        <table name="SHIP_TAB" key="date mode">
        </RDB_node>
        
      4. Defina una condición de unión para las tablas de la colección. La sintaxis es la siguiente
        expresión = expresión AND
        expresión = expresión
        
        Por ejemplo:
        <RDB_node>
        <table name="ORDER_TAB">
        <table name="PART_TAB">
        <table name="SHIP_TAB">
        <condition>
           order_tab.order_key = part_tab.order_key AND
           part_tab.part_key = ship_tab.part_key
        </condition>
        </RDB_node>
        
    2. Defina un código <element_node> para cada elemento del documento XML que se correlacione con una columna de una tabla DB2. Por ejemplo:
      <element_node name="nombre">
      </element_node> 
      

      Un nodo de elemento puede tener uno de los tipos de elementos siguientes:

      • <text_node>: para especificar que el elemento tiene contenido para una tabla DB2; el elemento no tiene elementos asociados
      • <attribute_node>: para especificar un atributo. Los nodos de atributo se definen en el paso siguiente.

      text_node contiene un <RDB_node> para correlacionar el contenido con un nombre de columna y tabla DB2.

      Los RDB_nodes se utilizan para elementos de nivel inferior que tienen contenido para correlacionar con una tabla DB2. Un RDB_node tiene los siguientes elementos asociados.

      • <table>: define la tabla que corresponde al elemento
      • <column>: define la columna que contiene el elemento correspondiente y especifica el tipo de columna con el atributo de tipo
      • <condition>: opcionalmente, especifica una condición para la columna

      Por ejemplo, puede tener el elemento XML <Tax> que se correlaciona con una columna llamada TAX (impuesto):

      Documento XML:

      <Tax>0.02</Tax>
      

      En este caso, desea que la columna TAX contenga el valor 0,02.

      <element_node name="Tax"> 
         <text_node> 
            <RDB_node>
               <table name="part_tab"/>
               <column name="tax"/>
            </RDB_node>
         </text_node> 
      </element_node> 
      

      En este ejemplo, <RDB_node> especifica que el valor del elemento <Tax> es un valor de texto; los datos se almacenan en la columna TAX de la tabla PART_TAB.Vea los archivos DAD de ejemplo proporcionados en Archivos de definición de acceso a documento para la correlación de nodo_RDB, así como la DTD para el archivo DAD, en el Apéndice A, DTD para el archivo DAD, que proporciona la sintaxis completa del archivo DAD.

    3. Opcionalmente, añada un atributo de tipo a cada elemento <column> cuando tenga planeado habilitar esta colección. El atributo de tipo no suele ser necesario para la composición; no obstante, cuando habilite una colección, el archivo DAD utilizado deberá dar soporte a la composición y a la descomposición. Por ejemplo:
      <column name="tax" type="real"/>
      
    4. Defina un <attribute_node> (nodo de atributo) para cada atributo del documento XML que se correlacione con una columna de una tabla DB2. Por ejemplo:
      <attribute_node name="key">
      </attribute_node>
      

      attribute_node tiene un <RDB_node> para correlacionar el valor de atributo con una columna y tabla DB2. Un <RDB_node> tiene los siguientes elementos asociados.

      • <table>: define la tabla que corresponde al elemento
      • <column>: define la columna que contiene el elemento correspondiente
      • <condition>: opcionalmente, especifica una condición para la columna

      Por ejemplo, puede que desee tener una clave de atributo para un elemento <Order> (Pedido). El valor de la clave se debe guardar en una columna llamada PART_KEY. En el archivo DAD, cree un <attribute_node> (nodo de atributo) para la clave e indique la tabla en la que debe guardarse el valor.

      Archivo DAD

      <attribute_node name="key">
            <RDB_node>
          <table name="part_tab">
          <column name="part_key"/>  
            <RDB_node>
      </attribute_node>
      

      Documento XML compuesto:

      <Order key="1"> 
      
  11. Compruebe que hay un código final </root_node> a continuación del último código </element_node>.
  12. Compruebe que hay un código final </Xcollection> a continuación del código </root_node>.
  13. Compruebe que hay un código final </DAD> a continuación del código </Xcollection>.

Descomposición de documentos XML con correlación de nodo_RDB

Utilice la correlación de nodo_RDB para descomponer documentos XML. Este método utiliza el <RDB_node> (nodo RDB) para especificar tablas, columnas y condiciones de DB2 para un nodo de elemento o de atributo. <RDB_node> utiliza los elementos siguientes:

Los elementos asociados que se utilizan en <RDB_node> dependen del contexto del nodo y siguen las normas siguientes:
Si el tipo de nodo es: Se utiliza el elemento hijo RDB:

Tabla Columna Condición1
Elemento raíz S N S
Atributo S S opcional
Texto S S opcional
(1) Necesario si se utilizan varias tablas

Utilización del asistente de administración

Para crear una DAD para la descomposición:

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con archivos DAD desde la ventana Área de ejecución. Se visualizará la ventana Especificar DAD.
  3. Elija si desea editar un archivo DAD existente o crear uno nuevo.

    Para editar una DAD existente:

    1. Escriba el nombre de archivo DAD en el campo Nombre de archivo o pulse ... para localizar un archivo DAD existente.
    2. Verifique que el asistente reconoce el archivo DAD especificado.
      • Si el asistente reconoce el archivo DAD especificado, puede seleccionar Siguiente y el campo Tipo muestra Correlación de nodo_RDB para colecciones XML.
      • Si el asistente no reconoce el archivo DAD especificado, no se puede seleccionar Siguiente. Escriba de nuevo el nombre del archivo DAD en el campo Nombre de archivo o pulse ... para volver a localizar un archivo DAD existente. Repita estos pasos hasta que pueda seleccionar Siguiente.
    3. Pulse Siguiente para abrir la ventana Seleccionar validación.

    Para crear una DAD nueva:

    1. Deje el campo Nombre de archivo en blanco.
    2. En el menú Tipo, seleccione Correlación de nodo_RDB para colecciones XML.
    3. Pulse Siguiente para abrir la ventana Seleccionar validación.
  4. En la ventana Seleccionar validación, elija si desea validar los documentos XML con una DTD.
  5. Pulse Siguiente para abrir la ventana Especificar texto.
  6. Si sólo está descomponiendo un documento XML, ignore el campo Prólogo. Si utiliza el archivo DAD para la composición y la descomposición, escriba el nombre del prólogo en el campo Prólogo de la ventana Especificar texto. El prólogo no es necesario si descompone documentos XML en datos DB2.
    <?xml versión="1.0"?>
    

    Si está editando una DAD existente, el prólogo se visualiza automáticamente en el campo Prólogo.

  7. Si sólo está descomponiendo un documento XML, ignore el campo Tipo de documento. Si utiliza el archivo DAD para la composición y la descomposición, escriba el tipo de documento del documento XML en el campo Tipo de documento.

    Si está editando una DAD existente, el tipo de documento se visualiza automáticamente en el campo Tipo de documento.

  8. Pulse Siguiente para abrir la ventana Correlación RDB.
  9. Seleccione un nodo de elemento o atributo desde el que desee correlacionar pulsando sobre el mismo en el campo situado a la izquierda de la ventana Correlación RDB.

    Correlacione los elementos y atributos del documento XML con nodos de elemento y atributo correspondientes a datos DB2. Estos nodos proporcionan una vía de acceso desde los datos XML a los datos DB2.

  10. Para añadir el nodo raíz:
    1. Seleccione el icono Raíz.
    2. Pulse Nuevo elemento para definir un nuevo nodo.
    3. En el recuadro Detalles, especifique Tipo de nodo como Elemento.
    4. Entre el nombre del nodo de nivel superior del campo Nombre de nodo.
    5. Pulse Añadir para crear el nuevo nodo.

      Ha creado el nodo o elemento raíz, que es el padre de los demás nodos de elemento o atributo de la correlación. El nodo raíz tiene elementos asociados de tabla y una condición de unión.

    6. Añada nodos de tabla para cada tabla que forme parte de la colección.
      1. Resalte el nombre del nodo raíz y seleccione Nuevo elemento.
      2. En el recuadro Detalles, especifique Tipo de nodocomo Tabla.
      3. Seleccione el nombre de la tabla desde Nombre de tabla. La tabla ya debe existir.
      4. Especifique una columna de clave para la tabla en el campo Clave de tabla.
      5. Pulse Añadir para añadir el nodo de tabla.
      6. Repita estos pasos para cada tabla.
    7. Añada una condición de unión para los nodos de tabla.
      1. Resalte el nombre del nodo raíz y seleccione Nuevo elemento.
      2. En el recuadro Detalles, especifique Tipo de nodo como Condición.
      3. En el campo Condición, entre la condición de unión utilizando la sintaxis siguiente:
        nombre_tabla.columna_tabla = nombre_tabla.columna_tabla AND
        nombre_tabla.columna_tabla = nombre_tabla.columna_tabla ...
        
      4. Pulse Añadir para añadir la condición.

    Ahora puede añadir a este nodo los elementos y atributos asociados.

  11. Para añadir un nodo de elemento o de atributo:
    1. Pulse sobre un nodo padre del campo de la izquierda para añadir un elemento o atributo asociado.

      Si no selecciona un nodo padre, no podrá seleccionar Nuevo.

    2. Pulse Nuevo elemento.
    3. En el recuadro Detalles, seleccione un tipo de nodo en el menú Tipo de nodo.

      El menú Tipo de nodo muestra sólo los tipos de nodo que son válidos para el lugar seleccionado del mapa. Elemento o Atributo.

    4. Especifique un nombre de nodo en el campo Nombre de nodo.
    5. Pulse Añadir para añadir el nuevo nodo.
    6. Para correlacionar el contenido de un nodo de elemento o de atributo con una tabla relacional:
      1. Especifique un nodo de texto.
        1. Pulse sobre el nodo padre.
        2. Pulse Nuevo elemento.
        3. En el campo Tipo de nodo, seleccione Texto.
        4. Seleccione Añadir para añadir el nodo.
      2. Añada un nodo de tabla.
        1. Seleccione el nodo de texto que acaba de crear y pulse Nuevo elemento.
        2. En el campo Tipo de nodo, seleccione Tabla y especifique un nombre de tabla para el elemento.
        3. Pulse Añadir para añadir el nodo.
      3. Añada un nodo de columna.
        1. Seleccione de nuevo el nodo de texto y pulse Nuevo elemento.
        2. En el campo Tipo de nodo, seleccione Columna y especifique un nombre de columna para el elemento.
        3. Especifique un tipo de base de datos para la columna en el campo Tipo, para especificar el tipo de columna necesario para guardar los datos no codificados.
        4. Pulse Añadir para añadir el nodo.

        Restricción: No puede utilizar el asistente de administración para crear nuevas columnas. Si especifica Columna como tipo de nodo, sólo puede seleccionar una columna que ya exista en su base de datos DB2.

      4. Opcionalmente, añada una condición para la columna.
        1. Seleccione de nuevo el nodo de texto y pulse Nuevo elemento.
        2. En el campo Tipo de nodo, seleccione Condición y la condición con la sintaxis:
          operador LIKE|<|>|= valor
          
        3. Pulse Añadir para añadir el nodo.

      Puede modificar estos nodos seleccionando el nodo, cambiando los campos en el recuadro Detalles, y pulsando Cambiar.

    7. Continúe editando la correlación RDB o pulse Siguiente para abrir la ventana Especificar DAD.
  12. Para eliminar un nodo:
    1. En el área izquierda de la ventana, pulse sobre un nodo.
    2. Pulse Eliminar.
    3. Continúe editando la correlación de nodo_RDB o pulse Siguiente para abrir la ventana Especificar DAD.
  13. En el campo Nombre de archivo de la ventana Especificar DAD, escriba un nombre de archivo de salida para la DAD modificada.
  14. Pulse Finalizar para eliminar el nodo y volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

El archivo DAD es un archivo XML que puede crear utilizando un editor de texto cualquiera. Las instrucciones siguientes proceden del apéndice de ejemplos, Archivos de definición de acceso a documento. Consulte esos ejemplos para obtener una información más completa y de contexto.

  1. Abra un editor de texto.
  2. Cree la cabecera de DAD:
    <?xml versión="1.0"?>
    <!DOCTYPE DAD SYSTEM "path\dad.dtd"> --> vía de acceso y nombre de
    archivo de la DTD para la DAD
    
  3. Inserte los códigos <DAD></DAD>.
  4. A continuación del código <DAD>, especifique el ID de DTD que asocia el archivo DAD con la DTD del documento XML.
    <dtdid>vía\nombre_dtd.dtd> --> vía
    de acceso y nombre de archivo de la DTD
                                         para la aplicación
    
  5. Especifique si desea realizar la validación (es decir, utilizar una DTD para asegurarse de que el documento XML es válido). Por ejemplo:
    <validation>NO</validation> --> especifique YES o NO
    
  6. Utilice el elemento <Xcollection> para definir el método de acceso y de almacenamiento como colección XML. Los métodos de acceso y de almacenamiento definen que los datos XML se guardan en una colección de tablas DB2.
    <Xcollection>
    </Xcollection>
    
  7. Añada la información de prólogo siguiente:
    <prolog>?xml versión="1.0"?</prolog>
    
    Este texto exacto es necesario.
  8. Añada los códigos <doctype></doctype>. Por ejemplo:
    <doctype>! DOCTYPE Order SYSTEM
    "c:\dxx\samples\dtd\getstart.dtd"</doctype>
    
  9. Defina el nodo raíz (root_node) utilizando los códigos <root_node></root_node>. Dentro del nodo raíz, especifique los elementos y atributos que forman el documento XML.
  10. A continuación del código <root_node>, correlacione los elementos y atributos del documento XML con nodos de elemento y atributo correspondientes a los datos DB2. Estos nodos proporcionan una vía de acceso desde los datos XML a los datos DB2.
    1. Defina un element_node raíz, de nivel superior. Este element_node contiene:
      • Nodos de tabla con una condición de unión para especificar la colección.
      • Elementos asociados
      • Atributos
      Para especificar los nodos de tabla y la condición:
      1. Cree un elemento RDB_node: Por ejemplo:
              <RDB_node>
              </RDB_node>
        
      2. Defina un <table_node> para cada tabla que contenga datos que deban incluirse en el documento XML. Por ejemplo, si tiene tres tablas, ORDER_TAB, PART_TAB y SHIP_TAB, con datos de columnas que deban estar en el documento, cree un nodo de tabla para cada una de ellas. Por ejemplo:
        <RDB_node>
        <table name="ORDER_TAB">
        <table name="PART_TAB">
        <table name="SHIP_TAB"></RDB_node>
        
      3. Defina una condición de unión para las tablas de la colección. La sintaxis es la siguiente
        expresión = expresión AND
        expresión = expresión ...
        
        Por ejemplo:
              <RDB_node>
        <table name="ORDER_TAB">
        <table name="PART_TAB">
        <table name="SHIP_TAB">
        <condition>
                        order_tab.order_key = part_tab.order_key AND 
                            part_tab.part_key = ship_tab.part_key
        </condition>
              </RDB_node>
        
      4. Especifique una clave primaria para cada tabla. La clave primaria consta de una o varias columnas; en este segundo caso se denomina clave compuesta. Para especificar la clave primaria, añada una clave de atributo al elemento de tabla del nodo RDB. El ejemplo siguiente define una clave primaria para cada tabla contenida en el nodo RDB del nodo de elemento raíz "Order" (pedido):
        <element_node name="Order">
            <RDB_node>
                 <table name="order_tab" key="order_key"/>
                 <table name="part_tab" key="part_key price"/>
                 <table name="ship_tab" key="date mode"/>
                 <condition>
                     order_tab.order_key = part_tab.order_key AND
                     part_tab.part_key = ship_tab.part_key
                 </condition>
              <RDB_node>
         
        
        La información especificada para la descomposición de un documento XML no se tiene en cuenta al componer el documento.

        El atributo de clave es necesario para la descomposición y cuando habilite una colección, porque el archivo DAD utilizado debe dar soporte a la composición y a la descomposición.

    2. Defina un código <element_node> para cada elemento del documento XML que se correlacione con una columna de una tabla DB2. Por ejemplo:
      <element_node name="nombre">
      </element_node> 
      

      Un nodo de elemento puede tener uno de los tipos de elementos siguientes:

      • <text_node>: para especificar que el elemento tiene contenido para una tabla DB2; en este caso no tiene elementos asociados.
      • <attribute_node>: para especificar un atributo; los nodos de atributo se definen en el paso siguiente
      • elementos asociados

      text_node contiene un RDB_node para correlacionar el contenido con un nombre de columna y tabla DB2.

      Los RDB_nodes se utilizan para elementos de nivel inferior que tienen contenido para correlacionar con una tabla DB2. Un RDB_node tiene los siguientes elementos asociados.

      • <table>: define la tabla que corresponde al elemento
      • <column>: define la columna que contiene el elemento correspondiente
      • <condition>: opcionalmente, especifica una condición para la columna

      Por ejemplo, puede tener un elemento XML <Tax> para el que desee guardar el contenido no codificado en una columna llamada TAX:

      Documento XML:

      <Tax>0.02</Tax>
      

      En este caso, desea que el valor 0.02 se guarde en la columna TAX.

      En el archivo DAD, especifica un <RDB_node> para correlacionar el elemento XML con la tabla y columna DB2.

      Archivo DAD:

      <element_node name="Tax"> 
         <text_node> 
            <RDB_node>
               <table name="part_tab"/>
               <column name="tax"/>
            </RDB_node>
         </text_node> 
      </element_node> 
      

      <RDB_node> especifica que el valor del elemento <Tax> es un valor de texto, los datos se almacenan en la tabla PART_TAB, en la columna TAX.

    3. Defina un <attribute_node> (nodo de atributo) para cada atributo del documento XML que se correlacione con una columna de una tabla DB2. Por ejemplo:
      <attribute_node name="key">
      </attribute_node>
      

      attribute_node tiene un RDB_node para correlacionar el valor de atributo con una tabla y columna DB2. Un RDB_node tiene los siguientes elementos asociados.

      • <table>: define la tabla que corresponde al elemento
      • <column>: define la columna que contiene el elemento correspondiente
      • <condition>: opcionalmente, especifica una condición para la columna

      Por ejemplo, puede tener una clave de atributo para un elemento <Order> (pedido). El valor de la clave se debe guardar en una columna llamada PART_KEY.

      Documento XML:

      <Order key="1"> 
      

      En el archivo DAD, cree un attribute_node para la clave e indique la tabla donde se debe guardar el valor 1.

      Archivo DAD:

      <attribute_node name="key">
            <RDB_node>
          <table name="part_tab">
          <column name="part_key"/>  
            <RDB_node>
      </attribute_node>
      
  11. Especifique el tipo de columna del nodo RDB para cada nodo de atributo y nodo de texto. Esto asegura el tipo de datos correcto para cada columna en la que se guardarán los datos no codificados. Para especificar los tipos de columna, añada el tipo de atributo al elemento de columna. El ejemplo siguiente define el tipo de columna INTEGER:
    <attribute_node name="key">
        <RDB_node>
            <table name="order_tab"/>
            <column name="order_key" type="integer"/> 
        </RDB_node>
    </attribute_node>
     
    
  12. Compruebe que hay un código final </root_node> a continuación del último código </element_node>.
  13. Compruebe que hay un código final </Xcollection> a continuación del código </root_node>.
  14. Compruebe que hay un código final </DAD> a continuación del código </Xcollection>.

Habilitación de colecciones XML

Cuando se habilita una colección XML, se analiza el archivo DAD para identificar las tablas y columnas relacionadas con el documento XML, y se registra información de control en la tabla XML_USAGE. Habilitar una colección XML es opcional en estos casos:

Si se utiliza el mismo archivo DAD para la composición y descomposición, puede habilitar la colección para la composición y la descomposición.

Puede habilitar una colección XML mediante el asistente de administración del XML Extender, o utilizando el mandato dxxadm con la opción enable_collection, o bien puede utilizar el procedimiento almacenado dxxEnableCollection() del XML Extender.

Utilización del asistente de administración

Siga los pasos siguientes para habilitar una colección XML.

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con colecciones XML desde la ventana Área de ejecución. Se abrirá la ventana Seleccionar tarea.
  3. Pulse Habilitar colección y, a continuación, Siguiente. Se abrirá la ventana Habilitar colección.
  4. Seleccione el nombre de la colección que desee habilitar en el campo Nombre de colección del menú desplegable.
  5. Escriba el nombre de archivo DAD en el campo Nombre de archivo DAD o pulse ... para localizar un archivo DAD existente.
  6. Opcionalmente, escriba en el campo Espacio_tablas el nombre de un espacio de tablas creado previamente.

    El espacio de tablas contendrá las nuevas tablas DB2 generadas para la descomposición.

  7. Pulse Finalizar para habilitar la colección y volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

Para habilitar una colección XML, entre el mandato dxxadm:

Sintaxis:
dxxadm enable_collection
>>-dxxadm---enable_collection---nombreBd---colección------------>
 
>----archivo_DAD----+--------------------+---------------------><
                    '--t--espaciotablas--'
 

Parámetros:

nombreBd
Es el nombre de la base de datos.

colección
Es el nombre de la colección XML. Este valor se utiliza como parámetro de los procedimientos almacenados para colecciones XML.

archivo_DAD
Es el nombre del archivo donde reside la definición de acceso a documento (DAD).

espaciotablas
Es un espacio de tablas existente que contiene las nuevas tablas DB2 que se crearon para la descomposición. Si no se especifica este parámetro, se utiliza el espacio de tablas predefinido.

Ejemplo: El ejemplo siguiente habilita una colección llamada sales_ord en la base de datos SALES_DB, utilizando el shell de mandatos de DB2. El archivo DAD utiliza la correlación SQL y se puede encontrar en Archivo DAD: colección XML - correlación SQL.

dxxadm enable_collection SALES_DB sales_ord getstart.dad

Una vez habilitada la colección XML, puede componer o descomponer documentos XML utilizando los procedimientos almacenados del XML Extender.

Inhabilitación de colecciones XML

Cuando se inhabilita una colección XML se elimina el registro en la tabla XML_USAGE que identifica tablas y columnas como parte de una colección. No elimina ninguna tabla de datos. Puede inhabilitar una colección cuando desee actualizar la DAD y necesite volver a habilitar una colección o eliminar una colección.

Puede inhabilitar una colección XML mediante el asistente de administración del XML Extender, o utilizando el mandato dxxadm con la opción disable_collection, o bien puede utilizar el procedimiento almacenado dxxDisableCollection() del XML Extender.

Utilización del asistente de administración

Siga los pasos siguientes para inhabilitar una colección XML.

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con colecciones XML desde la ventana Área de ejecución para ver las tareas relacionadas con colecciones del XML Extender. Se abrirá la ventana Seleccionar tarea.
  3. Pulse Inhabilitar una colección XML y, a continuación, Siguiente para inhabilitar una colección XML. Se abrirá la ventana Inhabilitar colección.
  4. En el campo Nombre de colección, escriba el nombre de la colección que desea inhabilitar.
  5. Pulse Finalizar para inhabilitar la colección y volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

Para inhabilitar una colección XML, entre el mandato dxxadm:

Sintaxis:
dxxadm disable_collection
>>-dxxadm---disable_collection---nombreBd---colección----------><
 

Parámetros:

nombreBd
Es el nombre de la base de datos.

colección
Es el nombre de la colección XML. Este valor se utiliza como parámetro de los procedimientos almacenados para colecciones XML.

Ejemplo:

dxxadm disable_collection SALES_DB sales_ord


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