Ahora puede descomponer los documentos que contienen atributos no exclusivos 4o nombres de elementos no exclusivos que se correlacionan con diferentes 4columnas (de la misma tabla o de diferentes tablas) sin recibir el error 4DXXQ045E. A continuación 4se muestra un ejemplo de un documento XML con nombres de elementos y atributos no exclusivos:
4<Order ID="0001-6789"> 4 <!-- Nota: el ID de nombre de atributo no es exclusivo --> 4 <Customer ID = "1111"> 4 <Name>John Smith</Name> 4 </Customer> 4 <!-- Nota: el nombre del elemento Name no es exclusivo --> 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>
El DAD que acompaña y que correlaciona los atributos y 4elementos duplicados con diferentes columnas tiene este aspecto:
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 <!--ID atrib. duplicado después, pero correlacionado con una col. dif.--> 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 <!--ID atrib. duplicado antes, pero correlacionado con una col. dif.--> 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 <!--nombre elem. duplicado después, pero correlacionado con una col. dif.--> 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 <!--ID atrib. duplicado antes, pero correlacionado con una col. dif.--> 4 <attribute_node name="ID"> 4 <RDB_node> 4 <table name="order_tab" /> 4 <column name="salesp_id" type="integer"/> 4 </RDB_node> 4 </attribute_node> 4 4 <!--nombre elem. duplicado antes, pero correlacionado con una col. dif.--> 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>
El contenido de las tablas tendría un aspecto similar 4al ejemplo siguiente después de descomponer el documento anterior:
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.994 4