Cómo: Canalización transformaciones XSLT en aplicaciones .NET

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

En esta página

Resumen

En este artículo muestra cómo las transformaciones de transformación XSL (XSLT) en aplicaciones .NET de canalización. El término "Canalización" en el contexto de las transformaciones XSLT, es el proceso por el que los datos en un documento de lenguaje de marcado extensible (XML) de origen se transforman incrementalmente mediante una secuencia de dos o más hojas de XSLT de estilos para generar el resultado final necesario. Durante el proceso, el resultado generado por cada fase intermedia en la canalización de transformación se utiliza como entrada para la fase siguiente todas las fases de la forma a través de la transformación final que genera el resultado que desee.

Las clases de .NET Framework en el System.Xml.xsl , System.Xml.XPath y los espacios de nombres System.IO pueden utilizarse para las transformaciones XSLT en aplicaciones .NET de canalización mediante programación. Las secciones siguientes de este artículo proporcionan instrucciones para ayudarle a implementar y examinar el proceso de canalización de transformaciones XSLT en una aplicación ASP.NET. El concepto ilustrado también se puede aplicar y utilizar en otros tipos de aplicaciones de .NET que tienen a la canalización de transformaciones XSLT.

Crear y configuración de la aplicación de ASP.NET de ejemplo

  1. Utilizar Visual Studio .NET para crear un nuevo proyecto de aplicación Web ASP.NET de Microsoft Visual Basic .NET denominado "XSLTPipelineDemo" (sin las comillas).
  2. Utilice el siguiente código para crear y agregar un documento XML denominado "Empleados.XML" (sin las comillas) al proyecto:
    <?xml version='1.0'?>
    <employees>
      <employee>
        <employeeId>1</employeeId>
        <name>
          <given>Nancy</given>
          <family>Davolio</family>
        </name>
      </employee>
      <employee>
        <employeeId>2</employeeId>
        <name>
          <given>Andrew</given>
          <family>Fuller</family>
        </name>
      </employee>
      <employee>
        <employeeId>3</employeeId>
        <name>
          <given>Janet</given>
          <family>Leverling</family>
        </name>
      </employee>  
    </employees>
    					
  3. Utilice el siguiente código para crear y agregar una hoja de estilo XSLT llamada "sortEmployees.xslt" (sin las comillas) al proyecto. Esta hoja de estilos contiene código XSLT para ordenar los datos en el documento XML empleados.XML (en orden descendente en el nombre de familia [empleado, nombre y familia] elemento). El resultado que se genera cuando se aplica esta hoja de estilos es una versión ordenada de los datos XML de origen:
    <?xml version='1.0'?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    <xsl:param name="sortColumn" select="'family'"/>
    <xsl:param name="sortOrder" select="'descending'"/>
    
    
    <xsl:template match="employees">
       <employees>
    
       <xsl:apply-templates select="employee/name">  
           <xsl:sort select="./*[local-name() = $sortColumn]" order="{$sortOrder}"/>            
       </xsl:apply-templates>  
    
       </employees>
    </xsl:template> 
    
    <xsl:template match="employee/name">
      <employee>
    	  <xsl:copy-of select="parent::node()/*"/>
      </employee>  
    </xsl:template> 
    
    </xsl:stylesheet>
    					
  4. Utilice el siguiente código para crear y agregar una hoja de estilos XSLT denominada "EmployeesHTMLTable.xslt" (sin las comillas) al proyecto. Esta hoja de estilos contiene código XSLT para transformar el origen de datos XML de empleado (que se incluye en el documento XML de empleados.XML o en el XML ordenado que se genera cuando se aplica la hoja de estilos XSLT sortEmployees.xsl al documento XML empleados.XML ) a una tabla de lenguaje de marcado de hipertexto (HTML):
    <?xml version='1.0'?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    <xsl:template match="employees">
    	<HTML>
    	<BODY>
    	<TABLE BORDER="1">
    	<TR>
    	  <TH>Employee ID</TH>
    	  <TH>Employee Name</TH>
    	</TR>
    
    	<xsl:for-each select="employee">
    		<TR>
      		  <TD>
    		     <xsl:value-of select="employeeId"/>
    		  </TD>
    		  <TD>
    		     <xsl:value-of select="name/family"/>, <xsl:value-of select="name/given"/>
    		  </TD>
    		</TR>
    	</xsl:for-each>
    
    	</TABLE>
    	</BODY>
    	</HTML>   
    </xsl:template> 
    
    </xsl:stylesheet>
    
    					
  5. Puede aplicar ambas de las hojas de estilos XSLT independientemente de otra en el archivo empleados.Xml. Aplicar sortEmployees.xsl ordena los datos en el archivo empleados.XML, mientras que aplicar employeesHTMLTable.xsl genera una representación de tabla HTML del código XML de origen. Para obtener una representación de tabla HTML de los datos ordenados en orden descendente por nombre de familia, canalización estas dos transformaciones de XSLT (primero se aplican sortEmployees.xsl al archivo empleados.XML y a continuación, aplique employeesHTMLTable.xsl la salida generada por la primera transformación).
  6. Copie y pegue el código siguiente en el procedimiento de evento Page_Load de WebForm1.aspx para implementar la canalización ha descrito anteriormente:
    'Load the source XML document (Employees.xml) into an XPathDocument object.
    
    Dim xmlDoc As New System.Xml.XPath.XPathDocument(Server.MapPath("employees.xml"))
    
    'Load the first stylesheet (sortEmployees.xslt) that sorts the data in employees.xml
    'into an XslTransform object.
    
    Dim xslt As New System.Xml.Xsl.XslTransform()
    xslt.Load(Server.MapPath("sortEmployees.xslt"))
    
    'Execute the first transformation and write the interim output (the sorted XML)
    'to a MemoryStream object. Using an in memory stream (as opposed to a FileStream object) 
    'to store the interim output generated by the first transformation is a better option from  
    'a performance standpoint as it avoids unnecessary disk I/O.
    
    Dim memStream As New System.IO.MemoryStream()
    xslt.Transform(xmlDoc, Nothing, memStream)
    
    'Reset the MemoryStream internal pointer to point to the 
    'beginning of the stream. This is required for the following line of 
    'code to be able to read the data from the memory stream.
    
    memStream.Position = 0
    
    'Load the interim sorted XML output in an XPathDocument object. 
    'Notice that a second XPathDocument object is created to do this. 'The reason for this is that the XPathDocument class does not implement a Load 'method (like the System.Xml.XmlDocument class) that can be used to re-load new XML data into an existing 
    'object instance. While a single XmlDocument object could have been used to execute the two pipelined 'transformations in this sample, it has not been chosen because the XPathDocument is highly optimized for XPath query 
    'execution and XSLT transformations. It is the recommended interface to use when programatically executing 
    'XSLT transformations in .NET applications.
    
    Dim interimDoc As New System.Xml.XPath.XPathDocument(memStream)
    
    'Load the second stylesheet(employeesHTMLTable.xslt)that transforms the sorted data to an HTML table
    'into the XslTransform object.
    
    xslt.Load(Server.MapPath("employeesHTMLTable.xslt"))
    
    'Execute the second transformation and stream the output directly to the 
    'ASP.Net Response object's OutputStream to display the results in the client browser.
    
    xslt.Transform(interimDoc, Nothing, Response.OutputStream)
    					
  7. Guarde y genere la solución.

Probar la aplicación de ASP.NET de ejemplo

  1. Ejecutar la aplicación ASP.NET XSLTPiplelineDemo iniciar y mostrar WebForm1.aspx en el explorador.
  2. El código en el procedimiento de evento Page_Load de WebForm1.aspx se ejecuta las transformaciones XSLT y genera el resultado en el formulario de una tabla HTML que muestra una ordenada (en orden descendente basándose en el nombre de familia) lista de los empleados.
  3. Cierre la ventana del explorador para salir de la aplicación ASP.NET.

Propiedades

Id. de artículo: 320847 - Última revisión: jueves, 04 de septiembre de 2003 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palabras clave: 
kbmt kbbcl kbhowtomaster KB320847 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): 320847

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