Chapter 6 Echange de données avec des bases de données qui prennent en charge XML


Génération d'un schéma annoté pour Oracle 9i2

Oracle 9i2 est un serveur de base de données doté d'un stockage en XML natif et d'une technologie d'interrogation appelée Oracle XML DB. Il n'existe aucune correspondance entre XML et les données relationnelles. Les tables, les colonnes et les types de données abstraits sont créés à partir des schémas annotés (fichiers XSD). Un schéma annoté est un fichier XML ayant un langage XML comme langage cible et comportant des annotations spécifiques au SGBD qui permettent de stocker ou d'extraire des données au format XML depuis des bases de données relationnelles prenant un charge XML.

Un modèle XML permet de générer un schéma annoté (fichier XSD) pour Oracle 9i2. Vous devez attacher une définition étendue de modèle Oracle 9i2 au modèle XML. Oracle 9i2 utilise par défaut le nom des éléments XML présents dans le schéma annoté pour générer des objets SQL. Vous pouvez prendre le pas sur la création des objets SQL en définissant des attributs étendus sur les éléments, les types complexe et le modèle XML.

WARNING! 

Attention
La procédure suivante suppose que vous avez ouvert un modèle XML ayant pour cible XSD dans votre espace de travail.

Steps Pour générer un schéma annoté pour Oracle 9i2 :

  1. Sélectionnez Modèle→Définitions étendues de modèle.

    La boîte de dialogue Liste des définitions étendues de modèle s'affiche.
  2. Cliquez sur le bouton Importer une définition étendue de modèle.

    La boîte de dialogue Sélection des définitions étendues de modèle s'affiche.
  3. Dans le sous-onglet XML dans les bases de données, sélectionnez XML DB 9.2.
  4. Cliquez sur OK.

    XML DB 9.2 apparaît dans la boîte de dialogue Liste des définitions étendues de modèle.
  5. Cliquez sur OK.

    La définition étendue de modèle apparaît dans l'arborescence de l'Explorateur d'objets, attachée au modèle XML.
  6. Double-cliquez sur un symbole d'élément dans le diagramme pour afficher sa feuille de propriétés.
  7. Dans l'onglet Attributs étendus, saisissez le nom d'une table ou d'une colonne dans la colonne Valeur de l'annotation SQLName, si vous souhaitez créer une table ou une colonne à partir de l'élément sélectionné.


    Vous pouvez définir une valeur pour les annotations suivantes :
    Annotation Description
    beanClassname Pour être utilisé avec des déclarations d'élément. Si l'élément est basé sur un complexType global, ce nom doit être identique à la valeur beanClassname au sein de la déclaration de complexType. Si un nom est spécifié par l'utilisateur, la génération du bean va générer une classe bean avec son nom, au lieu de générer un nom à partir du nom de l'élément
    columnProps Spécifie la clause de stockage de colonne qui est insérée dans l'instruction CREATE TABLE par défaut. Principalement utile pour les éléments qui sont mis en correspondance avec des tables, tout particulièrement les déclarations d'élément racine et les déclarations de sous-élément
    defaultTable Spécifie le nom de la table dans laquelle les instances XML de ce schéma seront stockées. Ceci est surtout utile dans les cas où XML est inséré à partir d'API dans lesquels un nom de table n'est pas spécifié (par exemple, FTP et HTTP)
    javaClassname Utilisé pour spécifier le nom d'une classe Java qui est dérivée de la classe bean correspondante, ce afin de s'assurer qu'un objet de cette classe est instancié durant l'accès au bean. Si aucun JavaClassname n'est spécifié, Oracle XML DB va instancier un objet de la classe bean directement
    maintainDOM Si True, les instances de cet élément sont stockées de sorte qu'elles retiennent la fidélité DOM en sortie. Ceci implique que tous les commentaires, instructions de traitement, déclarations d'espace de noms etc. soient conservés en plus de l'ordre des éléments. Si False, la sortie n'a pas besoin d'avoir le même comportement DOM que l'entrée
    maintainOrder Si True, la collection est mise en correspondance avec un VARRAY. Si False, la collection est mise en correspondance avec une NESTED TABLE
    SQLCollSchema Nom de l'utilisateur de la base de données qui possède le type spécifié par SQLCollType
    SQLCollType Spécifie le nom du type de collection SQL correspondant à cet élément XML pour lequel maxOccurs > 1
    SQLInline Si True, cet élément est stocké en ligne sous forme d'un attribut imbriqué (ou d'une collection si maxOccurs > 1). Si False, un REF (ou une collection de REF si maxOccurs > 1) est stocké. Cet attribut peut être forcé à False dans certaines situations (telles que des références cycliques) dans lesquelles SQL ne prend pas charge la mise en ligne
    SQLName Spécifie le nom de l'attribut au sein de l'objet SQL mis en correspondance avec cet élément XML
    SQLSchema Nom de l'utilisateur de base de données qui possède le type spécifié par SQLType
    SQLType Spécifie le nom du type SQL correspondant à cette déclaration d'élément XML
    tableProps Spécifie la clause de storage TABLE qui est ajoutée à l'instruction CREATE TABLE par défaut. Significatif surtout pour les éléments globaux et les sous-éléments
  8. Cliquez sur OK.
  9. Répétez les étapes 6 à 8 pour chaque élément que vous souhaitez générer dans une table ou dans une colonne.
  10. Double-cliquez sur un symbole de type complexe dans le diagramme pour afficher sa feuille de propriétés.
  11. Dans l'onglet Attributs étendus, saisissez le nom d'un type de données abstrait dans la colonne Valeur de l'annotation SQLType, si vous souhaitez créer un type de données abstrait à partir du type complexe sélectionné.


    Vous pouvez définir une valeur pour les annotations suivantes :
    Annotation Description
    beanClassname Peut être utilisé au sein de déclarations d'élément. Si l'élément est basé sur un complexType global, ce nom doit être identique à la valeur beanClassname au sein de la déclaration de complexType. Si un nom est spécifié par l'utilisateur, la génération de bean va produire une classe bean ayant ce nom, au lieu de générer un nom à partir du nom de l'élément
    SQLSchema Nom de l'utilisateur de base de données qui possède le type spécifié par SQLType
    SQLType Spécifie le nom du type SQL correspondant à cette déclaration d'élément XML
  12. Cliquez sur OK.
  13. Répétez les étapes 10 à 12 pour chaque type complexe que vous souhaitez générer dans un type de données abstrait ou pour lequel vous souhaitez définir des annotations supplémentaires.
  14. <facultatif> Dans l'arborescence de l'Explorateur d'objets, double-cliquez sur le modèle pour afficher sa feuille de propriétés.
  15. Dans l'onglet Attributs étendus, vous pouvez sélectionner une valeur (False ou True) pour les annotations suivantes :
    Annotation Description
    mapUnboundedStringToLob Si True, les chaînes non limitées sont mise en correspondance avec CLOB par défaut. De même, les données binaires non limitées sont mises en correspondance avec BLOB par défaut. Si False, les chaînes non limitées sont mises en correspondance avec VARCHAR2(4000), et les composants binaires non limités sont mis en correspondance avec RAW(2000)
    storeVarrayAsTable Si True, le VARRAY est stocké sous forme de table (OCT). Si False, le VARRAY est stocké sous forme de LOB
  16. Cliquez sur OK.
  17. Sélectionnez Langage→Générer des fichiers XML Schema Definition.

    La boîte de dialogue Génération s'affiche avec la définition étendue de modèle sélectionnée dans l'onglet Cibles.
  18. Sélectionnez un chemin pour le schéma annoté en utilisant l'outil Sélectionner un chemin en regard de la zone Répertoire.
  19. Cliquez sur OK.

    La boîte de dialogue Résultats s'affiche, avec le chemin du fichier de schéma géré sélectionné.
  20. Cliquez sur Editer.

    Le schéma annoté apparaît dans la fenêtre de l'éditeur.


    Remarquez l'espace de noms Oracle (avec le préfixe sql) et les annotations pour les tables (sql:SQLName) ainsi que pour les types de données abstraits (sql:SQLType).
  21. Cliquez sur Fermer dans la boîte de dialogue Résultats.

 


Copyright (C) 2007. Sybase Inc. All rights reserved.