4Można dekomponować dokumenty zawierające atrybuty nieunikalne i/lub 4nieunikalne nazwy elementów odnoszące się do różnych kolumn (tej samej lub 4różnych tabel) bez wywoływania błędu DXXQ045E. Poniżej przedstawiono 4przykład dokumentu XML z nieunikalnymi atrybutami i nazwami elementów:
4<Order ID="0001-6789"> 4 <!-- Uwaga: atrybut identyfikatora nazwy jest nieunikalny--> 4 <Customer ID = "1111"> 4 <Name>John Smith</Name> 4 </Customer> 4 <!-- Uwaga: nazwa elementu Name jest nieunikalna --> 4 <Salesperson ID = "1234"> 4 <Name>Jane Doe</Name> 4 </Salesperson> 4 <OrderDetail> 4 <ItemNo>xxxx-xxxx</ItemNo> 4 <Quantity>2</Quantity> 4 <UnitPrice>12.50</UnitPrice> 4 </OrderDetail> 4 <OrderDetail> 4 <ItemNo>yyyy-yyyy</ItemNo> 4 <Quantity>4</Quantity> 4 <UnitPrice>24.99</UnitPrice> 4 </OrderDetail> 4</Order>
4Towarzyszący plik DAD, który odwzorowuje podwójne elementy/atrybuty do 4różnych kolumn, ma następującą postać:
4<element_node name="Order"> 4 <RDB_node> 4 <table name="order_tab" key="order_id"/> 4 <table name="detail_tab"/> 4 <condition> 4 order_tab.order_id = detail_tab.order_id 4 </condition> 4 </RDB_node> 4 4 <!-- atrybut ID jest zduplikowany poniżej, ale jest odwzorowany do innej kolumny --> 4 <attribute_node name="ID"> 4 <RDB_node> 4 <table name="order_tab" /> 4 <column name="order_id" type="char(9)"/> 4 </RDB_node> 4 </attribute_node> 4 4 <element_node name="Customer"> 4 <!-- atrybut ID jest zduplikowany powyżej, ale jest odwzorowany do innej kolumny --> 4 <attribute_node name="ID"> 4 <RDB_node> 4 <table name="order_tab" /> 4 <column name="cust_id" type="integer"/> 4 </RDB_node> 4 </attribute_node> 4 4 <!-- nazwa elementu jest zduplikowana poniżej, ale jest odwzorowana do innej kolumny --> 4 <element_node name="Name"> 4 <text_node> 4 <RDB_node> 4 <table name="order_tab" /> 4 <column name="cust_name" type="char(20)" /> 4 </RDB_node> 4 </text_node> 4 </element_node> 4 </element_node> 4 4 <element_node name="Salesperson"> 4 <!-- atrybut ID jest zduplikowany powyżej, ale jest odwzorowany do innej kolumny --> 4 <attribute_node name="ID"> 4 <RDB_node> 4 <RDB_node> 4 <table name="order_tab" /> 4 <column name="salesp_id" type="integer"/> 4 </RDB_node> 4 </attribute_node> 4 4 <!-- nazwa elementu jest zduplikowana powyżej, ale jest odwzorowana do innej kolumny --> 4 <element_node name="Name"> 4 <text_node> 4 <RDB_node> 4 <table name="order_tab" /> 4 <column name="salesp_name" type="char(20)" /> 4 </RDB_node> 4 </text_node> 4 </element_node> 4 </element_node> 4 4 <element_node name="OrderDetail" multi_occurrence="YES"> 4 <element_node name="ItemNo"> 4 <text_node> 4 <RDB_node> 4 <table name="detail_tab" /> 4 <column name="itemno" type="char(9)"/> 4 </RDB_node> 4 </text_node> 4 </element_node> 4 <element_node name="Quantity"> 4 <text_node> 4 <RDB_node> 4 <table name="detail_tab" /> 4 <column name="quantity" type="integer"/> 4 </RDB_node> 4 </text_node> 4 </element_node> 4 <element_node name="UnitPrice"> 4 <text_node> 4 <RDB_node>detail_tab" /> 4 <table name="detail_tab" /> 4 <column name="unit_price" type="decimal(7,2)"/> 4 </RDB_node> 4 </text_node> 4 </element_node> 4 </element_node> 4</element_node>
4Po zdekomponowaniu dokumentu zawartość tabel może wyglądać w następujący 4sposób:
4ORDER _TAB: 4 4ORDER_ID CUST_ID CUST_NAME SALESP_ID SALESP_NAME 40001-6789 1111 John Smith 1234 Jane Doe 4 4DETAIL_TAB: 4 4ORDER_ID ITEMNO QUANTITY UNIT_PRICE 40001-6789 xxxx-xxxx 2 12.50 40001-6789 yyyy-yyyy 4 24.99