Help and Support

Numéro d'article: 300934 - Dernière mise à jour: jeudi 11 janvier 2007 - Version: 6.0

COMMENT FAIRE : Application d'une transformation XSL à XML pour un flux de données

Ancien nº de publication de cet article : F300934
Cet article traite d'une version bêta d'un produit Microsoft. Les informations contenues dans cet article sont fournies " en l'état " et peuvent faire l'objet de modifications sans préavis.

Aucun support produit officiel n'est proposé par Microsoft pour ce produit bêta. Pour plus d'informations sur la procédure à suivre pour obtenir de l'assistance sur une version bêta, consultez la documentation fournie avec les fichiers du produit bêta ou effectuez une recherche sur le site Internet à partir duquel vous avez téléchargé la version.

Sommaire

Agrandir tout | Réduire tout

Résumé

Cet article explique comment appliquer une transformation XSLT (Extensible Stylesheet Language Transformation) à un document XML (Extensible Markup Language) à l'aide de la classe XslTransform pour créer un nouveau document XML. XSL est un langage reposant sur XML, conçu pour transformer un document XML en un autre document XML ou en tout autre document structuré.

Configuration requise



La liste suivante présente le matériel, les logiciels, l'infrastructure réseau et les Service Packs dont vous aurez besoin :

  • Microsoft® Windows® 2000 Professionnel, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT® 4.0 Server
  • Microsoft Visual Studio® .NET
Le présent article suppose que vous maîtrisez les techniques suivantes :

  • Terminologie XML
  • Création et lecture d'un fichier XML
  • Syntaxe XPath (XML Path Language)
  • XSL

Application de transformations XSL



  1. Créez une nouvelle application de console dans Visual Studio .NET.
  2. Vérifiez que le projet contient une référence à l'espace de noms System.Xml ; si ce n'est pas le cas, ajoutez-en une.
  3. Utilisez l'instruction Imports dans les espaces de noms Xml, XPath et Xsl pour éviter de devoir qualifier des déclarations dans ces espaces de noms plus loin dans le code. Vous devez utiliser l'instruction Imports avant toute autre déclaration :
    Code Visual Basic .NET
    Imports System.Xml
    Imports System.Xml.XPath
    Imports System.Xml.Xsl
    Code C#
    using System.Xml;
    using System.Xml.Xsl;
    using System.Xml.XPath;
  4. Déclarez les variables appropriées. Déclarez un objet XPathDocument devant contenir le document XML et un objet XslTransform pour transformer les documents XML. Ajoutez le code de la déclaration dans la procédure principale du Module1 :
    Code Visual Basic .NET
    Dim myXslTransform As XslTransform
    Dim myXPathDocument As XPathDocument
    Code C#
    XslTransform myXslTransform;  
    XPathDocument myXPathDocument;
  5. Chargez un XPathDocument avec le fichier d'exemple, Books.xml. La classe XPathDocument procure un cache orienté performances pour le traitement des documents XML à l'aide de XSLT. Elle est similaire au modèle d'objet DOM (Document Object Model) XML, mais elle est optimisée pour le traitement XSLT et le modèle d'objet XPath :
    Code Visual Basic .NET
    'Ouvrez le fichier XML.
    	myXPathDocument = New XPathDocument("books.xml")
    Code C#
    myXPathDocument = new XPathDocument ("books.xml");
    Bien que les fichiers Books.xml et Books.xsl soient utilisés dans cet exemple, notez que vous pouvez créer vos propres fichiers Books.xml ou Books.xsl. Les fichiers Books.xml et Books.xsl sont également inclus dans Visual Studio .NET et le kit de réalisation de logiciels (SDK) de .NET Framework.
  6. Créez un nouvel objet XslTransform. La classe XslTransform est un processeur XSLT qui met en ?uvre la recommandation SLT version 1.0 :
    Code Visual Basic .NET
    myXslTransform = New XslTransform()
    Code C#
    myXslTransform = new XslTransform();
  7. Utilisez la méthode Load pour charger l'objet XslTransform dans la feuille de style. Cette feuille de style transforme les détails du document Books.xsl en une simple liste de numéros ISBN d'ouvrages :
    Code Visual Basic .NET
    myXslTransform.Load("books.xsl")
    Code C#
    myXslTransform.Load("books.xsl");
  8. Créez une classe XmlTextWriter avec le nouveau nom de fichier XML transformé. Appelez la méthode Transform pour initier la transformation.
    Code Visual Basic .NET
    Dim writer as XmlTextWriter
    writer = New XmlTextWriter("ISBNBooks.xml",System.Text.Encoding.UTF8)
    myXslTransform.Transform(myXPathDocument,Nothing, 
    writer)
    writer.Flush()
    writer.Close()
    Code C#
    XmlTextWriter writer = new XmlTextWriter("ISBNBooks.xml",System.Text.Encoding.UTF8);
    myXslTransform.Transform(myXPathDocument,null, 
    writer); 
    writer.Flush();
    writer.Close();
  9. Vous pouvez sinon envoyer le document XML transformé dans une classe XmlReader, Stream ou TextWriter. L'exemple de code suivant illustre comment écrire une classe StringWriter (sous-classe de TextWriter) au lieu d'un fichier physique :
    Code Visual Basic .NET
    Dim stWrite As System.IO.StringWriter = New System.IO.StringWriter()
    myXslTransform.Transform(myXPathDocument, 
    Nothing, stWrite)
    Console.WriteLine(stWrite.ToString)
    Console.ReadLine() 'Pause
    Code C#
    System.IO.StringWriter stWrite = new System.IO.StringWriter();
    myXslTransform.Transform(myXPathDocument, 
    null, stWrite);
    Console.WriteLine(stWrite.ToString);
    Console.ReadLine();
  10. Construisez et exécutez votre projet.

Liste de code complète



Code C#
using System;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath; 
using 
System.IO;
namespace XSLTransformfromXPath
{
     <summary>
     Description récapitulative 
pour Class1.
    </summary>
    class Class1
    {
        static void Main(string[] 
args)
        {
            XslTransform myXslTransform;  
            XPathDocument 
myXPathDocument = new XPathDocument ("books.xml"); 
            myXslTransform 
= new XslTransform(); 
            myXslTransform.Load("books.xsl");
		        
    XmlTextWriter writer = new XmlTextWriter("ISBNBooks.xml",System.Text.Encoding.UTF8);
 
           myXslTransform.Transform(myXPathDocument,null, writer); 
           
 writer.Flush(); writer.Close();
            System.IO.StringWriter stWrite = new 
System.IO.StringWriter();
            myXslTransform.Transform(myXPathDocument, 
null, stWrite);
            Console.WriteLine(stWrite.ToString());
            
Console.ReadLine(); 
        }
    }
}

RÉFÉRENCES

Pour plus d'informations sur la classe XslTransform, consultez la documentation suivante sur la bibliothèque de classes Microsoft .NET Framework :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXslXslTransformClassTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXslXslTransformClassTopic.asp)
Pour plus d'informations sur la classe XslTransform avec l'objet XslTransform, consultez la documentation suivante du guide de développement Microsoft .NET Framework :
http://msdn.microsoft.com/library/dotnet/cpguidnf/cpconxslttransformationswithxsltransform.htm (http://msdn.microsoft.com/library/dotnet/cpguidnf/cpconxslttransformationswithxsltransform.htm)
Pour une comparaison pratique de XSLT et des pages ASP (Active Server Pages) .NET, consultez l'article MSDN Voices Extreme XML suivant :
http://msdn.microsoft.com/library/welcome/dsmsdn/xml02192001.htm (http://msdn.microsoft.com/library/welcome/dsmsdn/xml02192001.htm)
Pour plus d'informations sur XML dans .NET, consultez l'article " Les classes .NET Framework XML et C# permettent une manipulation simple et évolutive des données " du MSDN Magazine sur le site Web Microsoft suivant :
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx (http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx)

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework Software Development Kit 1.0
Mots-clés : 
kbhowto kbhowtomaster kbxml KB300934
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Retired KB ArticleExclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Traductions disponibles

 

Related Support Centers