INFO: Técnicas para aumentar o desempenho de transformações XSL

Traduções de Artigos Traduções de Artigos
Artigo: 815124 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Este artigo lista algumas técnicas para melhorar o desempenho de transformações XSL (Extensible Stylesheet Language). O XSL é uma linguagem funcional. XSL não suporta funcionalidades de idioma comum. Por exemplo, o XSL não suporta valores de retorno ou globals. XSL não é uma linguagem orientada para objectos e a ser modular os custos de ciclos do processador. Existe sem depuração disponíveis para XSL, por conseguinte, a depuração fica difícil.

Mais Informação

Desempenho de uma transformação XSL depende os cenários que utiliza. As técnicas listadas neste artigo são orientações gerais. Certifique-se de que medem os resultados de cada optimização. Testar apenas pode provar se uma determinada técnica melhora o desempenho ou não. Pode utilizar o utilitário da linha de comandos msxsl.exe para testar e efectuar as transformações XSL de linha de comandos utilizando o processador Microsoft XSL. O utilitário msxsl.exe invoca o Microsoft XML Parser 4.0 (msxml4.dll) para efectuar a transformação. Pode transferir este utilitário a partir do MSDN seguinte site:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Técnicas para melhorar o desempenho

  • Identificar os caminhos de código mais comuns para compor as páginas e, em seguida, optimizar estas trajectórias. Optimize as secções altamente reutilizadas XSL.
  • Em vez de utilizar sub-elementos, utilize atributos sempre que possível. A utilização de atributos em vez de elementos melhora o desempenho. Quando efectua correspondências de XPath, atributos são mais rápidos porque livremente introduzidos. Isto torna mais fácil a validação de esquema.
  • Utilizar caminhos mais explícitos em vez de "/ /" sempre que possível. Quando dados XML serão grandes, "/ /" recursiva decedent procura é muito dispendiosa. Expressão de XPath específico implementa mais rapidamente.
  • Quando corresponder com valores de atributo, utilize atributos do enumerador. Utilizar vários nomes de atributo como bits e defina os respectivos valores como Verdadeiro ou Falso . Por exemplo:
    <element_name attr1="1" attr2="1" attr3="0">
  • Não utilize o script. Utilizar script de diminuir o desempenho.
  • Compare directamente pelo nome para melhorar o desempenho. Por exemplo, em vez de utilizar o seguinte código:
    ./info[type='title']
    utilize o seguinte código:
    ./title
    quando comparar valores, em vez de utilizar o nome da seguinte forma:
    Select="*[name()='sample']"
    utilize o seguinte código:
    Select="sample"
    devido do espaço de nomes de processamento no XPath, estes são equivalentes não exactamente.
  • Todas as versões do MSXML, versão 3.0 e posterior, são mais rápidas com o filtro de índice explícito. As melhorias no desempenho depende da posição do elemento na lista de secundários do principal. Em vez de utilizar o seguinte:
    /child_element
    utilize o seguinte:
    /child_element[1]
  • Utilize parâmetros em vez de avaliar a consulta de cada vez.
  • Transformações XSL permite várias opções, no entanto, todos eles podem não funcionar adequadamente. Por exemplo, em vez de utilizar a transformação seguinte:
    <xsl:output method="html"/>
    utilizar a transformação seguinte:
    <xsl:output method="html" indent="no" />
    Isto melhora o desempenho porque avanço fornece muitos espaços indesejados na saída. Por predefinição, o valor para o avanço do atributo é Sim .
  • Linha o modelo com for-each ou atributo mode quando certificar de que o modelo aplicar corresponde exactamente um modelo. Por exemplo:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    para cada nó que corresponde ao seguinte:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    a seguinte expressão:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    é avaliado em todos os outros modelos com o mesmo modo. Processador começa a ser modelos predefinidos. Isto copia todos os nós de texto e chama o seguinte:
    <xsl:apply-templates>
    para todos os elementos. Por conseguinte, para todos os subordinados nodeset original, correspondências possíveis expressão é avaliada. A expressão a correspondência não é uma tarefa simples. Para melhorar o desempenho, reescrever o código da seguinte forma:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • Utilize modelos de menos. Isto é aplicável quando executa o mesmo modelo mais do que uma vez. Existe um melhoramento do desempenho com Justo for-each ciclo para procurar um modelo quando o número de modelos é menor.
  • Reduzir a utilização da xsl: Escolha / XSL: when / xsl: caso contrário . Desempenho é afectado quando a maioria das selecções passar a cláusula caso contrário . Por conseguinte, coincide com Quando e tente evitar utilizar caso contrário, quando sabe que existe um determinado valor.
  • XSL:Variables são valores dinâmicos. Estas variáveis não estão em cache e executados sempre que são referenciados no XSL. Tipo explícito directores de xsl:variable melhora o desempenho. Pode fazer escreva directores com as funções string() e boolean() . Por exemplo:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • MSXML vs. System.XML
    • É diferente da XmlReader e XmlWriter analisador MSXML.
    • MSXML carrega dados XML para um modelo de objecto de documento (DOM, Document Object Model). Esta árvore DOM, dados podem facilmente ser navegar através de XPath, transformados através de XSL, ou editados e guardados novamente. Isto permite mais fáceis de desenvolvimento e capacidades mais poderosas em detrimento de utilização da memória e velocidade.
    • XmlReader e XmlWriter são leitores sequenciais e escritores. O programador mantém estado manualmente quando ler e escrever dados XML. Isto permite a utilização da memória mínima e, consequentemente, melhora o desempenho.
    • O analisador MSXML também suporta SAX (Simple API para XML). SAX é sequencial. O .NET framework também suporta o DOM, utilizando a classe XmlDocument .
    • A melhor escolha depende da utilização do .NET framework e a tarefa que efectua com o XML.

  • Esta técnica está relacionado com o desempenho com base de dados. Desempenho do MSXML e System.XML pode ser melhorado em pre-joining os campos de pesquisa como mostrado no seguinte 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>
    pode evitar a detecção por declarar @ chave do tipo ID.
    desc = doc.getNodeFromID("AMC_Labels_3082")

Referências

Para obter mais informações, visite os seguintes Web sites da Microsoft Developer Network (MSDN):
XSLT Developer ' s Guide
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
Enhancing XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
Para obter informações adicionais sobre o desempenho de XSLT, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
325689INFO: O desempenho de XSLT transformações no .NET Framework
331026Mostrar-me como: Optimizar o desempenho meu Stylesheet XSLT no .NET utilizando System.XML

Propriedades

Artigo: 815124 - Última revisão: 2 de novembro de 2007 - Revisão: 2.4
A informação contida neste artigo aplica-se a:
  • Bibliotecas de classe do Microsoft .NET Framework 1.0
  • Bibliotecas de classe do Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbperformance kbxml kbinfo KB815124 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 815124

Submeter comentários

 

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