Le développement de XML avait comme objectif, entre autres, de permettre l'échange de données entre différents types de stockage. Si l'on écrit des procédures stockées visant à exporter des données à partir de SQL Server, peut-être au moyen de DTS (Data Transformation Services), on voudra convertir le XML dans le
Une autre solution : XSLT
format
cible requis, en utilisant le support
XML de SQL Server. La manière dont
Microsoft met en oeuvre XML dans SQL
Server ne rend pas cette conversion facile
pour certains types de structures
de données, même si c’est faisable.
De nombreuses architectures de
projet exigent une solution exclusivement
SQL Server, pour la production
de XML. Mais il est toujours important
de voir les choses sous un champ plus
large. Si, par exemple, vous avez un
frontal VB (Visual Basic) ou si vous utilisez
XSLT (Extensible Style Language
Transformations) pour transformer les
données, il pourrait être plus facile de
renvoyer les données XML sous forme
de XML « plat » (non hiérarchique),
puis de les convertir en XML hiérarchique
ailleurs. Pour illustrer cette
technique, voyons brièvement une solution
qui utilise XSLT.
Pour générer des données XML
plates, on peut utiliser une instruction
FOR XML RAW T-SQL simple, comme
le montre le listing 6. Si l’on exécute ce
code dans Query Analyzer, on obtient
le XML de la figure 8. Bien que le résultat
ne soit pas du XML hiérarchique, il
contient l’attribut supplémentaire
ReportsToEmployeeID, qui fournit l’information
hiérarchique. Les analyseurs
syntaxiques XML peuvent interpréter
cette information directement – en la
traitant comme simplement un autre
attribut – donc, il faut convertir le XML
plat en XML hiérarchique à l’aide de
l’attribut ReportsToEmployeeID.
Les techniques récursives de XSLT
facilitent grandement la conversion. En
effet, XSLT offre de nombreux moyens,
d’efficacité variable, de convertir les
données. Le code que montre le listing
7 est un moyen possible, très court. Si
vous utilisez MS-XML 3.0 pour transformer
le XML de la figure 8 et le XSLT du
listing 7, vous obtenez la structure XML
que montre la figure 9 (quelque peu
mise en ordre par souci de clarté).
Le XSL a deux modèles. Le premier
correspond à tous les noeuds de niveau
supérieur (c’est-à -dire, tous les noeuds
dans lesquels ReportsToEmployeeID
est égal à EmployeeID). Le second modèle
évalue récursivement tous les
autres noeuds. Notez l’ajout des tags
XML est bien formé. Pour plus d’informations
sur XSLT, voir le livre XSLT
Quickly par Bob Ducharme (Manning,
2001).
Téléchargez cette ressource

Digitaliser vos processus sur la voie de la facturation électronique
Particulièrement structurant, le chantier de dématérialisation des factures doit être anticipé par les DSI et DAF. Découvrez, dans ce Special Report, les stratégies et solutions pour éviter les contraintes et saisir toutes les opportunités de ce futur chantier réglementaire