Introduction aux schémas XSD annotés (SQLXML 4.0)
S’applique à : SQL ServerAzure SQL Database
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> place l’intégralité du schéma ; toutes les déclarations d’élément doivent être contenues dans l’élément <xsd :schema>.< Vous pouvez décrire les attributs qui définissent l’espace de noms dans lequel réside le schéma 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 de l’espace de noms de schéma> XML à 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 XML-Data Reduced (XDR) annoté dans SQL Server 2000 (8.x). 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 les annotations est appelé schéma de mappage, qui fournit des informations sur la façon dont les données XML doivent être mappées 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 consiste à le spécifier dans 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 utilisé est arbitraire. Dans cette documentation, le préfixe sql est utilisé pour désigner l’espace de noms d’annotation et distinguer les annotations de cet espace de noms des autres espaces de noms.
Exemple de schéma XSD annoté
Dans l’exemple suivant, le schéma XSD se compose d’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 AdventureWorks2022
de base de données à l’aide de l’annotation sql :relation . Les attributs ConID, FName et LName sont mappés aux colonnes ContactID, FirstName et LastName de 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, voir Classement et prise en charge d’Unicode.
Autres ressources
Vous trouverez des informations supplémentaires sur le langage XSD (XML Schema Definition), le langage XPath ( XML Path) et le langage XSLT (Extensible Stylesheet Language Transformations) sur les sites Web aux adresses suivantes :
Xml Schema Part 0 : Primer, recommandation W3C (https://www.w3.org/TR/xmlschema-0/)
Partie 1 du schéma XML : Structures, recommandation W3C (https://www.w3.org/TR/xmlschema-1/)
Xml Schema Part 2 :Datatypes, recommandation W3C (https://www.w3.org/TR/xmlschema-2/)
Xml Path Language (XPath) (https://www.w3.org/TR/xpath)
Transformations XSL (XSLT) (https://www.w3.org/TR/xslt)
Voir aussi
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)