Mappage explicite d'éléments et d'attributs XSD avec les tables et les colonnes (SQLXML 4.0)
Lors de l'utilisation d'un schéma XSD pour fournir une vue XML de la base de données relationnelle, les éléments et les attributs du schéma doivent être mappés avec les tables et les colonnes de la base de données. Les lignes de la table/vue de la base de données seront mappées avec les éléments du document XML. Les valeurs des colonnes de la base de données sont mappées avec les attributs ou les éléments.
Lorsque les requêtes XPath sont spécifiées par rapport au schéma XSD annoté, les données des éléments et des attributs du schéma sont extraites des tables et des colonnes avec lesquelles elles sont mappées. Pour obtenir une valeur unique de la base de données, le mappage spécifié dans le schéma XSD doit posséder les spécifications de relation et de champ. Si le nom d'un élément/attribut n'est pas identique à celui de la table/vue ou de la colonne à laquelle il est mappé, les annotations sql:relation et sql:field sont utilisées pour spécifier le mappage entre un élément ou un attribut d'un document XML et la table (vue) ou colonne d'une base de données.
sql-relation
L'annotation sql:relation est ajoutée pour mapper un nœud XML du schéma XSD avec une table de base de données. Le nom d'une table (vue) est spécifiée comme valeur de l'annotation sql:relation.
Lorsque l'annotation sql:relation est spécifiée sur un élément, sa portée s'applique à tous les attributs et éléments enfants décrits dans la définition de type complexe de cet élément, fournissant ainsi un raccourci pour l'écriture d'annotations.
L'annotation sql:relation est également utile quand les identificateurs valides dans Microsoft SQL Server ne le sont pas en XML. Par exemple, « Détails des commandes » est un nom de table valide dans SQL Server, mais non en XML. Dans de tels cas, l'annotation sql:relation peut être utilisée pour spécifier le mappage, par exemple :
<xsd:element name="OD" sql:relation="[Order Details]">
sql-field
L'annotation sql-field mappe un élément ou un attribut avec une colonne de base de données. L'annotation sql:field est ajoutée pour mapper un nœud XML du schéma avec une colonne de base de données. Vous ne pouvez pas spécifier sql:field sur un élément de contenu vide.
Exemples
Pour créer des exemples fonctionnels à l'aide des exemples suivants, un certain nombre de conditions doivent être réunies. Pour plus d'informations, consultez Configuration requise pour l'exécution des exemples SQLXML.
A.Specifying the sql:relation and sql:field annotations
Dans cet exemple, le schéma XSD consiste en un élément <Contact> de type complexe avec les éléments enfants <FName> et <LName> et l'attribut ContactID.
L'annotation sql:relation mappe l'élément <Contact> avec la table Person.Contact de la base de données AdventureWorks. L'annotation sql:field mappe l'élément <FName> avec la colonne FirstName et l'élément <LName> avec la colonne LastName.
Aucune annotation n'est spécifiée pour l'attribut ContactID. Il s'ensuit un mappage par défaut de l'attribut avec la colonne du même nom.
<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="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Pour tester un exemple de requête XPath sur le schéma
Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez le fichier sous le nom MySchema-annotated.xml.
Copiez le modèle suivant ci-dessous et collez-le dans un fichier texte. Enregistrez le fichier sous le nom MySchema-annotatedT.xml dans le même répertoire que celui où vous avez enregistré MySchema-annotated.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>
Le chemin d'accès au répertoire spécifié pour le schéma de mappage (MySchema-annotated.xml) varie en fonction du répertoire où le modèle est enregistré. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"
Créez et utilisez le script de test SQLXML 4.0 (Sqlxml4test.vbs) pour exécuter le modèle.
Pour plus d'informations, consultez Utilisation d'ADO pour exécuter des requêtes SQLXML.
Voici le jeu de résultats partiel :
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>