IBM Books

Extension XML Administration et programmation

Création ou édition du fichier DAD pour le schéma de mappage

Vous devez créer un fichier DAD lorsque vous utilisez des collections XML. Un fichier DAD définit la relation existant entre les données XML et plusieurs tables relationnelles. L'Extension XML exploite le fichier DAD pour :

Il existe deux méthodes possibles pour mapper les données entre les tables XML et la table DB2 : le mappage SQL et le mappage du noeud RDB.

Mappage SQL
Fait appel à un élément d'instruction SQL en vue d'indiquer la requête SQL pour les tables et les colonnes contenant les données XML. Ne peut être utilisé que pour la composition de documents XML.

Mappage de noeud RDB
A recours à un élément spécifique à l'Extension XML, le noeud de base de données relationnelle (RDB_node), qui indique des tables, des colonnes, des conditions et l'ordre des données XML. Le mappage du noeud RDB supporte des mappages plus complexes que ceux fournis par une instruction SQL. Peut être utilisé pour la composition et la décomposition de documents XML.

Les deux méthodes de mappage utilisent le modèle de données XPath, décrit à la section Fichier DAD.

Avant de commencer

Composition de documents XML en mode mappage SQL

Choisissez le mappage SQL lorsque vous composez des documents XML et que vous voulez utiliser SQL.

A l'aide de l'assistant d'administration 

Pour créer une DAD de composition en mode mappage SQL, procédez comme suit :

Choisissez le mappage SQL lorsque vous composez un document XML et que vous voulez utiliser une instruction SQL pour définir la table et les colonnes à partir desquelles vous dérivez les données du document XML.

  1. Configurez et démarrez l'assistant d'administration. Pour plus d'informations, reportez-vous à la section Démarrage de l'assistant d'administration.
  2. A partir du tableau de bord, cliquez sur Utilisation des fichiers DAD. La fenêtre Spécification d'une DAD s'affiche.
  3. Vous pouvez éditer un fichier DAD existant ou en créer un nouveau.

    Pour créer un fichier DAD :

    1. Laissez la zone Nom de fichier à blanc.
    2. Dans le menu Type, sélectionnez Mappage SQL de collection XML.
    3. Cliquez sur Suivant pour ouvrir la fenêtre Sélection de la validation.

    Pour éditer un fichier DAD existant :

    1. Tapez le nom du fichier DAD dans la zone Nom de fichier, ou cliquez sur ... pour parcourir la liste des DAD disponibles.
    2. Vérifiez que l'assistant reconnaît le fichier DAD indiqué.
      • Dans l'affirmative, le bouton Suivant devient disponible et Mappage SQL d'une collection XML s'affiche dans la zone Type.
      • Dans la négative, vous ne pouvez pas cliquer sur Suivant. Tapez un autre nom de fichier existant, ou cliquez sur ... pour parcourir à nouveau la liste des DAD disponibles. Corrigez les valeurs dans la zone d'entrée jusqu'à ce que Suivant devienne disponible.
    3. Cliquez sur Suivant pour ouvrir la fenêtre Sélection de la validation.
  4. Dans la fenêtre Sélection de la validation, vous pouvez choisir de valider vos documents XML avec une DTD.
  5. Cliquez sur Suivant pour ouvrir la fenêtre Spécification de texte.
  6. Dans la zone Prologue, tapez le nom de prologue du document XML à composer.
    <?xml version="1.0"?>
    

    Si vous éditez une DAD existante, le prologue s'affiche automatiquement dans la zone Prologue.

  7. Dans la zone Doctype de la fenêtre Spécification de texte, tapez le type du document XML en désignant la DTD associée. Par exemple :
    !DOCTYPE DAD SYSTEM "c:\dxx\samples\dtd\getstart.dtd"
    

    Si vous éditez une DAD existante, le type de document s'affiche automatiquement dans la zone Doctype.

  8. Cliquez sur Suivant pour ouvrir la fenêtre Spécification d'une instruction SQL.
  9. Tapez une instruction SQL SELECT valide dans la zone Instruction SQL. Par exemple :
    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
     
    

    Si vous éditez une DAD existante, l'instruction SQL s'affiche automatiquement dans la zone Instruction SQL.

  10. Cliquez sur Test SQL pour vérifier la validité de l'instruction SQL.
  11. Cliquez sur Suivant pour ouvrir la fenêtre Mappage SQL.
  12. Pour sélectionner un noeud d'élément ou d'attribut de départ pour le mappage, cliquez sur celui-ci dans la zone située à gauche de la fenêtre Mappage SQL.

    Mappez les éléments et les attributs du document XML vers les noeuds d'éléments et d'attributs correspondant aux données DB2. Ces noeuds indiquent le chemin des données XML aux données DB2.

  13. Dans la zone Nom de fichier de la fenêtre Spécification d'une DAD, tapez un nom de fichier de sortie pour la DAD modifiée.
  14. Cliquez sur Fin pour revenir au tableau de bord.

A partir du shell de commandes DB2 

Choisissez le mappage SQL lorsque vous composez des documents XML et que vous voulez utiliser SQL.

Le fichier DAD est un fichier XML qui peut être créé avec n'importe quel éditeur de texte. Les étapes suivantes utilisent des exemples extraits de l'annexe Fichiers DAD. Pour obtenir de plus amples informations et prendre connaissance du contexte, reportez-vous à ces exemples.

  1. Ouvrez un éditeur de texte.
  2. Créez l'en-tête de la DAD.
    <?xml version="1.0"?> 
    <!DOCTYPE DAD SYSTEM "path\dad.dtd"> --> Chemin et nom de fichier de la DTD
    pour la DAD
     
    
  3. Insérez les balises <DAD></DAD>.
  4. Après la balise <DAD>, indiquez l'ID DTD qui associe le fichier DAD à la DTD du document XML.
    <dtdid>path\dtd_name.dtd> --> Chemin et nom de fichier de la DTD
    pour l'application
    
  5. Indiquez si vous voulez une validation (avec la DTD pour vérifier que le document XML est valide). Par exemple :
    <validation>NO</validation>  --> Indiquez YES ou NO
    
  6. A l'aide de l'élément <Xcollection>, définissez la méthode d'accès et de stockage collection XML. Les méthodes d'accès et de stockage indiquent que le contenu du document XML provient de données XML stockées dans des tables DB2.
    <Xcollection>
    </Xcollection>
    
  7. Indiquez une ou plusieurs instructions SQL pour effectuer des opérations d'interrogation ou d'insertion de données sur les tables DB2. Pour consulter les instructions correspondantes, reportez-vous à la section Exigences liées aux schémas de mappage . Par exemple, lancez une seule requête SQL comme suit :
     <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> 
    
  8. Ajoutez les informations de prologue suivantes :
    <prolog>?xml version="1.0"?</prolog> 
    
    Ce texte est obligatoire.
  9. Ajoutez les balises <doctype></doctype>. Par exemple :
    <doctype>! DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype> 
    
  10. Définissez le noeud racine à l'aide des balises <root_node></root_node>. Dans root_node, indiquez les éléments et les attributs qui composent le document XML.
  11. Mappez les éléments et les attributs du document XML vers les noeuds d'éléments et d'attributs correspondant aux données DB2. Ces noeuds indiquent le chemin des données XML aux données DB2.
    1. Définissez une valeur <element_node> pour chaque élément du document XML mappant vers une colonne de table DB2.
      <element_node name="name"></element_node>
      

      Un noeud d'élément peut être doté des noeuds suivants :

      • noeud d'attribut (attribute_node),
      • noeud d'élément enfant (child element_node),
      • noeud de texte (text_node).
    2. Définissez une valeur <attribute_node> pour chaque attribut du document XML mappant vers une colonne de table DB2. Pour obtenir des exemples de DTD applicables au mappage SQL, reportez-vous au début de cette section. Pour consulter la DTD du fichier DAD et la syntaxe complète de ce dernier, reportez-vous à l'Annexe A, DTD de fichier DAD.

      Par exemple, vous avez besoin d'un attribut key pour l'élément <Order>. La valeur de key est stockée dans la colonne PART_KEY.

      Fichier DAD : Dans le fichier DAD, créez un noeud d'attribut pour key et indiquez la table dans laquelle la valeur 1 doit être stockée.

      <attribute_node name="key"> 
          <column name="part_key"/>  
      </attribute_node> 
      

      Document XML composé : La valeur de key est extraite de la colonne PART_KEY.

      <Order key="1">
      
  12. Créez un noeud de texte (<text_node>) pour chaque élément ou attribut dont le contenu sera dérivé d'une table DB2. Le noeud de texte comporte un élément <column> qui identifie la colonne source du contenu.

    Par exemple, l'élément XML <Tax> peut être associé à une valeur qui doit être extraite de la colonne TAX :

    Elément DAD :

    <element_node name="Tax"> 
       <text_node> 
             <column name="tax"/> 
       </text_node> 
    </element_node> 
    

    Dans l'instruction SQL, le nom de colonne doit figurer au début du fichier DAD.

    Document XML composé :

    <Tax>0.02</Tax>
    

    La valeur 0,02 sera dérivée de la colonne TAX.

  13. Vérifiez que vous avez placé une balise de fin </root_node> après la dernière balise </element_node>.
  14. Vérifiez que vous avez placé une balise de fin </Xcollection> après la dernière balise </root_node>.
  15. Vérifiez que vous avez placé une balise de fin </DAD> après la balise </Xcollection>.

Composition de documents XML en mode mappage du noeud RDB

Choisissez le mappage de noeud RDB pour composer des documents XML à l'aide d'une structure compatible XML.

Cette méthode fait appel à <RDB_node> pour indiquer les tables DB2, la colonne et les conditions relatives à un noeud d'élément ou d'attribut. <RDB_node> utilise les éléments suivants :

Les éléments enfants utilisés dans <RDB_node> varient en fonction du contexte du noeud et suivent les règles ci-après :
Type de noeud Elément enfant RDB

Table Colonne Condition1
Elément racine O N O
Attribut O O Facultatif
Texte O O Facultatif
(1) Obligatoire avec plusieurs tables

A l'aide de l'assistant d'administration 

Pour créer une DAD de composition en mode mappage du noeud RDB :

  1. Configurez et démarrez l'assistant d'administration. Pour plus d'informations, reportez-vous à la section Démarrage de l'assistant d'administration.
  2. A partir du tableau de bord, cliquez sur Utilisation des fichiers DAD. La fenêtre Spécification d'une DAD s'affiche.
  3. Vous pouvez éditer un fichier DAD existant ou en créer un nouveau.

    Pour éditer une DAD existante :

    1. Tapez le nom du fichier DAD dans la zone Nom de fichier, ou cliquez sur ... pour parcourir la liste des DAD disponibles.
    2. Vérifiez que l'assistant reconnaît le fichier DAD indiqué.
      • Dans l'affirmative, le bouton Suivant devient disponible et Mappage du noeud RDB d'une collection XML s'affiche dans la zone Type.
      • Dans la négative, vous ne pouvez pas cliquer sur Suivant. Tapez un autre nom de fichier DAD existant dans la zone Nom de fichier, ou cliquez sur ... pour parcourir à nouveau la liste des DAD disponibles. Réessayez jusqu'à ce que le bouton Suivant devienne disponible.
    3. Cliquez sur Suivant pour ouvrir la fenêtre Sélection de la validation.

    Pour créer un fichier DAD :

    1. Laissez la zone Nom de fichier à blanc.
    2. Sélectionnez Mappage du noeud RDB d'une collection XM dans le menu Type.
    3. Cliquez sur Suivant pour ouvrir la fenêtre Sélection de la validation.
  4. Dans la fenêtre Sélection de la validation, vous pouvez choisir de valider vos documents XML avec une DTD.
  5. Cliquez sur Suivant pour ouvrir la fenêtre Spécification de texte.
  6. Tapez le nom de prologue dans la zone Prologue de la fenêtre Spécification de texte.
    <?xml version="1.0"?>
    

    Si vous éditez une DAD existante, le prologue s'affiche automatiquement dans la zone Prologue.

  7. Dans la zone Doctype de la fenêtre Spécification de texte, entrez le type du document XML.

    Si vous éditez une DAD existante, le type de document s'affiche automatiquement dans la zone Doctype.

  8. Cliquez sur Suivant pour ouvrir la fenêtre Mappage RDB.
  9. Pour sélectionner un noeud d'élément ou d'attribut de départ pour le mappage, cliquez sur celui-ci dans la zone située à gauche de la fenêtre Mappage RDB.

    Mappez les éléments et les attributs du document XML vers les noeuds d'éléments et d'attributs correspondant aux données DB2. Ces noeuds indiquent le chemin des données XML aux données DB2.

  10. Pour ajouter le noeud racine (root) :
    1. Sélectionnez l'icône Root.
    2. Cliquez sur Nouvel élément pour définir un nouveau noeud.
    3. Dans la boîte d'options Détails, indiquez Elément pour Type du noeud.
    4. Entrez le nom du noeud de niveau supérieur dans la zone Nom du noeud.
    5. Cliquez sur Ajout pour créer le noeud.

      Vous avez créé le noeud ou l'élément racine, parent de tous les autres noeuds d'éléments et d'attributs de la mappe. Le noeud racine comporte des éléments enfants de table et une condition de jointure.

    6. Ajoutez des noeuds de tables pour chaque table faisant partie de la collection.
      1. Mettez le nom de noeud racine en évidence et sélectionnez Nouvel élément.
      2. Dans la boîte d'options Détails, indiquez Table pour Type du noeud.
      3. Sélectionnez le nom de la table dans la liste Nom de la table. La table doit déjà exister.
      4. Cliquez sur Ajout pour ajouter le noeud de table.
      5. Répétez ces étapes pour chaque table.
    7. Ajoutez une condition de jointure pour les noeuds de tables.
      1. Mettez le nom de noeud racine en évidence et sélectionnez Nouvel élément.
      2. Dans la boîte d'options Détails, indiquez Condition pour Type du noeud.
      3. Dans la zone Condition, entrez la condition de jointure en respectant la syntaxe suivante :
        table_name.table_column = table_name.table_column AND 
        table_name.table_column = table_name.table_column ...
        
      4. Cliquez sur Ajout pour ajouter la condition.
  11. Pour ajouter un noeud d'élément ou d'attribut :
    1. Pour ajouter un élément ou un attribut enfant, cliquez sur un noeud parent dans la zone située à gauche.
    2. Cliquez sur Nouvel élément. Si vous n'avez sélectionné aucun noeud parent, l'option Nouvel Elément n'est pas disponible.
    3. Sélectionnez un type de noeud dans le menu Type du noeud de la boîte d'options Détails.

      Le menu Type du noeud n'affiche que les types de noeuds valides pour ce point de la mappe. Elément ou attribut.

    4. Renseignez la zone Nom du noeud.
    5. Cliquez sur Ajout pour ajouter le noeud.
    6. Pour mapper le contenu d'un noeud d'élément ou d'attribut vers une table relationnelle :
      1. Indiquez un noeud de texte.
        1. Cliquez sur le noeud parent.
        2. Cliquez sur Nouvel élément.
        3. Dans la zone Type du noeud, sélectionnez Texte.
        4. Sélectionnez Ajout pour ajouter le noeud.
      2. Ajoutez un noeud de table.
        1. Sélectionnez le noeud de texte que vous venez de créer et cliquez sur Nouvel élément.
        2. Dans la zone Type du noeud, sélectionnez Table et indiquez un nom de table pour l'élément.
        3. Cliquez sur Ajout pour ajouter le noeud.
      3. Ajoutez un noeud de colonne.
        1. Resélectionnez le noeud de texte et cliquez sur Nouvel élément.
        2. Dans la zone Type du noeud, sélectionnez Colonne et indiquez un nom de colonne pour l'élément.
        3. Cliquez sur Ajout pour ajouter le noeud.

        Restriction : Vous ne pouvez pas créer de colonne à l'aide de l'assistant d'administration. Si vous indiquez le type de noeud Colonne, vous ne pouvez sélectionner qu'une colonne existant déjà dans votre base de données DB2.

      4. Vous pouvez ajouter une condition pour la colonne.
        1. Resélectionnez le noeud de texte et cliquez sur Nouvel élément.
        2. Dans la zone Type du noeud, sélectionnez Condition et indiquez une condition en respectant la syntaxe :
          operator LIKE|<|>|= value
          
        3. Cliquez sur Ajout pour ajouter le noeud.
    7. Poursuivez l'édition de la mappe RDB, ou cliquez sur Suivant pour ouvrir la fenêtre Spécification d'une DAD.
  12. Pour retirer un noeud :
    1. Cliquez sur un noeud figurant dans la zone située à gauche.
    2. Cliquez sur Retrait.
    3. Poursuivez l'édition de la mappe du noeud RDB, ou cliquez sur Suivant pour ouvrir la fenêtre Spécification d'une DAD.
  13. Dans la zone Nom de fichier de la fenêtre Spécification d'une DAD, tapez un nom de fichier de sortie pour la DAD modifiée.
  14. Cliquez sur Fin pour retirer le noeud et revenir au tableau de bord.

A partir du shell de commandes DB2 

Le fichier DAD est un fichier XML qui peut être créé avec n'importe quel éditeur de texte. Les étapes suivantes utilisent des exemples extraits de l'annexe Fichiers DAD. Pour obtenir de plus amples informations et prendre connaissance du contexte, reportez-vous à ces exemples.

  1. Ouvrez un éditeur de texte.
  2. Créez l'en-tête de la DAD :
    <?xml version="1.0"?> 
    <!DOCTYPE DAD SYSTEM "path\dad.dtd"> --> Chemin et nom de fichier de la DTD
    pour la DAD
     
    
  3. Insérez les balises <DAD></DAD>.
  4. Après la balise <DAD>, indiquez l'ID DTD qui associe le fichier DAD à la DTD du document XML.
    <dtdid>path\dtd_name.dtd> --> Chemin et nom de fichier de la DTD
                                         pour l'application
    
  5. Indiquez si vous voulez une validation (avec la DTD pour vérifier que le document XML est valide). Par exemple :
    <validation>NO</validation>  --> Indiquez YES ou NO
    
  6. A l'aide de l'élément <Xcollection>, définissez la méthode d'accès et de stockage collection XML. Les méthodes d'accès et de stockage indiquent que les données XML sont stockées dans une collection de tables DB2.
    <Xcollection>
    </Xcollection>
    
  7. Ajoutez les informations de prologue suivantes :
    <prolog>?xml version="1.0"?</prolog> 
    
    Ce texte est obligatoire.
  8. Ajoutez les balises <doctype></doctype>. Par exemple :
    <doctype>! DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype> 
    
  9. Définissez le noeud racine à l'aide des balises <root_node>. Dans root_node, indiquez les éléments et les attributs qui composent le document XML.
  10. Mappez les éléments et les attributs du document XML vers les noeuds d'éléments et d'attributs correspondant aux données DB2. Ces noeuds indiquent le chemin des données XML aux données DB2.
    1. Définissez un noeud d'élément racine (root element_node). Ce noeud d'élément contient :
      • un noeud RDB désignant des noeuds de tables associés à une condition de jointure pour indiquer la collection,
      • des éléments enfants,
      • des attributs.
      Pour indiquer les noeuds de tables et les conditions :
      1. Créez un élément de noeud RDB. Par exemple :
              <RDB_node>
        </RDB_node>
        
      2. Définissez un noeud de table <table_node> pour chaque table contenant des données à inclure dans le document XML. Par exemple, soient trois tables, ORDER_TAB, PART_TAB et SHIP_TAB contenant des données de colonne à inclure dans le document. Créez un noeud de table pour chacune d'elles. Par exemple :
              <RDB_node>
        <table name="ORDER_TAB">
        <table name="PART_TAB">
        <table name="SHIP_TAB"></RDB_node>
        
      3. Vous pouvez également indiquer une colonne de clé pour chaque table lorsque vous préparez l'activation de la collection. L'attribut key n'est normalement pas obligatoire pour la composition. Cependant, lorsque vous activez une collection, le fichier DAD utilisé doit supporter les opérations de composition et de décomposition. Par exemple :
              <RDB_node>
        <table name="ORDER_TAB" key="order_key"> 
        <table name="PART_TAB" key="part_key">
        <table name="SHIP_TAB" key="date mode">
        </RDB_node>
        
      4. Définissez une condition de jointure pour les tables de la collection. La syntaxe est la suivante :
        expression = expression AND 
        expression = expression
        
        Par exemple :
              <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>
        
    2. Définissez une balise <element_node> pour chaque élément du document XML mappant vers une colonne de table DB2. Par exemple :
      <element_node name="name">
      </element_node>
      

      Un noeud d'élément peut être associé à l'un des types d'éléments suivants :

      • <text_node> : pour indiquer que le contenu de l'élément mappe vers une table dB2. Cet élément ne comporte aucun élément enfant.
      • <attribute_node> : pour indiquer un attribut. Les noeuds d'attributs sont définis à l'étape suivante.

      Le noeud de texte (text_node) comporte un noeud RDB (<RDB_node>) pour mapper le contenu de l'élément vers une table et une colonne DB2.

      Les noeuds RDB sont utilisés pour des éléments de niveau inférieur dont le contenu doit être mappé vers une table DB2. Un noeud RDB comporte les éléments enfants suivants :

      • <table> : définit la table correspondant à l'élément.
      • <column> : définit la colonne qui contient l'élément correspondant et indique le type de colonne à l'aide de l'attribut type.
      • <condition> : facultatif, indique une condition sur la colonne.

      Par exemple, un élément XML <Tax> peut mapper vers une colonne TAX :

      Document XML :

      <Tax>0.02</Tax>
      

      Dans ce cas, vous voulez stocker la valeur 0,02 dans la colonne TAX.

      <element_node name="Tax"> 
         <text_node> 
            <RDB_node>
               <table name="part_tab"/>
               <column name="tax"/>
            </RDB_node> 
         </text_node> 
      </element_node> 
      

      Dans cet exemple, <RDB_node> indique que la valeur de l'élément <Tax> est une valeur texte et que les données sont stockées dans la colonne TAX de la table PART_TAB. Pour consulter des exemples de fichiers DAD avec mappage du noeud RDB, reportez-vous à la section Fichiers DAD. Pour consulter la DTD du fichier DAD et la syntaxe complète de ce dernier, reportez-vous à l'Annexe A, DTD de fichier DAD.

    3. Vous pouvez également ajouter un attribut type à chaque élément <column> lorsque vous préparez l'activation de la collection. L'attribut type n'est normalement pas obligatoire pour la composition. Cependant, lorsque vous activez une collection, le fichier DAD utilisé doit supporter les opérations de composition et de décomposition. Par exemple :
      <column name="tax" type="real"/>
      
    4. Définissez une valeur <attribute_node> pour chaque attribut du document XML mappant vers une colonne de table DB2. Par exemple :
      <attribute_node name="key">
      </attribute_node>
      

      Le noeud d'attribut (attribute_node) comporte un noeud RDB (<RDB_node>) pour mapper la valeur d'attribut vers une table et une colonne DB2. Un noeud RDB comporte les éléments enfants suivants :

      • <table> : définit la table correspondant à l'élément.
      • <column> : définit la colonne qui contient l'élément correspondant.
      • <condition> : facultatif, indique une condition sur la colonne.

      Par exemple, l'élément <Order> peut être associé à un attribut key. La valeur de key doit être stockée dans la colonne PART_KEY. Dans le fichier DAD, créez un noeud d'attribut (<attribute_node>) pour key et indiquez la table dans laquelle la valeur 1 doit être stockée.

      Fichier DAD

      <attribute_node name="key"> 
            <RDB_node>
          <table name="part_tab">
          <column name="part_key"/>  
            <RDB_node>
      </attribute_node> 
      

      Document XML composé :

          <Order key="1"> 
      
  11. Vérifiez que vous avez placé une balise de fin </root_node> après la dernière balise </element_node>.
  12. Vérifiez que vous avez placé une balise de fin </Xcollection> après la dernière balise </root_node>.
  13. Vérifiez que vous avez placé une balise de fin </DAD> après la balise </Xcollection>.

Décomposition de documents XML en mode mappage du noeud RDB

Choisissez le mappage du noeud RDB pour décomposer des documents XML. Cette méthode fait appel à <RDB_node> pour indiquer les tables DB2, la colonne et les conditions relatives à un noeud d'élément ou d'attribut. <RDB_node> utilise les éléments suivants :

Les éléments enfants utilisés dans <RDB_node> varient en fonction du contexte du noeud et suivent les règles ci-après :
Type de noeud Elément enfant RDB

Table Colonne Condition1
Elément racine O N O
Attribut O O Facultatif
Texte O O Facultatif
(1) Obligatoire avec plusieurs tables

A l'aide de l'assistant d'administration 

Pour créer une DAD de décomposition en mode mappage du noeud RDB, procédez comme suit :

  1. Configurez et démarrez l'assistant d'administration. Pour plus d'informations, reportez-vous à la section Démarrage de l'assistant d'administration.
  2. A partir du tableau de bord, cliquez sur Utilisation des fichiers DAD. La fenêtre Spécification d'une DAD s'affiche.
  3. Vous pouvez éditer un fichier DAD existant ou en créer un nouveau.

    Pour éditer une DAD existante :

    1. Tapez le nom du fichier DAD dans la zone Nom de fichier, ou cliquez sur ... pour parcourir la liste des DAD disponibles.
    2. Vérifiez que l'assistant reconnaît le fichier DAD indiqué.
      • Dans l'affirmative, le bouton Suivant devient disponible et Mappage du noeud RDB d'une collection XML s'affiche dans la zone Type.
      • Dans la négative, vous ne pouvez pas cliquer sur Suivant. Tapez un autre nom de fichier DAD existant dans la zone Nom de fichier, ou cliquez sur ... pour parcourir à nouveau la liste des DAD disponibles. Réessayez jusqu'à ce que le bouton Suivant devienne disponible.
    3. Cliquez sur Suivant pour ouvrir la fenêtre Sélection de la validation.

    Pour créer un fichier DAD :

    1. Laissez la zone Nom de fichier à blanc.
    2. Sélectionnez Mappage du noeud RDB d'une collection XM dans le menu Type.
    3. Cliquez sur Suivant pour ouvrir la fenêtre Sélection de la validation.
  4. Dans la fenêtre Sélection de la validation, vous pouvez choisir de valider vos documents XML avec une DTD.
  5. Cliquez sur Suivant pour ouvrir la fenêtre Spécification de texte.
  6. Si vous décomposez uniquement un document XML, ignorez la zone Prologue. Si vous utilisez le fichier DAD pour des opérations de composition et de décomposition, tapez le nom de prologue dans la zone Prologue de la fenêtre Spécification de texte. Le prologue est facultatif lorsque vous décomposez des documents XML en données DB2.
    <?xml version="1.0"?>
    

    Si vous éditez une DAD existante, le prologue s'affiche automatiquement dans la zone Prologue.

  7. Si vous décomposez uniquement un document XML, ignorez la zone Doctype. Si vous utilisez le fichier DAD pour des opérations de composition et de décomposition, entrez le type de document XML dans la zone Doctype.

    Si vous éditez une DAD existante, le type de document s'affiche automatiquement dans la zone Doctype.

  8. Cliquez sur Suivant pour ouvrir la fenêtre Mappage RDB.
  9. Pour sélectionner un noeud d'élément ou d'attribut de départ pour le mappage, cliquez sur celui-ci dans la zone située à gauche de la fenêtre Mappage RDB.

    Mappez les éléments et les attributs du document XML vers les noeuds d'éléments et d'attributs correspondant aux données DB2. Ces noeuds indiquent le chemin des données XML aux données DB2.

  10. Pour ajouter le noeud racine (root) :
    1. Sélectionnez l'icône Root.
    2. Cliquez sur Nouvel élément pour définir un nouveau noeud.
    3. Dans la boîte d'options Détails, indiquez Elément pour Type du noeud.
    4. Entrez le nom du noeud de niveau supérieur dans la zone Nom du noeud.
    5. Cliquez sur Ajout pour créer le noeud.

      Vous avez créé le noeud ou l'élément racine, parent de tous les autres noeuds d'éléments et d'attributs de la mappe. Le noeud racine comporte des éléments enfants de table et une condition de jointure.

    6. Ajoutez des noeuds de tables pour chaque table faisant partie de la collection.
      1. Mettez le nom de noeud racine en évidence et sélectionnez Nouvel élément.
      2. Dans la boîte d'options Détails, indiquez Table pour Type du noeud.
      3. Sélectionnez le nom de la table dans la liste Nom de la table. La table doit déjà exister.
      4. Dans la zone Clé de la table, indiquez une colonne de clé pour la table.
      5. Cliquez sur Ajout pour ajouter le noeud de table.
      6. Répétez ces étapes pour chaque table.
    7. Ajoutez une condition de jointure pour les noeuds de tables.
      1. Mettez le nom de noeud racine en évidence et sélectionnez Nouvel élément.
      2. Dans la boîte d'options Détails, indiquez Condition pour Type du noeud.
      3. Dans la zone Condition, entrez la condition de jointure en respectant la syntaxe suivante :
        table_name.table_column = table_name.table_column AND 
        table_name.table_column = table_name.table_column ...
        
      4. Cliquez sur Ajout pour ajouter la condition.

    Vous pouvez à présent lui ajouter des éléments enfants et des attributs.

  11. Pour ajouter un noeud d'élément ou d'attribut :
    1. Pour ajouter un élément ou un attribut enfant, cliquez sur un noeud parent dans la zone située à gauche.

      Si vous n'avez sélectionné aucun noeud parent, l'option Nouveau n'est pas disponible.

    2. Cliquez sur Nouvel élément.
    3. Sélectionnez un type de noeud dans le menu Type du noeud de la boîte d'options Détails.

      Le menu Type du noeud n'affiche que les types de noeuds valides pour ce point de la mappe. Elément ou attribut.

    4. Renseignez la zone Nom du noeud.
    5. Cliquez sur Ajout pour ajouter le noeud.
    6. Pour mapper le contenu d'un noeud d'élément ou d'attribut vers une table relationnelle :
      1. Indiquez un noeud de texte.
        1. Cliquez sur le noeud parent.
        2. Cliquez sur Nouvel élément.
        3. Dans la zone Type du noeud, sélectionnez Texte.
        4. Sélectionnez Ajout pour ajouter le noeud.
      2. Ajoutez un noeud de table.
        1. Sélectionnez le noeud de texte que vous venez de créer et cliquez sur Nouvel élément.
        2. Dans la zone Type du noeud, sélectionnez Table et indiquez un nom de table pour l'élément.
        3. Cliquez sur Ajout pour ajouter le noeud.
      3. Ajoutez un noeud de colonne.
        1. Resélectionnez le noeud de texte et cliquez sur Nouvel élément.
        2. Dans la zone Type du noeud, sélectionnez Colonne et indiquez un nom de colonne pour l'élément.
        3. Dans la zone Type, indiquez le type de base à affecter à la colonne pour que celle-ci puisse stocker les données non balisées.
        4. Cliquez sur Ajout pour ajouter le noeud.

        Restriction : Vous ne pouvez pas créer de colonne à l'aide de l'assistant d'administration. Si vous indiquez le type de noeud Colonne, vous ne pouvez sélectionner qu'une colonne existant déjà dans votre base de données DB2.

      4. Vous pouvez ajouter une condition pour la colonne.
        1. Resélectionnez le noeud de texte et cliquez sur Nouvel élément.
        2. Dans la zone Type du noeud, sélectionnez Condition et indiquez une condition en respectant la syntaxe :
          operator LIKE|<|>|= value
          
        3. Cliquez sur Ajout pour ajouter le noeud.

      Pour modifier un noeud, sélectionnez-le, éditez les zones dans le groupe d'options Détails, puis cliquez sur Modification.

    7. Poursuivez l'édition de la mappe RDB, ou cliquez sur Suivant pour ouvrir la fenêtre Spécification d'une DAD.
  12. Pour retirer un noeud :
    1. Cliquez sur un noeud figurant dans la zone située à gauche.
    2. Cliquez sur Retrait.
    3. Poursuivez l'édition de la mappe du noeud RDB, ou cliquez sur Suivant pour ouvrir la fenêtre Spécification d'une DAD.
  13. Dans la zone Nom de fichier de la fenêtre Spécification d'une DAD, tapez un nom de fichier de sortie pour la DAD modifiée.
  14. Cliquez sur Fin pour retirer le noeud et revenir au tableau de bord.

A partir du shell de commandes DB2 

Le fichier DAD est un fichier XML qui peut être créé avec n'importe quel éditeur de texte. Les étapes suivantes utilisent des exemples extraits de l'annexe Fichiers DAD. Pour obtenir de plus amples informations et prendre connaissance du contexte, reportez-vous à ces exemples.

  1. Ouvrez un éditeur de texte.
  2. Créez l'en-tête de la DAD :
    <?xml version="1.0"?> 
    <!DOCTYPE DAD SYSTEM "path\dad.dtd"> --> Chemin et nom de fichier de la DTD
    pour la DAD
     
    
  3. Insérez les balises <DAD></DAD>.
  4. Après la balise <DAD>, indiquez l'ID DTD qui associe le fichier DAD à la DTD du document XML.
    <dtdid>path\dtd_name.dtd> --> Chemin et nom de fichier de la DTD
                                         pour l'application
    
  5. Indiquez si vous voulez une validation (avec la DTD pour vérifier que le document XML est valide). Par exemple :
    <validation>NO</validation>  --> Indiquez YES ou NO
    
  6. A l'aide de l'élément <Xcollection>, définissez la méthode d'accès et de stockage collection XML. Les méthodes d'accès et de stockage indiquent que les données XML sont stockées dans une collection de tables DB2.
    <Xcollection>
    </Xcollection>
    
  7. Ajoutez les informations de prologue suivantes :
    <prolog>?xml version="1.0"?</prolog> 
    
    Ce texte est obligatoire.
  8. Ajoutez les balises <doctype></doctype>. Par exemple :
    <doctype>! DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype> 
    
  9. Définissez le noeud racine à l'aide des balises <root_node></root_node>. Dans root_node, indiquez les éléments et les attributs qui composent le document XML.
  10. Après la balise <root_node>, mappez les éléments et les attributs du document XML vers les noeuds d'éléments et d'attributs correspondant aux données DB2. Ces noeuds indiquent le chemin des données XML aux données DB2.
    1. Définissez un noeud d'élément racine de niveau supérieur. Ce noeud d'élément contient :
      • des noeuds de tables associés à une condition de jointure pour indiquer la collection,
      • des éléments enfants,
      • des attributs.
      Pour indiquer les noeuds de tables et les conditions :
      1. Créez un élément de noeud RDB. Par exemple :
              <RDB_node>
        </RDB_node>
        
      2. Définissez un noeud de table <table_node> pour chaque table contenant des données à inclure dans le document XML. Par exemple, soient trois tables, ORDER_TAB, PART_TAB et SHIP_TAB contenant des données de colonne à inclure dans le document. Créez un noeud de table pour chacune d'elles. Par exemple :
              <RDB_node>
        <table name="ORDER_TAB">
        <table name="PART_TAB">
        <table name="SHIP_TAB"></RDB_node>
        
      3. Définissez une condition de jointure pour les tables de la collection. La syntaxe est la suivante :
        expression = expression AND 
        expression = expression ...
        
        Par exemple :
              <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>
        
      4. Indiquez une clé primaire pour chaque table. La clé primaire correspond à une ou plusieurs colonnes, constituant la clé composée. Pour indiquer la clé primaire, ajoutez une clé d'attribut à l'élément table du noeud RDB. L'exemple suivant définit une clé primaire pour chaque table du noeud RDB, dans l'ordre du noeud d'élément racine :
        <element_node name="Order">
              <RDB_node>
                 <table name="order_tab" key="order_key"/>
                 <table name="part_tab" key="part_key price"/>
                 <table name="ship_tab" key="date mode"/>
                               <condition>
                        order_tab.order_key = part_tab.order_key AND 
                            part_tab.part_key = ship_tab.part_key
                               </condition>
              <RDB_node>
         
        
        Les informations de décomposition sont ignorées lors de la composition d'un document XML.

        L'attribut key n'est normalement pas obligatoire pour la décomposition. Cependant, lorsque vous activez une collection, le fichier DAD utilisé doit supporter les opérations de composition et de décomposition.

    2. Définissez une balise <element_node> pour chaque élément du document XML mappant vers une colonne de table DB2. Par exemple :
      <element_node name="name">
      </element_node>
      

      Un noeud d'élément peut être associé à l'un des types d'éléments suivants :

      • <text_node> : pour indiquer que le contenu de l'élément mappe vers une table dB2. Dans ce cas, cet élément ne comporte aucun élément enfant.
      • <attribute_node> : pour indiquer un attribut. Les noeuds d'attributs sont définis à l'étape suivante.
      • éléments enfants

      Le noeud de texte (text_node) comporte un noeud RDB (RDB_node) pour mapper le contenu de l'élément vers une table et une colonne DB2.

      Les noeuds RDB sont utilisés pour des éléments de niveau inférieur dont le contenu doit être mappé vers une table DB2. Un noeud RDB comporte les éléments enfants suivants :

      • <table> : définit la table correspondant à l'élément.
      • <column> : définit la colonne qui contient l'élément correspondant.
      • <condition> : facultatif, indique une condition sur la colonne.

      Par exemple, soit un élément XML <Tax> pour lequel vous voulez stocker le contenu non balisé dans la colonne TAX :

      Document XML :

      <Tax>0.02</Tax>
      

      Dans ce cas, vous voulez stocker la valeur 0,02 dans la colonne TAX.

      Dans le fichier DAD, vous indiquez un noeud RDB (<RDB_node>) pour mapper l'élément XML vers la table et la colonne DB2.

      Fichier DAD :

      <element_node name="Tax"> 
         <text_node> 
            <RDB_node>
               <table name="part_tab"/>
               <column name="tax"/>
            </RDB_node> 
         </text_node> 
      </element_node> 
      

      <RDB_node> indique que la valeur de l'élément <Tax> est une valeur texte et que les données sont stockées dans la colonne TAX de la table PART_TAB.

    3. Définissez une valeur <attribute_node> pour chaque attribut du document XML mappant vers une colonne de table DB2. Par exemple :
      <attribute_node name="key">
      </attribute_node>
      

      Le noeud d'attribut (attribute_node) comporte un noeud RDB (RDB_node) pour mapper la valeur d'attribut vers une table et une colonne DB2. Un noeud RDB comporte les éléments enfants suivants :

      • <table> : définit la table correspondant à l'élément.
      • <column> : définit la colonne qui contient l'élément correspondant.
      • <condition> : facultatif, indique une condition sur la colonne.

      Par exemple, l'élément <Order> peut être associé à un attribut key. La valeur de key doit être stockée dans la colonne PART_KEY.

      Document XML :

          <Order key="1"> 
      

      Dans le fichier DAD, créez un noeud d'attribut pour key et indiquez la table dans laquelle la valeur 1 doit être stockée.

      Fichier DAD :

      <attribute_node name="key"> 
            <RDB_node>
          <table name="part_tab">
          <column name="part_key"/>  
            <RDB_node>
      </attribute_node> 
      
  11. Indiquez le type de colonne associé au noeud RDB pour chaque noeud d'attribut (attribute_node) et noeud de texte (text_node). Ainsi, vous vous assurez que le type de données est correct pour chaque colonne de stockage des données non balisées. Pour indiquer le type de colonne, ajoutez le type d'attribut à l'élément colonne. Dans l'exemple ci-après, vous attribuez la valeur INTEGER au type de colonne :
    <attribute_node name="key">
          <RDB_node>
                        <table name="order_tab"/>
            <column name="order_key" type="integer"/> 
          </RDB_node>
    </attribute_node>
     
    
  12. Vérifiez que vous avez placé une balise de fin </root_node> après la dernière balise </element_node>.
  13. Vérifiez que vous avez placé une balise de fin </Xcollection> après la dernière balise </root_node>.
  14. Vérifiez que vous avez placé une balise de fin </DAD> après la balise </Xcollection>.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]