DDL de gestion de collections de schémas XML dans la base de données

Comme décrit dans la rubrique Gestion des collections de schémas XML sur le serveur, vous pouvez créer des collections de schémas XML dans la base de données et les associer à des variables et à des colonnes de type xml. Pour gérer des collections de schémas dans la base de données, SQL Server fournit les instructions DDL suivantes :

Pour utiliser une collection de schémas XML et les schémas qu'elle contient, vous devez d'abord créer la collection et les schémas à l'aide de l'instruction CREATE XML SCHEMA COLLECTION. Une fois la collection de schémas créée, vous pouvez ensuite créer des variables et des colonnes de type xml et y associer la collection de schémas. Notez qu'après la création d'une collection de schémas, différents composants de schémas sont stockés dans les métadonnées. Vous pouvez également utiliser l'instruction ALTER XML SCHEMA COLLECTION pour ajouter des composants aux schémas existants ou pour ajouter de nouveaux schémas à une collection existante.

Pour supprimer la collection de schémas, utilisez l'instruction DROP XML SCHEMA COLLECTION. Cela supprime tous les schémas contenus dans la collection et supprime l'objet collection. Notez que pour qu'une collection de schémas puisse être supprimée, les conditions décrites dans DROP XML SCHEMA COLLECTION (Transact-SQL) doivent être réunies.

Description des composants de schémas

Lorsque vous utilisez l'instruction CREATE XML SCHEMA COLLECTION, différents composants de schémas sont importés dans la base de données. Les composants de schémas incluent des éléments de schémas, des attributs et des définitions de types. Lorsque vous utilisez l'instruction DROP XML SCHEMA COLLECTION, vous supprimez l'intégralité de la collection.

CREATE XML SCHEMA COLLECTION enregistre les composants de schémas dans différentes tables système.

Imaginons, par exemple, le schéma suivant :

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="uri:Cust_Orders2"
            xmlns="uri:Cust_Orders2" >
  <xsd:attribute name="SomeAttribute" type="xsd:int" />
  <xsd:complexType name="SomeType" />
  <xsd:complexType name="OrderType" >
    <xsd:sequence>
      <xsd:element name="OrderDate" type="xsd:date" />
      <xsd:element name="RequiredDate" type="xsd:date" />
      <xsd:element name="ShippedDate" type="xsd:date" />
    </xsd:sequence>
    <xsd:attribute name="OrderID" type="xsd:ID" />
    <xsd:attribute name="CustomerID"  />
    <xsd:attribute name="EmployeeID"  />
  </xsd:complexType>
  <xsd:complexType name="CustomerType" >
     <xsd:sequence>
        <xsd:element name="Order" type="OrderType"
                     maxOccurs="unbounded" />
       </xsd:sequence>
      <xsd:attribute name="CustomerID" type="xsd:string" />
      <xsd:attribute name="OrderIDList" type="xsd:IDREFS" />
  </xsd:complexType>
  <xsd:element name="Customer" type="CustomerType" />
</xsd:schema>

Le schéma précédent montre les différents types de composants qui peuvent être stockés dans la base de données. Il s'agit notamment de SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate et ShippedDate.

Catégories de composant

Les composants de schéma stockés dans la base de données appartiennent aux catégories suivantes :

  • ELEMENT

  • ATTRIBUTE

  • TYPE (pour les types simples ou complexes)

  • ATTRIBUTEGROUP

  • MODELGROUP

Par exemple :

  • SomeAttribute est un composant ATTRIBUTE.

  • SomeType, OrderType et CustomerType sont des composants TYPE.

  • Customerest un composant ELEMENT.

Lorsque vous importez un schéma dans la base de données, SQL Server ne stocke pas le schéma lui-même. Au lieu de cela, SQL Server stocke les divers composants individuels. Autrement dit, la balise <Schema> n'est pas stockée ; seuls les composants qui y sont définis sont préservés. Tous les éléments de schémas ne sont pas préservés. Si la balise <Schema> contient des attributs qui spécifient le comportement par défaut de ses composants, ces attributs sont déplacés vers les composants de schémas dans la balise durant le processus d'importation, comme illustré dans le tableau suivant.

Nom de l'attribut

Comportement

attributeFormDefault

L'attribut form est appliqué à toutes les déclarations d'attributs du schéma où il n'est pas déjà présent et la valeur est définie à la valeur de l'attribut attributeFormDefault.

elementFormDefault

L'attribut form est appliqué à toutes les déclarations d'éléments du schéma où il n'est pas déjà présent et la valeur est définie à la valeur de l'attribut elementFormDefault.

blockDefault

L'attribut block est appliqué à toutes les déclarations d'éléments et définitions de types où il n'est pas déjà présent et la valeur est définie à la valeur de l'attribut blockDefault.

finalDefault

L'attribut final est appliqué à toutes les déclarations d'éléments et définitions de types où il n'est pas déjà présent et la valeur est définie à la valeur de l'attribut finalDefault.

targetNamespace

Les informations relatives aux composants qui appartiennent à l'espace de noms cible sont stockées dans les métadonnées.