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

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 en charge XML.

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

  1. Pour activer l'extension Oracle dans votre modèle, sélectionnez Modèle > Extensions, cliquez sur l'outil Attacher une extension, sélectionnez Oracle XML DB (sur l'onglet XML dans les bases de données), puis cliquez sur OK pour l'attacher.
  2. [facultatif] Spécifiez les propriétés suivantes sur l'onglet Attributs étendus de la feuille de propriétés des éléments :

    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

  3. [facultatif] Spécifiez les propriétés suivantes sur l'onglet Attributs étendus de la feuille de propriétés des types complexes :

    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

  4. [facultatif] Spécifiez les propriétés suivantes sur l'onglet Attributs étendus de la feuille de propriétés du modèle :

    Annotation

    Description

    mapUnboundedStringToLob

    Si True, les chaînes non limitées sont mises 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

  5. Sélectionnez Langage > Générer des fichiers type de schéma pour afficher la boîte de dialogue Génération.
  6. Spécifiez le répertoire dans lequel générer le fichier, puis sélectionnez la cible XML dans les bases de données sur l'onglet Cibles.


  7. Cliquez sur OK pour lancer la génération.

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

  8. Cliquez sur Editer pour ouvrir le schéma annoté généré dans votre éditeur associé :


    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)