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

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.

815655
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Para obtener una versión de Microsoft Visual C# .NET de este artículo, consulte 307494.

Para obtener una versión de Microsoft Visual Basic .NET de este artículo, consulte 300934.

Este artículo hace referencia a los siguientes espacios de nombres de la Biblioteca de clases de Microsoft .NET Framework:
  • System::Xml
  • System::Xml::Xsl
  • System::Xml::XPath
  • System::IO

En esta tarea

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.

back to the top

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
back to the top

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>
back to the top

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.

back to the top
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

back to the top

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 815655 - Última revisión: 01/17/2015 06:43:38 - Revisión: 8.2

  • Microsoft Visual C++ .NET 2002 Standard
  • Microsoft Visual C++ .NET 2003 Standard
  • Microsoft Visual C++ 2005 Express Edition
  • kbnosurvey kbarchive kbmt kbio kbsample kbhowtomaster kbhowto KB815655 KbMtes
Comentarios