Decompondo Documentos no XML Extender que Contêm Nomes de Atributos e Elementos Não-exclusivos

Agora você pode decompor documentos que contêm nomes de atributos e/ou de elementos não exclusivos que são mapeados para diferentes colunas (de tabelas iguais ou diferentes) sem receber o erro DXXQ045E. A seguir está um exemplo de um documento XML com nomes de atributos e elementos não exclusivos:

<Order ID="0001-6789">
       <!-- Note: attribute name ID is non-unique -->
       <Customer ID = "1111">
                    <Name>John Smith</Name>
       </Customer>
       <!-- Note: element name Name is non_unique -->
       <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>

O DAD de acompanhamento, que mapeia os elementos/atributos duplicados para diferentes colunas, tem o seguinte aspecto:

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

  <!--attribute ID duplicated below, but mapped to a different col-->
    <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">
    <!--attribute ID duplicated above, but mapped to a different col-->
    <attribute_node name="ID">
        <RDB_node>
          <table name="order_tab" />
        <column name="cust_id" type="integer"/>
        </RDB_node>
    </attribute_node>

    <!--element name duplicated below, but mapped to a different col-->
    <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">
    <!--attribute ID duplicated above, but mapped to a different col-->
    <attribute_node name="ID">
        <RDB_node>
          <table name="order_tab" />
        <column name="salesp_id" type="integer"/>
        </RDB_node>
    </attribute_node>
          
    <!--element name duplicated above, but mapped to a different col-->
    <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>

O conteúdo das tabelas teriam o seguinte aspecto após a decomposição do documento acima:

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
Nota:
Para mapear vários elementos e atributos para a mesma coluna da mesma tabela, defina um alias para a tabela e utilize o alias no elemento da <tabela> DAD de um dos mapeamentos.
[ Início da Página |Página Anterior | Próxima Página | Índice ]