Manuali IBM

XML Extender - Gestione e programmazione


File DAD

Le seguenti sezioni contengono i file DAD (document access definition) che associano i dati XML alle tabelle relazionali DB2, utilizzando le modalità di accesso colonna XML o raccolta XML.

File DAD: colonna XML

Questo file DAD contiene l'associazione per una colonna XML, definendo la tabella, le tabelle laterali e le colonne in cui contenere i dati XML.

Figura 16. File DAD di esempio per una colonna 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>

File DAD: raccolta XML - associazione SQL

Questo file DAD contiene un'istruzione SQL che specifica le condizioni, le tabelle e le colonne DB2 in cui contenere i dati XML.

Figura 17. File DAD di esempio per una raccolta XML che utilizza l'associazione 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>

File DAD: XML - associazione RDB_node

Questo file DAD utilizza elementi <RDB_node> per definire le condizioni, le colonne e le tabelle DB2 in cui contenere i dati XML.

Figura 18. File DAD di esempio per una raccolta XML che utilizza l'associazione RDB_node

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


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]