Passer au contenu

Échangez les données en XML avec SQL Server 2000

Dotée de puissantes fonctions d’import-export de données au format XML, la seconde version du SGBD Microsoft SQL Server 2000 simplifie les échanges d’informations entre applications.

SQL Server 2000 exécute des requêtes puis formate les résultats comme un document XML, directement ou depuis des procédures stockées. Pour y parvenir, utilisez une nouvelle clause de l’instruction “Select” : “FOR XML”. De même, il est possible de réinsérer les données d’un document ou d’un flux XML dans une base de données SQL Server 2000 en recourant aux procédures stockées et aux fonctions système. Puissantes, ces nouvelles fonctions simplifient considérablement la mise en place de mécanismes d’échanges de données dans vos applications internet ou de commerce électronique.

1. Testez la clause “FOR XML”

Une fois SQL Server 2000 installé et lancé, rendez-vous dans l’analyseur de requêtes. Exécutez-y la requête “Select Customerid, Companyname From Customers FOR XML AUTO” sur la base de données de démonstration Northwind puis observez le résultat. Vous obtenez alors un flux de données XML (semblable à celui de la capture d’écran 1) et non un résultat relationnel (mettant en rapport des lignes et des colonnes).

2. Placez une requête “FOR XML” dans une page ASP

Dans un projet Visual Interdev, créez une nouvelle page ASP et saisissez le code que nous publions dans l’encadré A, page suivante. Dans un premier temps, une connexion vers un serveur SQL 2000 est réalisée (Objet c). Les requêtes SQL et de flux XML (sQuery) sont ensuite définies ; la seconde alimente l’objet flux “Stream”, contenant le flux XML renvoyé par l’exécution de la requête. Contrairement à une requête SQL classique, la requête “FOR XML” que vous exécutez ne vous retourne pas l’habituel flux tabulaire de données (Recordset ADO), mais un flux continu de données XML.

3. Invoquez la requête “FOR XML”

La dernière partie du code utilise une commande “ADO” (ActiveX Data Object) de façon particulière : la propriété “Command Text” fait place à la propriété “CommandStream”, qui sert à préciser le flux d’entrée utilisé pour la commande “ADO”. La propriété “Dialect” précise le format de sortie de ce flux (en l’occurrence XML), tandis que la propriété “Output Stream” indique la destination vers laquelle il doit être redirigé (en l’occurrence, vers l’objet “Response”, représentation objet de la page ASP traitée et retournée au navigateur). Exécutez la commande avec l’option “1024” (constante “adExecuteStream”), qui spécifie que vous attendez un flux en lieu et place d’un “Recordset”.

4. Évaluez votre page ASP

Visualisez votre page ASP dans un navigateur doté d’un analyseur (parseur) XML, tel Microsoft Internet Explorer (IE) 5.0. Vous aurez alors un résultat analogue à l’écran publié ci-contre. La présentation de ce résultat est inhérente à IE 5.0, qui représente nativement un document XML dans sa forme arborescente. Par extension, essayez de lier votre document XML à un document XSL (eXtensible Stylesheet Language) de façon à assurer, par exemple, une présentation HTML adéquate (pour plus d’informations sur XSL, reportez-vous à la mise en ?”uvre Créer des documents internet en XML, XSL et CSS, publiée dans le n?’41 d’ Internet Professionnel, en avril 2000).

5. Insérez un document XML dans une table SQL Server

Pour terminer la boucle d’un échange de données interapplicatif, vous devez maintenant mettre en ?”uvre la manipulation inverse, à savoir réimporter les informations d’un document XML dans une table SQL Server 2000. Dans une fenêtre de l’analyseur de requêtes SQL Server, assurez-vous que la base de données Northwind est bien sélectionnée. Saisissez ensuite le code publié en haut de la page dans l’encadré B. Exécutez-le et observez le résultat.

6. Comprenez votre code

Dans la première partie du code, déclarez un document XML simple (“@doc”) à 2 niveaux arborescents (les sites et les contacts). Le document XML utilise des attributs pour décrire les données des sites et des contacts, mais il aurait été possible de les représenter sous forme de balises indépendantes (PBAS, par exemple). Vous pouvez aussi ouvrir un document XML existant depuis un fichier. Une fois le document déclaré, vous obtenez un pointeur (“@idoc”) vers une représentation de ce document interne à SQL Server, à l’aide de la nouvelle procédure stockée système “sp_xml_preparedo cument”. Passez ensuite ce pointeur à la nouvelle fonction “OPENXML” afin de récupérer les données souhaitées du document XML. La syntaxe de la fonction “OPENXML” vous autorise, à chaque appel, à spécifier le niveau de données de l’arbre XML que vous souhaitez récupérer (dans le premier “Select”, les données des sites et dans le second, les données des contacts). Ensuite, le paramètre de valeur 1 de “OPENXML” signifie que les données XML s’appuient sur des attributs et non sur des balises indépendantes (valeur 2). Enfin, la clause “WITH” sert à redéfinir la structure des données extraites.À présent, détruisez votre pointeur “@idoc” à l’aide de “sp_xml_remove document”. Pour ajouter les données récupérées dans une table de votre base SQL Server, faites précéder les instructions “Select” du code par une instruction du type “Insert into TableDeDestination”, la table de destination ayant, bien entendu, la structure appropriée pour recevoir les informations sélectionnées.SQL Server 2000 permet donc d’extraire des données directement dans un format XML, tout en offrant de puissantes fonctions d’intégration des informations XML ; il simplifie ainsi les échanges de données ouverts entre applications. À ce stade, vous n’avez eu toutefois qu’un aperçu des possibilités de XML liées à SQL Server 2000. Par extension, exercez-vous, par exemple, aux différentes variantes de la clause “FOR XML” ou découvrez l’envoi de requêtes “FOR XML” directement comme URL depuis le navigateur. Testez également la deuxième partie de cette mise en ?”uvre avec ADO dans une page ASP.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Christian Fourneau