INFORMACIÓN: Técnicas para mejorar el rendimiento de transformaciones XSL

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

Resumen

Este artículo enumeran algunas técnicas para mejorar el rendimiento de transformaciones XSL (Extensible Stylesheet Language). XSL es un lenguaje funcional. XSL no admite las características de lenguaje común. Por ejemplo, XSL no admite valores devueltos o globales. XSL no es un lenguaje orientado a objetos y los costos de ciclos de procesador está modular. No hay ninguna depuración disponible para XSL, por lo tanto, resulta difícil la depuración.

Más información

Rendimiento de una transformación XSL depende de los escenarios que utiliza. Las técnicas que aparecen en este artículo son directrices generales. Asegúrese de que medir los resultados de cada tipo de ajuste. Sólo prueba puede probar si una determinada técnica mejora el rendimiento o no. Puede utilizar la utilidad msxsl.exe de la línea de comandos para probar y realizar transformaciones XSL de línea de comandos mediante el procesador de XSL de Microsoft. La utilidad msxsl.exe invoca Microsoft XML Parser 4.0 (msxml4.dll) para realizar la transformación. Puede descargar esta utilidad de MSDN siguiente sitio:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Técnicas para mejorar el rendimiento

  • Identificar las rutas más comunes de código para representar las páginas y, a continuación, optimizar estas rutas de acceso. Optimizar las secciones muy reutilizar de XSL.
  • En lugar de utilizar subelementos, utilice atributos siempre que sea posible. El uso de atributos en lugar de elementos mejora el rendimiento. Al realizar a coincidencias de XPath, los atributos son más rápidos porque se escriben imprecisa. Esto facilita la validación del esquema.
  • Utilizar rutas más explícitas en lugar de "/ /" siempre que sea posible. Cuando están grandes, datos XML "/ /" recursiva decedent búsqueda es muy costosa. Expresión de XPath específica se implementa más rápido.
  • Cuando coinciden con los valores de atributo, utilice los atributos de enumerador. Utilizar varios nombres de atributo como bits y establezca sus valores a true o false . Por ejemplo:
    <element_name attr1="1" attr2="1" attr3="0">
  • No utilice la secuencia de comandos. Mediante secuencias de comandos degrade el rendimiento.
  • Comparar directamente por su nombre para mejorar el rendimiento. Por ejemplo, en lugar de utilizar el código siguiente:
    ./info[type='title']
    utilice el siguiente código:
    ./title
    al comparar valores, en lugar de utilizar nombre como sigue:
    Select="*[name()='sample']"
    utilice el siguiente código:
    Select="sample"
    del espacio de nombres tratamiento en XPath, son no es exactamente equivalentes.
  • Todas las versiones de MSXML, versión 3.0 y posterior, son más rápidas con el filtro de índice explícita. La mejora del rendimiento depende de la posición del elemento en la lista secundarios del elemento primario. En lugar de con la siguiente:
    /child_element
    utilice lo siguiente:
    /child_element[1]
  • Utilizar parámetros en lugar de evaluar la consulta cada vez.
  • Transformaciones XSL permite varias opciones, sin embargo, todos ellos no pueden realizar adecuadamente. Por ejemplo, en lugar de utilizar la transformación siguiente:
    <xsl:output method="html"/>
    utilizar la transformación siguiente:
    <xsl:output method="html" indent="no" />
    Esto mejora el rendimiento porque sangría proporciona mucha no deseados espacios en blanco en el resultado. De forma predeterminada, el valor de la sangría de atributo es .
  • En la plantilla de línea con for-each o modo de atributo cuando se está seguro de que su Aplicar-plantilla coincide con exactamente una plantilla. Por ejemplo:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    para cada nodo que coincida con lo siguiente:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    la siguiente expresión:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    se evalúa en todas las otras plantillas con el mismo modo. Procesador empieza a ejecutar plantillas predeterminadas. Esto copia todos los nodos de texto y llama a la siguiente:
    <xsl:apply-templates>
    para todos los elementos. Por lo tanto, para todos los niños de nodeset original, se evalúa la expresión de posibles coincidencias. La expresión de coincidencia no es una tarea sencilla. Para mejorar el rendimiento, vuelva a escribir el código como sigue:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • Utilizar plantillas de menos. Esto es aplicable cuando ejecuta la misma plantilla más de una vez. Hay alguna mejora en rendimiento estrecho for-each bucle para buscar una plantilla cuando el número de plantillas menor.
  • Reducir el uso de xsl: elija / xsl: when / xsl: en caso contrario . Afectados rendimiento cuando la mayoría de las selecciones se dividen mediante la cláusula de lo contrario . Por lo tanto, coincide con cuando e intente evitar el uso de lo contrario cuando se sabe que existe un valor determinado.
  • xsl:variables son valores dinámicos. Estas variables no son en caché y ejecutan cada vez que hace referencia en XSL. Conversión de xsl: variable de tipo explícita mejora el rendimiento. Para ello escriba conversión con funciones string() y boolean() . Por ejemplo:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • VS MSXML. System.XML
    • Analizador MSXML es diferente de XmlReader y XmlWriter .
    • MSXML carga datos XML en un Document Object Model (DOM). En este árbol DOM, datos fácilmente se pueden explorar a través de XPath, transforma mediante XSL, o editar y guardar volver. Esto permite el desarrollo más fácil y capacidades más eficaces a costa de uso de memoria y velocidad.
    • XmlReader y XmlWriter son secuenciales de los lectores y escritores. El desarrollador mantiene el estado manualmente al leer y escribir datos XML. Esto permite el uso de memoria mínima y, por lo tanto, mejora el rendimiento.
    • El analizador MSXML también admite SAX (simple API for XML). SAX es secuencial. .NET framework también admite el DOM, mediante la clase XmlDocument .
    • La mejor elección depende de la utilización de .NET framework y en la tarea que realizar con XML.

  • Esta técnica está relacionado con el rendimiento con la base de datos. Puede mejorar rendimiento MSXML y System.XML en pre-joining los campos de búsqueda como se muestra en el siguiente código:
    <?xml version="1.0" encoding="UTF-8"?>
    <AllLocalDescriptor xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <Descriptor key="AMC_Labels_" ID="AMC" Name="-2000" TypeName="Labels" LCID="">
      AMC
    </Descriptor>
    <Descriptor key="AMC_Labels_3082" ID="AMC" Name="-2000" TypeName="Labels" LCID="3082">
      AMC
    </Descriptor>
    puede evitar la detección mediante la declaración de tipo ID. de clave @
    desc = doc.getNodeFromID("AMC_Labels_3082")

Referencias

Para obtener más información, visite los siguientes sitios Web de Microsoft Developer Network (MSDN):
Manual del programador de XSLT
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
Mejorar XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
Para obtener información adicional acerca del rendimiento de XSLT, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
325689Rendimiento de información: De XSLT Transformations in .NET Framework
331026Mostrar cómo: Ajustar el rendimiento mi hoja de estilos XSLT en .NET utilizando System.Xml

Propiedades

Id. de artículo: 815124 - Última revisión: viernes, 02 de noviembre de 2007 - Versión: 2.4
La información de este artículo se refiere a:
  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft .NET Framework Class Libraries 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palabras clave: 
kbmt kbperformance kbxml kbinfo KB815124 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): 815124

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