MS SQL Server 2000 propose un traitement intéressant de XML pour exporter et importer des données depuis une base de données SQL en conjonction avec le serveur Internet Information Server de Microsoft.
Il convient d'abord de configurer correctement le serveur IIS afin de déclarer divers répertoires virtuels grâce à un procédure simple et parfaitement documentée. On pourra alors appeler des URL de la forme :
http://serveur/bibli?SQL=SELECT+Nom+Prénom+from+Auteur+for+xml+Raw&root=auteurs
qui retournera un fichier xml simple.
On peut rajouter en paramètre une feuille de style qui permettra un affichage de meilleure qualité.
La limite à la longueur des chaînes que l'on peut transmettre restreint quelque peu l'intérêt de la procédure précédente.
MS SQL propose une syntaxe permettant d'écrire directement une requête dans une page xml. Ainsi, la page suivante permet d'interroger la base de données Bibli (correctement configurée) pour obtenir la liste des auteurs
<?xml version="1.0" encoding="iso-8859-1"?>
<AUTEURS xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query>
SELECT Nom, Prénom, Nationalité
FROM Auteur
ORDER BY Nom
FOR XML AUTO, ELEMENTS
</sql:query>
</AUTEURS>
L'appel se fait par une url de la forme
http://serveur/bibli/Template/auteurs.xml
Il suffit maintenant de rajouter la feuille xslt adéquate pour obtenir une présentation sous forme de tableau :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>Liste des auteurs</title>
<STYLE>
body {background-color: #FFFFCC}
h1 {text-align: center; font-size: large;font-family: "Times New Roman"}
</STYLE>
</head>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="AUTEURS">
<body>
<h1>Auteurs</h1>
<table border="1">
<th width="30%">Nom</th>
<th width="30%">Prénom</th>
<th width="30%">Nationalité</th>
<xsl:apply-templates/>
</table>
</body>
</xsl:template>
<xsl:template match="Auteur">
<tr>
<td><xsl:value-of select="child::Nom"/></td>
<td><xsl:value-of select="child::Prénom"/></td>
<td><xsl:value-of select="child::Nationalité"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
Pour enrichir le traitement de données, on peut définir des paramètres en rajoutant avant la requête un code du type :
<sql:header>
<sql:param name='AutName'>B%</sql:param>
</sql:header>
et en précisant dans le corps de la requête une condition du type
WHERE Nom Like @AutName
L'URL suivante (utilisant un caractère spécial pour coder le % nécessaire au Like) :
http://localhost/bibli/Template/auteurs2.xml?AutName=A%25
permet alors de passer le paramètre A% à la requête pour obtenir le Like 'A%'