Sie können jetzt Dokumente zerlegen, die nicht eindeutige Attribute oder Elementnamen enthalten, die verschiedenen Spalten (der gleichen oder verschiedener Tabellen) zugeordnet sind, ohne die Fehlermeldung DXXQ045E zu erhalten. Es folgt ein ein Beispiel eines XML-Dokuments mit nicht eindeutigen Attributen und nicht eindeutigen Elementnamen:
<Order ID="0001-6789"> <!-- Anmerkung: Die Attributnamen-ID ist nicht eindeutig --> <Customer ID = "1111"> <Name>John Smith</Name> </Customer> <!-- Anmerkung: Der Elementname 'Name' ist nicht eindeutig --> <Salesperson ID = "1234"> <Name>Jane Doe</Name> </Salesperson> <OrderDetail> <ItemNo>xxxx-xxxx</ItemNo> <Quantity>2</Quantity> <UnitPrice>12.50</UnitPrice> </OrderDetail> <OrderDetail> <ItemNo>yyyy-yyyy</ItemNo> <Quantity>4</Quantity> <UnitPrice>24.99</UnitPrice> </OrderDetail> </Order>
Die zugehörige DAD, welche die kopierten Elemente und Attribute anderen Spalten zuordnet, sieht wie folgt aus:
<element_node name="Order"> <RDB_node> <table name="order_tab" key="order_id"/> <table name="detail_tab"/> <condition> order_tab.order_id=detail_tab.order_id </condition> </RDB_node> <!-- Attribut-ID unten kopiert, aber einer anderen Spalte zugeordnet --> <attribute_node name="ID"> <RDB_node> <table name="order_tab" /> <column name="order_id" type="char(9)"/> </RDB_node> </attribute_node> <element_node name="Customer"> <!-- Attribut-ID oben kopiert, aber einer anderen Spalte zugeordnet --> <attribute_node name="ID"> <RDB_node> <table name="order_tab" /> <column name="cust_id" type="integer"/> </RDB_node> </attribute_node> <!-- Elementname unten kopiert, aber einer anderen Spalte zugeordnet --> <element_node name="Name"> <text_node> <RDB_node> <table name="order_tab" /> <column name="cust_name" type="char(20)" /> </RDB_node> </text_node> </element_node> </element_node> <element_node name="Salesperson"> <!-- Attribut-ID oben kopiert, aber einer anderen Spalte zugeordnet --> <attribute_node name="ID"> <RDB_node> <table name="order_tab" /> <column name="salesp_id" type="integer"/> </RDB_node> </attribute_node> <!-- Elementname oben kopiert, aber einer anderen Spalte zugeordnet --> <element_node name="Name"> <text_node> <RDB_node> <table name="order_tab" /> <column name="salesp_name" type="char(20)" /> </RDB_node> </text_node> </element_node> </element_node> <element_node name="OrderDetail" multi_occurrence="YES"> <element_node name="ItemNo"> <text_node> <RDB_node> <table name="detail_tab" /> <column name="itemno" type="char(9)"/> </RDB_node> </text_node> </element_node> <element_node name="Quantity"> <text_node> <RDB_node> <table name="detail_tab" /> <column name="quantity" type="integer"/> </RDB_node> </text_node> </element_node> <element_node name="UnitPrice"> <text_node> <RDB_node>detail_tab" /> <table name="detail_tab" /> <column name="unit_price" type="decimal(7,2)"/> </RDB_node> </text_node> </element_node> </element_node> </element_node>
Der Inhalt der Tabellen würde nach dem Zerlegen des vorangegangenen Dokuments wie folgt aussehen:
ORDER _TAB: ORDER_ID CUST_ID CUST_NAME SALESP_ID SALESP_NAME 0001-6789 1111 John Smith 1234 Jane Doe DETAIL_TAB: ORDER_ID ITEMNO QUANTITY UNIT_PRICE 0001-6789 xxxx-xxxx 2 12.50 0001-6789 yyyy-yyyy 4 24.99