Introduction aux schémas XSD annotés (SQLXML 4.0)

Vous pouvez créer des vues XML de données relationnelles à l'aide du langage XSD (XML Schema Definition). Ces vues peuvent ensuite être interrogées à l'aide de requêtes XML Path (XPath). Cette opération équivaut à créer des vues à l'aide d'instructions CREATE VIEW et à spécifier ensuite des requêtes SQL contre les vues.

Un schéma XML décrit la structure d'un document XML, ainsi que diverses contraintes agissant sur les données du document. Lorsque vous spécifiez des requêtes XPath à exécuter dans le schéma, la structure du document XML retournée est déterminée par le schéma dans lequel la requête XPath est exécutée.

Dans un schéma XSD, l'élément <xsd:schema> englobe le schéma entier ; toutes les déclarations d'éléments doivent être contenues dans l'élément <xsd:schema>. Vous pouvez décrire des attributs qui définissent l'espace de noms dans lequel le schéma réside et les espaces de noms utilisés dans le schéma comme propriétés de l'élément <xsd:schema>.

Un schéma XSD valide doit contenir l'élément <xsd:schema> défini comme suit :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- additional schema definitions here -->
</xsd:schema>

L'élément <xsd:schema> est dérivé de la spécification d'espace de noms XML Schema à l'adresse http://www.w3.org/2001/XMLSchema.

Annotations dans le schéma XSD

Vous pouvez utiliser un schéma XSD avec des annotations qui décrivent le mappage à une base de données, interroger la base de données, puis retourner les résultats sous la forme d'un document XML. Les annotations sont fournies pour mapper un schéma XSD à des tables et des colonnes de base de données. Vous pouvez définir et exécuter des requêtes XPath dans la vue XML créée par le schéma XSD pour interroger la base de données et obtenir des résultats sous forme de données XML.

[!REMARQUE]

Dans Microsoft SQLXML 4.0, le langage de schéma XSD prend en charge les annotations introduites avec le langage de schéma XDR (XML-Data Reduced) dans SQL Server 2000. Le langage XDR annoté est déconseillé dans SQLXML 4.0.

Dans le contexte de la base de données relationnelle, il est utile de mapper le schéma XSD arbitraire à un magasin relationnel. Une manière d'y parvenir consiste à annoter le schéma XSD. Un schéma XSD avec annotations est désigné sous le nom de schéma de mappage. C'est l'élément qui fournit des informations sur le mode de mappage des données XML au magasin relationnel. Un schéma de mappage constitue en réalité une vue XML des données relationnelles. Ces mappages peuvent servir à extraire des données relationnelles sous la forme d'un document XML.

Espace de noms des annotations

Dans un schéma XSD, les annotations sont spécifiées à l'aide de l'espace de noms urn:schemas-microsoft-com:mapping-schema. Comme illustré dans l'exemple suivant, le moyen le plus simple de spécifier l'espace de noms est de le faire à l'intérieur de la balise <xsd:schema>.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
...
</xsd:schema>

Le préfixe d'espace de noms employé est arbitraire. Dans cette documentation, le préfixe sql est utilisé pour désigner l'espace de noms des annotations et distinguer les annotations de ce même espace de celles figurant dans d'autres espaces de noms.

Exemple de schéma XSD annoté

Dans l'exemple suivant, le schéma XSD consiste en un élément <Person.Contact>. L'élément <Employee> a un attribut ContactID et des éléments enfants <FirstName> et <LastName> :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"  
                     type="xsd:string" /> 
        <xsd:element name="LName"
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Des annotations sont ajoutées à ce schéma XSD pour mapper ses éléments et attributs aux tables et colonnes de base de données :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Contact" sql:relation="Person.Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"
                     sql:field="FirstName" 
                     type="xsd:string" /> 
        <xsd:element name="LName"  
                     sql:field="LastName"  
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" 
                       sql:field="ContactID" 
                       type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Dans le schéma de mappage, l'élément <Contact> est mappé à la table Person.Contact dans l'exemple de base de données AdventureWorks à l'aide de l'annotation sql:relation. Les attributs ConID, FName et LName sont mappés aux colonnes ContactID, FirstName et LastName dans la table Person.Contact à l'aide des annotations sql:field.

Ce schéma XSD annoté crée la vue XML des données relationnelles. Vous pouvez interroger cette vue XML au moyen du langage XPath. En guise de résultat, une requête XPath retourne un document XML au lieu de l'ensemble de lignes retourné par les requêtes SQL.

[!REMARQUE]

Dans le schéma de mappage, le respect de la casse pour les valeurs relationnelles spécifiées (telles que le nom de table et le nom de colonne) varie selon que SQL Server utilise des paramètres de classement sensibles à la casse. Pour plus d'informations, consultez Prise en charge d'Unicode et du classement.

Autres ressources

Vous trouverez des informations supplémentaires à propos du langage XSD (XML Schema Definition), du langage XPath (XML Path) et du langage XSLT (Extensible Stylesheet Language Transformations) sur les sites Web aux adresses suivantes :

Voir aussi

Référence

Considérations sur la sécurité des schémas annotés (SQLXML 4.0)

Schémas XDR annotés (déconseillés dans SQLXML 4.0)