Cómo aplicar una transformación XSL a XML para transmisión mediante Visual C++ .NET o Visual C++ 2005

Seleccione idioma Seleccione idioma
Id. de artículo: 815655 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso se describe cómo aplicar el lenguaje ampliable (XSL) del lenguaje de transformación (XSLT) a un documento XML mediante el uso de la clase XslTransform para crear un nuevo documento XML. XSL es un lenguaje basado en XML que está diseñado para transformar un documento XML a otro documento XML o para transformar un documento XML a cualquier otro documento estructurado.



Requisitos

Continuación se enumeran el hardware, software, infraestructura de red y service packs que pueden requerir:
  • Microsoft Visual Studio .NET o Microsoft Visual Studio 2005
  • Tutoriales del Kit de desarrollo de software (SDK) de Microsoft Visual Studio .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Terminología de XML
  • Crear y leer un archivo XML
  • Sintaxis de lenguaje de ruta XML (XPath)
  • XSL


Cómo aplicar transformaciones XSL

En este ejemplo utiliza dos archivos que se denominan Books.XML y Books.Xsl. Puede crear su propio archivo Books.XML y Books.xsl archivo o puede utilizar los archivos de ejemplo que se incluyen con los tutoriales de Kit de desarrollo de software de .NET.

importante Debe copiar el archivo Books.XML y el archivo de Books.xsl a la carpeta que cree para este proyecto. Puede encontrar estos archivos en la carpeta siguiente:

...\Archivos de programa\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs

Para Visual C++ .NET (2003), puede encontrar estos archivos en la carpeta siguiente:
...\Archivos de programa\Microsoft Visual Studio .NET 2003\SDK\v1.1\QuickStart\howto\samples\xml\transformxml\cs
  1. Cree una nueva aplicación de C++ administrado en Visual C++ .NET 2002, cree una nueva aplicación de consola en Visual C++ .NET 2003 o crear una nueva aplicación de consola en Visual C++ 2005.
  2. Agregue el código siguiente para agregar una referencia a la System.XML espacio de nombres:
    #using <System.XML.Dll>
    
  3. Declare las variables apropiadas. Declara un XPathDocument objeto para contener el documento XML y un objeto XslTransform para transformar XML documentos. Agregue el código de declaración en la función Main :
        Xml::Xsl::XslTransform* pMyXslTransform = new Xml::Xsl::XslTransform();
        Xml::XPath::XPathDocument* pMyXPathDocument = new Xml::XPath::XPathDocument(S"books.xml");
    
  4. Rellenar un objeto XPathDocument con el archivo de ejemplo Books.Xml.

    La clase XPathDocument proporciona una caché rápida y orientada al rendimiento para procesar documentos XML mediante XSLT. La clase XPathDocument es similar a un modelo de objetos de documento (DOM) XML, pero la clase XPathDocument está optimizada para procesar XSLT y el modelo de datos XPath:
    Xml::XPath::XPathDocument* pMyXPathDocument = new Xml::XPath::XPathDocument("books.xml");
  5. Cree un nuevo objeto XslTransform .

    La clase XslTransform es un procesador XSLT que implementa el XSL recomendación de transformaciones (XSLT) versión 1.0:
    Xml::Xsl::XslTransform *pMyXslTransform = new Xml::Xsl::XslTransform();
  6. Utilice el método Load para cargar el objeto XslTransform con la hoja de estilos.

    Esta hoja de estilo transforma los detalles del documento Books.xsl a una lista sencilla de número International Standard Book (ISBN) de libros: pMyXslTransform
    pMyXslTransform->Load(S"Books.xsl");
  7. Cree una clase XmlTextWriter con el nuevo nombre de archivo XML transformado. Llame al método Transform para iniciar la transformación.
        Xml::XmlTextWriter* pWriter = new Xml::XmlTextWriter(S"ISBNBooks.xml",System::Text::Encoding::UTF8);
    
        // In Visual C++ .NET 2002, write the following line as 
        // pMyXslTransform->Transform(pMyXPathDocument,NULL,pWriter):
    
        pMyXslTransform->Transform(pMyXPathDocument,NULL,pWriter,0);
        pWriter->Flush ();
        pWriter->Close ();
    
  8. Como alternativa, puede enviar el documento XML transformado a una clase XmlReader , para una clase Stream o a una clase TextWriter . En el siguiente ejemplo de código se envía la transformación de XML a una instancia de la clase StringWriter (un derivado de TextWriter ) que a su vez escribe la transformación en la ventana de consola.
        System::IO::StringWriter* pStWriter = new System::IO::StringWriter();
      
       // In Visual C++ .NET 2002, write the following line as 
       // pMyXslTransform->Transform(pMyXPathDocument,NULL,pStWriter).
    
        pMyXslTransform->Transform(pMyXPathDocument,NULL,pStWriter,0);
        Console::WriteLine (pStWriter->ToString ());
        Console::ReadLine();
    Nota el listado de código completo utiliza el código anterior en lugar del código en el paso 7.
  9. Genere y ejecute su proyecto. Los resultados de la transformación aparecen en la ventana de consola:
    <?xml version="1.0" encoding="utf-16"?><root><bookstore><book ISBN="1-861003-11-0"><price>8.99</price>
    			</book><book ISBN="0-201-63361-2"><price>11.99</price>
    			</book><book ISBN="1-861001-57-6"><price>9.99</price>
    			</book></bookstore></root>
    


Código completo del ejemplo


#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>

using namespace System;
#using <System.XML.Dll>

// This is the entry point for this application.
int _tmain(void)
{
 
    try{   
        Xml::XPath::XPathDocument* pMyXPathDocument = new Xml::XPath::XPathDocument(S"books.xml");
        Xml::Xsl::XslTransform *pMyXslTransform = new Xml::Xsl::XslTransform();
        
        pMyXslTransform->Load(S"Books.xsl");

        System::IO::StringWriter* pStWriter = new System::IO::StringWriter();
        
        // In Visual C++ .NET 2002, write the following line as 
        // pMyXslTransform->Transform(pMyXPathDocument,NULL,pStWriter). 
        pMyXslTransform->Transform(pMyXPathDocument,NULL,pStWriter,0);


        Console::WriteLine (pStWriter->ToString ());
        Console::ReadLine();

    }
    catch (Exception *e)
    {
        Console::WriteLine (e->Message);
    }
    return 0;
}
Nota Debe agregar la opción compatibilidad con compilador de common language runtime ( / clr: oldSyntax ) en Visual C++ 2005 para compilar correctamente en este ejemplo de código. Para ello, siga estos pasos:
  1. Haga clic en proyecto y, a continuación, haga clic en propiedades ProjectName .

    Nota ProjectName representa el nombre del proyecto.
  2. Expanda Propiedades de configuración y, a continuación, haga clic en General .
  3. Haga clic para seleccionar compatible con Common Language Runtime, sintaxis antigua (/ CLR: oldSyntax) en la configuración de proyecto compatibilidad con Common Language Runtime en el panel derecho, haga clic en Aplicar y, a continuación, haga clic en Aceptar .
Para obtener más información acerca de common language runtime admiten opciones de compilador, visite el siguiente sitio Web de Microsoft:
/CLR (compilación de common Language Runtime)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
Estos pasos se aplican el artículo completo.


Referencias

Para obtener más información acerca de la clase XslTransform , visite el siguiente sitio Web de Microsoft:

http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltransform(vs.71).aspx

Para obtener más información acerca de cómo la clase XslTransform implementa el procesador XSLT, visite el siguiente sitio Web de Microsoft:

http://msdn2.microsoft.com/en-us/library/126k9kx5(vs.71).aspx

Para obtener una comparación práctica de XSLT y ASP.NET, visite el siguiente sitio Web:

http://msdn2.microsoft.com/en-us/library/ms950754.aspx

Para obtener más información acerca de XML en. NET, visite el siguiente sitio Web de Microsoft:
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx

Propiedades

Id. de artículo: 815655 - Última revisión: miércoles, 14 de noviembre de 2007 - Versión: 8.2
La información de este artículo se refiere a:
  • Microsoft Visual C++ .NET 2002 Standard
  • Microsoft Visual C++ .NET 2003 Standard
  • Microsoft Visual C++ 2005 Express Edition
Palabras clave: 
kbmt kbio kbsample kbhowtomaster kbhowto KB815655 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 815655

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com