IBM Books

Administración y programación


Archivos de definición de acceso a documento

Las secciones siguientes contienen archivos de definición de acceso a documento (archivos DAD), que correlacionan datos XML con tablas relacionales DB2, utilizando las modalidades de acceso para columnas XML o para colecciones XML.

Archivo DAD: columna XML

Este archivo DAD contiene la correlación de una columna XML; esta correlación define la tabla, las tablas secundarias y las columnas donde se almacenarán los datos XML.

Figura 16. Archivo DAD de ejemplo para una columna XML

<?xml version="1.0"?> 
<!DOCTYPE Order SYSTEM "c:\dxx\dad.dtd"> 
<DAD> 
   <dtdid>c:\dxx\samples\dtd\getstart.dtd</dtdid> 
   <validation>YES</validation> 
 
   <Xcolumn> 
     <table name="order_side_tab"> 
         <column name="order_key" 
            type="integer" 
            path="/Order/@key" 
            multi_occurrence="NO"/> 
         <column name="customer" 
            type="varchar(50)" 
            path="/Order/Customer/Name" 
            multi_occurrence="NO"/> 
     </table> 
     <table name="part_side_tab">
         <column name="price" 
            type="decimal(10,2)" 
            path="/Order/Part/ExtendedPrice" 
            multi_occurrence="YES"/>
     </table>
     <table name="ship_side_tab">
         <column name="date" 
            type="DATE" 
            path="/Order/Part/Shipment/ShipDate" 
            multi_occurrence="YES"/>
     </table> 
 
   </Xcolumn> 
 
</DAD>

Archivo DAD: colección XML - correlación SQL

Este archivo DAD contiene una sentencia SQL, que especifica las tablas DB2, columnas y condiciones donde se almacenarán los datos XML.

Figura 17. Archivo DAD de ejemplo para una colección XML que utiliza la correlación SQL

<?xml version="1.0"?>
<!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">
<DAD>
<validation>NO</validation>
<Xcollection>
<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>
      <prolog>?xml version="1.0"?</prolog>
<doctype>!DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype>
 
      <root_node> 
         <element_node name="Order"> 
  <attribute_node name="key">
                 <column name="order_key"/> 
              </attribute_node> 
           <element_node name="Customer"> 
    <element_node name="Name">
      <text_node><column name="customer_name"/></text_node>
    </element_node>
    <element_node name="Email">
      <text_node><column name="customer_email"/></text_node>
    </element_node>
  </element_node>
           <element_node name="Part"> 
    <attribute_node name="color">
      <column name="color"/>
              </attribute_node> 
    <element_node name="key">
      <text_node><column name="part_key"/></text_node>
    </element_node>
<element_node name="Quantity"> 
      <text_node><column name="quantity"/></text_node>
    </element_node>
           <element_node name="ExtendedPrice"> 
      <text_node><column name="price"/></text_node>
    </element_node>
           <element_node name="Tax">  
      <text_node><column name="tax"/></text_node>
    </element_node>
    <element_node name="Shipment" multi_occurence="YES">
              <element_node name="ShipDate"> 
        <text_node><column name="date"/></text_node>
      </element_node>
              <element_node name="ShipMode">  
        <text_node><column name="mode"/></text_node>
    </element_node>
    </element_node>
  </element_node>
</element_node>
      </root_node> 
  </Xcollection> 
</DAD>

Archivo DAD: XML - correlación de nodo_RDB

Este archivo DAD utiliza elementos <RDB_node> para definir las tablas DB2, columnas y condiciones donde se almacenarán los datos XML.

Figura 18. Archivo DAD de ejemplo para una colección XML que utiliza la correlación de nodo_RDB

<?xml version="1.0"?> 
<!DOCTYPE Order SYSTEM "c:\dxx\dtd\dad.dtd"> 
<DAD> 
   <dtdid>c:\dxx\samples\dtd\getstart.dtd</dtdid> 
   <validation>YES</validation> 
<Xcollection>
      <prolog>?xml version="1.0"?</prolog> 
      <doctype>!DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype> 
      <root_node> 
         <element_node name="Order"> 
                    <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> 
  <attribute_node name="key"> 
                    <RDB_node> 
                    <table name="order_tab"/> 
                 <column name="order_key"/> 
                    </RDB_node> 
              </attribute_node> 
           <element_node name="Customer"> 
                 <text_node> 
                    <RDB_node> 
                    <table name="order_tab"/> 
                    <column name="customer"/> 
                    </RDB_node> 
                 </text_node>  
           </element_node> 
           <element_node name="Part"> 
                    <RDB_node> 
                    <table name="part_tab"/> 
                       <table name="ship_tab"/> 
                       <condition> 
                    part_tab.part_key = ship_tab.part_key 
                       </condition> 
                    </RDB_node> 
  <attribute_node name="key"> 
                    <RDB_node> 
                    <table name="part_tab"/> 
                    <column name="part_key"/> 
                    </RDB_node> 
              </attribute_node> 
           
           <element_node name="Quantity"> 
                 <text_node> 
                    <RDB_node> 
                    <table name="part_tab"/> 
                    <column name="quantity"/> 
                    </RDB_node> 
                 </text_node>  
           </element_node> 
           <element_node name="ExtendedPrice"> 
                 <text_node> 
                    <RDB_node> 
                    <table name="part_tab"/> 
                       <column name="price"/>  
                       <condition> 
                          price > 2500.00 
                       </condition> 
                    </RDB_node> 
                 </text_node>  
           </element_node> 
           <element_node name="Tax">  
                 <text_node> 
                    <RDB_node> 
                    <table name="part_tab"/> 
                    <column name="tax"/>  
                    </RDB_node> 
                 </text_node>  
           </element_node> 
 
 
           <element_node name="shipment">  
                    <RDB_node> 
                       <table name="ship_tab"/> 
                       <condition> 
                    part_key = part_tab.part_key 
                       </condition> 
                    </RDB_node> 
              <element_node name="ShipDate"> 
                 <text_node> 
                    <RDB_node> 
                       <table name="ship_tab"/> 
                       <column name="date"/>  
                       <condition> 
                          date > "1966-01-01" 
                       </condition> 
                    </RDB_node> 
                 </text_node>  
           </element_node> 
              <element_node name="ShipMode">  
                 <text_node> 
                    <RDB_node> 
                       <table name="ship_tab"/> 
                       <column name="mode"/>  
                    </RDB_node> 
                 </text_node>  
           </element_node> 
              <element_node name="Comment"> 
                 <text_node> 
                    <RDB_node> 
                       <table name="ship_tab"/> 
                       <column name="comment"/>  
                    </RDB_node> 
                 </text_node>  
           </element_node> 
            </element_node> <! -- end of element Shipment> 
          </element_node> <! -- end of element Part ---> 
        </element_node> <! -- end of element Order ---> 
      </root_node> 
  </Xcollection> 
</DAD>


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