Présentation des schémas XDR annotés (déconseillés dans SQLXML 4.0)

Important

Cette rubrique est fournie à titre de référence pour les applications héritées. Cette fonctionnalité ne fera plus l'objet d'aucun travail de développement. Évitez de l'utiliser dans vos nouveaux travaux de développement. Utilisez à la place des schémas XSD annotés pour créer des vues XML. Pour plus d'informations, consultez Introduction aux schémas XSD annotés (SQLXML 4.0). Vous pouvez convertir des schémas XDR annotés existants en schémas XSD. Pour plus d'informations, consultez Conversion de schémas XDR annotés en schémas XSD équivalents (SQLXML 4.0).

Vous pouvez créer des vues XML de données relationnelles à l'aide de schémas XDR (XML-Data Reduced). Ces vues peuvent ensuite être interrogées au moyen de requêtes XPath. Cette opération équivaut à créer une vue à l'aide d'instructions CREATE VIEW et à définir des requêtes SQL à appliquer dans la vue.

Un schéma XML décrit la structure d'un document XML, ainsi que diverses contraintes agissant sur les données au sein 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 Microsoft SQL Server 2000, le langage XDR (XML-Data Reduced) est d'abord apparu dans le but de créer des schémas XML. Le langage XDR était alors synonyme de flexibilité et répondait à toutes les limitations inhérentes aux définitions de type de document (DTD) auxquelles il est également possible de faire appel pour décrire la structure du document XML. Contrairement aux DTD, les schémas XDR utilisent la même syntaxe que celle du document XML pour décrire la structure du document. Qui plus est, dans une définition de type de document, toutes les données sont composées de caractères. Les schémas de langage XDR vous permettent de spécifier le type de données d'un élément ou d'un attribut.

Dans un schéma XDR, l'élément <Schema> entoure le schéma tout entier. En guise de propriétés de l'élément <Schema>, vous pouvez décrire des attributs qui définissent le nom de schéma et l'espace de noms dans lequel le schéma réside. Dans le langage XDR, toutes les déclarations d'éléments doivent figurer dans l'élément <Schema>.

Le schéma XDR minimum est le suivant :

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
   ...
</Schema>

L'élément <Schema> est issu de l'espace de noms xml-data (urn:schemas-microsoft-com:xml-data).

Notes

Cette documentation suppose une connaissance suffisante du langage XML-Data.

Annotations dans le schéma XDR

Vous pouvez utiliser un schéma XDR avec des annotations qui décrivent le mappage à la base de données afin d'interroger la base de données et de retourner les résultats sous la forme d'un document XML. SQL Server 2000 propose plusieurs annotations à l'aide desquelles vous pouvez mapper le schéma XDR aux tables et aux colonnes de la base de données SQL. Vous pouvez définir et exécuter des requêtes XPath dans la vue XML créée par le schéma XDR pour interroger la base de données et obtenir des résultats sous forme de données XML.

Cette solution constitue une alternative au processus plus complexe d'écriture d'une requête SQL qui utilise le mode FOR XML EXPLICIT pour décrire la structure de document XML dans le cadre de la requête. Toutefois, pour éviter la plupart des limitations concernant les requêtes XPath en matière de schémas de mappage, utilisez des requêtes SQL en mode FOR XML EXPLICIT pour obtenir des résultats sous forme de document XML.

Si vous disposez de schémas XDR publics (par exemple, des schémas Microsoft BizTalk), vous pouvez effectuer l'une des opérations suivantes :

  • Écrivez la requête en mode FOR XML EXPLICIT afin que les données générées soient valides par rapport au schéma XDR public. Néanmoins, l'écriture de requêtes FOR XML EXPLICIT peut s'avérer fastidieuse.

  • Créez une copie privée du schéma XDR public, puis ajoutez-y des annotations pour générer ainsi un schéma de mappage. Vous pouvez spécifier des requêtes XPath par rapport au schéma de mappage. La requête génère alors les données dans l'espace de noms du schéma public. La création de schémas annotés et la spécification de requêtes XPath pour ces schémas forment un processus plus simple que l'écriture de requêtes FOR XML EXPLICIT complexes. L'illustration ci-dessous présente ce processus.

Utilisation d'une copie de schéma pour effectuer des annotations.

Schéma de mappage

Dans le contexte de la base de données relationnelle, il est utile de mapper le schéma XDR arbitraire à un magasin relationnel. Une manière d'y parvenir est d'annoter le schéma XDR. Un schéma XDR avec annotations est désigné sous le nom de mapping schema. 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.

SQL Server 2000 propose plusieurs annotations que vous pouvez utiliser au sein du schéma XDR pour mapper les éléments et les attributs aux tables et aux colonnes de la base de données. Vous pouvez spécifier des requêtes par rapport aux schémas de mappage (vues XML) à l'aide de XPath (XML Path). Le schéma de mappage décrit la structure de document obtenue.

Espace de noms des annotations

Dans un schéma XDR, les annotations sont spécifiées au moyen de cet espace de noms : urn:schemas-microsoft-com:xml-sql.

L'exemple suivant démontre que le moyen le plus simple de spécifier l'espace de noms est de le faire à l'intérieur du <schéma>. Les annotations doivent être qualifiées par l'espace de noms urn:schemas-microsoft-com:xml-sql.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql"
               >
    ...........
</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.

Espace de noms des types de données

Les schémas XDR vous permettent de spécifier le type de données d'un élément ou d'un attribut. Les types de données sont spécifiés à l'aide de l'espace de noms suivant : urn:schemas-microsoft-com:datatypes.

Voici le schéma XDR minimum avec les déclarations d'espaces de noms :

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql"
        xmlns:dt="urn:schemas-microsoft-com:datatypes">
   ...
</Schema>

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

L'élément <Schema> est issu de l'espace de noms xml-data suivant : urn:schemas-microsoft-com:xml-data.

Exemple de schéma XDR

Cet exemple précise la manière dont les annotations sont ajoutées au schéma XDR. Ce schéma XDR se compose d'un élément <Contacts> et des attributs CID, FName et LName.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Contacts" >
    <AttributeType name="CID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />

    <attribute type="CID" />
    <attribute type="FName" />
    <attribute type="LName" />
</ElementType>
</Schema>

Les annotations sont maintenant ajoutées à ce schéma XDR afin de mapper ses éléments et ses attributs aux noms des tables et colonnes SQL dans l'exemple de base de données AdventureWorks2008R2. Voici le schéma XDR annoté :

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Contacts" sql:relation="Person.Person" >
    <AttributeType name="CID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />

    <attribute type="CID" sql:field="BusinessEntityID" />
    <attribute type="FName" sql:field="FirstName" />
    <attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>

Dans le schéma de mappage, l'élément <Contacts> est mappé à la table Person.Person à l'aide de l'annotation sql:relation. Les attributs CID, FName et LName sont mappés aux colonnes BusinessEntityID, FirstName et LastName dans la table Person.Person à l'aide des annotations sql:field.

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

Notes

Dans le schéma de mappage, les valeurs relationnelles définies (telles que les noms des tables et des colonnes) respectent la casse.