INFO: Guia para executar transformações XSLT em aplicativos .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 313997 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo fornece um mapa de apresentar os namespaces do .NET Framework e classes que você pode usar para executar transformações de linguagem de folhas de estilo extensível (XSLT transformação) programaticamente em aplicativos .NET. Mapa de artigos fornecem links para informações úteis, incluindo informes oficiais da Microsoft, para saber mais sobre um produto da Microsoft ou tecnologia, artigos da Base de dados de Conhecimento da Microsoft e documentação on-line.

Este artigo não é um tutorial XSLT. Este artigo presume que você estiver familiarizado com o World Wide Web Consortium (W3C) XSLT standard e têm experiência com gravação de folhas de estilo XSLT para transformar dados XML.

Visão geral

XSLT é uma World Wide Web Consortium (W3C) padrão para transformar dados XML. O XSLT é normalmente usado para gravar folhas de estilo para transformar dados XML em outros formatos como HTML, fixo comprimento texto, texto separado por vírgula ou um formato XML diferente.

Da perspectiva do desenvolvedor, o XSLT é uma linguagem de programação com uma sintaxe rich, com base em XML que implementa elementos que correspondem aos elementos para atender requisitos comuns de transformação e construções de programação.

Folhas de estilo XSLT com freqüência use consultas XML Path Language (XPath) para localizar nós no documento XML de origem e aplicar os modelos XSLT para transformar esses nós. A eficiência das consultas XPath em uma folha de estilos XSLT freqüentemente influenciar e afetar o desempenho de transformações que usá-lo.

Um ponto de espera de alto nível, um processador XSLT é um componente de software que se aplica uma folha de estilo especificado a um documento de XML de origem especificado para executar uma transformação XSLT e para gerar a saída necessária.

A saída final que geram as transformações XSLT normalmente são resultado documentos que apresentam os dados XML originais no formato de destino especificado.

Escrevendo código em um aplicativo .NET para executar a transformação do XSLT

A seguir QuickStart tutorial e artigos da Base de dados de Conhecimento da Microsoft demonstram como escrever código em um aplicativo .NET para aplicar uma folha de estilos XSLT a um documento XML para executar uma transformação básica:
Como fazer i.. aplicar uma transformação em XSL para XML?
http://samples.gotdotnet.com/quickstart/howto/doc/Xml/TransformXml.aspx
307322COMO: Aplicar uma transformação em XSL a um documento XML usando o Visual translation from VPE for Csharp .NET
300929COMO: Aplicar uma transformação em XSL de um documento XML para um documento XML usando o Visual Basic .NET

O Namespace System.XML.xsl

A classe XslTransform no namespace System.XML.xsl implementa o processador XSLT do .NET Framework. Objeto as instâncias dessa classe são criadas e usadas para executar transformações XSLT em aplicativos .NET. A implementação do processador XSLT no .NET Framework é compatível com a versão 1.0 de W3C XSLT Recommendation.

O namespace System.XML.xsl também implementa as seguintes classes para oferecer suporte opções avançadas relacionadas a execução de transformações XSLT e consultas XPath e XSLT manipulação de exceção:
  • XsltArgumentList . Você pode usar o objeto as instâncias dessa classe para fornecer instâncias de objeto de extensão e valores para parâmetros XSLT que definem folhas de estilo XSLT e referência.
  • XsltCompileException . Essa classe gera a exceção do .NET Framework quando ocorrer um erro enquanto você está compilando uma folha de estilos XSLT. Uma folha de estilos XSLT é compilada quando o método Load de um objeto XslTransform é executado.
  • XsltException . Essa classe gera a exceção do .NET Framework quando ocorre um erro em tempo de execução enquanto você está executando uma transformação XSLT.
  • XsltContext , IXsltContextFunction e IXsltContextVariable . Essas avançadas componentes são usadas para implementar um contexto de execução de consulta XPath personalizado quando há um requisito para implementar e fazer referência a funções definidas pelo usuário e variáveis em consultas XPath que são executadas em aplicativos .NET usando a classe XPathNavigator e classes de DOM (Document Object Model).

    Para mais facilmente implementar funções definidas pelo usuário e variáveis em expressões de consulta XPath incluídos em uma folha de estilos XSLT, você pode usar blocos de script embutido, objetos de extensão e XSLT variáveis ou parâmetros.

Recursos avançados de XSLT

Esta seção descreve vários recursos avançados do XSLT.

Transformações XSLT de pipeline

Canalização se refere ao processo de transformar um documento XML de origem aplicando incrementalmente dois ou mais folhas de estilo XSLT. A saída que cada fase intermediária gera é fornecida como a entrada para a próxima fase através de todo o caminho para a fase final, que gera a saída apropriada.

Esse método é útil quando você deve manter a saída que geram as fases intermediárias para processamentos adicionais que não está diretamente vinculado ao processo de transformação. Para obter informações adicionais Este tópico e para obter um exemplo de código que ilustra o uso, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
320847COMO: Pipeline transformações em XSLT em aplicativos .NET

Transformações em XSLT com parâmetros

É uma prática comum de XSLT para definir e usar parâmetros em folhas de estilos. Folhas de estilo XSLT parametrizadas usar o elemento <xsl:param> para definir parâmetros que são referenciados em expressões de consulta XPath para localizar e transformar nós na fonte de dados XML seletivamente. Os valores para os parâmetros definidos podem ser embutidos na folha de estilos ou fornecidos em tempo de execução. A última prática de fornecer dinamicamente valores de parâmetro de entrada para controlar o processo de transformação é o uso mais comum desse recurso.

Em aplicativos .NET, um objeto XsltArgumentList é usado para fornecer valores para parâmetros XSLT em tempo de execução. O método AddParam é usado para adicionar um par nome-valor que representa um parâmetro que é definido na folha de estilos e seu valor para um objeto XsltArgumentList . O objeto XsltArgumentList , em seguida, é fornecido como um parâmetro ao executar o método de transformação do objeto XslTransform que é usado para executar a transformação.

GetParam e os métodos RemoveParam são usados para acessar e remover parâmetros individuais que são adicionados a um objeto XsltArgumentList . Para obter informações adicionais sobre como executar parametrizada transformação XSLT em aplicativos .NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
321704COMO: Executar transformações em XSL parametrizadas em aplicativos .NET

Blocos de script de linha

Funções de script embutido são uma das opções que você pode usar para implementar funções definidas pelo usuário e sub procedimentos que são referenciados em expressões de consulta XPath que são usadas em uma folha de estilos XSLT. A capacidade para incluir blocos de script embutido em folhas de estilos XSLT é uma extensão do W3C.

No .NET Framework, sub-rotinas e funções embutidas personalizados são codificados em blocos <msxsl:script> na folha de estilos XSLT. Você pode usar uma linguagem de programação Microsoft Visual Studio. NET, como Microsoft Visual Basic .NET ou Microsoft Visual translation from VPE for Csharp .NET para implementar essas rotinas.

Uma das desvantagens está associado com usando blocos de script embutido é que eles fazer folhas de estilo XSLT não portátil. A tecnologia, as marcas e a semântica que é usada para implementar blocos de script embutido é extensões específicas de fornecedor que não padronizar as especificações do W3C XSLT.

Você só pode usar uma folha de estilos XSLT que define e usa blocos de script embutido com êxito no transformações que são executadas usando um processador XSLT que podem interpretar a semântica relacionada e integrar com a tecnologia que deve executar o código.

No .NET Framework, assemblies gerenciados são gerados e implicitamente carregados para executar o código que está contido no in-line <msxsl:script> blocos de script. Há um problema conhecido no .NET Framework que impede que esses assemblies de sendo descarregado corretamente quando o processo de transformação for concluído. Este anomalias podem levar a um aumento no uso de memória se a folha de estilo afetado repetidamente é carregada para executar transformações XSLT. A memória unreleased é liberada somente quando o processo de host é reciclado. Para obter informações adicionais sobre esse problema no .NET Framework, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
316775PROBLEMA: Não é possível descarregar assemblies que você criar e carregar usando o script em XSLT
Para contornar esse problema em aplicativos Microsoft ASP.NET, você pode carregar as folhas de estilo afetado apenas uma vez durante a vida do aplicativo, armazenar em cache as folhas de estilos afetado (em cache ASP.NET) e reutilizar as versões em cache para transformações depois disso.

No Windows Forms e aplicativos de console, você pode usar instâncias de objeto XslTransform globais para carregar as folhas de estilo afetado quando o aplicativo é iniciado e para executar transformações posteriores. Essas soluções alternativas não se aplicam quando transformações XSLT precisam ser executado em ambientes sem monitoração de estado (por exemplo, com componentes de serviços corporativos da camada intermediária).

A Microsoft recomenda que você use objetos de extensão XSLT para implementar funções personalizadas de extensão do XPath para contornar este problema.

Objetos de extensão XSLT

A Microsoft recomenda que você use objetos de extensão para implementar personalizados sub-rotinas e funções que são referenciadas em expressões de consulta XPath que são usadas em uma folha de estilos XSLT.

Você pode criar DLLs de Framework .NET para implementar e usar objetos de extensão quando você executar transformações em aplicativos. NET. As funções e sub-rotinas personalizados são implementadas em uma DLL e uma instância de objeto do componente da DLL é fornecida como um parâmetro de tempo de execução usando um objeto XsltArgumentList quando você executar o método de transformação de um objeto XslTransform .

O método AddExtensionObject da classe XsltArgumentList é usado para adicionar uma instância de objeto de extensão a um objeto XsltArgumentList . Você pode usar o Get e os métodos Remover do objeto de extensão para acessar e remover uma instância de objeto de extensão que é adicionada a um objeto XsltArgumentList .

A especificação W3C XSLT aborda o conceito e o uso de elementos de extensão e funções sem qualquer prestar atenção ou fazer referência à tecnologia de base que você deve usar para implementá-los. Você deve definir e usar prefixos de namespace XML com base em padrões em folhas de estilo para fazer referência a funções e sub-rotinas que são implementadas em objetos de extensão. Fornecedores podem selecionar uma tecnologia que é mais adequada para sua plataforma para abordar os aspectos de implementação de objetos de extensão. Para obter informações adicionais sobre o conceito e o uso de objetos de extensão XSLT no .NET Framework e para as etapas criar um aplicativo de ponta a ponta que demonstra como usar objetos de extensão quando você executar transformações XSLT em aplicativos. NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
321702COMO: Utilizar objetos de extensão ao executar transformações de XSL em aplicativos do Visual Basic .NET

Diretrizes gerais para usar as classes do .NET Framework para realizar transformações em XSLT

  • A classe XPathDocument é altamente otimizada para processamento XSLT e XPath. Para desempenho ideal, sempre use um objeto XPathDocument para fornecer o XML de origem enquanto você está executando uma transformação XSLT.
  • Você pode armazenar em cache e reutilizar objetos XslTransform que são usados para carregar folhas de estilos XSLT que freqüentemente são usadas para executar transformações posteriores.
  • O processador XSLT não armazena cache automaticamente a extensão instâncias de objetos que são usadas em transformações XSLT. Você pode armazenar em cache e reutilizar objetos XsltArgumentList que são usados para fornecer instâncias de objeto de extensão para usados com freqüência folhas de estilos XSLT quando você executar transformações posteriores. Este é o método a objetos de extensão de cache que são usados em transformações XSLT no .NET Framework.
  • Uma folha de estilo XSLT que implementa blocos de script embutido somente deve ser carregada uma vez e armazenados em cache. Você deve reutilizar o objeto XslTransform em cache para transformações posteriores. Você pode usar esta prática para solucionar o problema de gerenciamento de memória que é descrito no artigo da Base de dados de Conhecimento da Microsoft Q316775 ao deve usar funções de script embutido em uma folha de estilos.
  • A Microsoft recomenda que você use objetos de extensão para implementar funções personalizadas que são referenciadas em expressões de consulta XPath que são usadas em folhas de estilo XSLT. Implemente classes personalizadas XsltContext IXsltContextFunction e IXsltContextVariable somente quando você tem para implementar e para fazer referência extensão personalizada funções em expressões de consulta XPath que são executadas em aplicativos .NET usando XPathNavigator e as classes de DOM.
  • Implementar o código para lidar com XsltCompileException , XsltException e as classes de exceção XmlException .NET Framework quando você escrever código para executar transformações XSLT de manipulação de exceção. Essas classes de exceção fornecem informações sobre quaisquer problemas de XSLT ou XML que ocorrem quando você tenta executar uma transformação XSLT. Além disso, a Microsoft recomenda que você implemente código para manipular outras exceções específicas do .NET Framework e que você implementar a classe System.Exception genérica, com base na funcionalidade de outra, não relacionadas à XSLT que é implementada no bloco de código que executa a transformação do XSLT.

Desempenho de transformações em XSLT no .NET Framework

Para obter informações adicionais sobre as causas e as soluções para problemas de desempenho conhecidos quando você executar transformações XSLT em aplicativos. NET, clique no número de artigo abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
325689INFO: O desempenho de transformações em XSLT no .NET Framework

Solução de problemas

Se você tiver problemas ou se você tiver perguntas, você pode consultar os grupos de notícias MSDN onde você pode compartilhar suas experiências com seus colegas. Você também pode usar a base de dados de Conhecimento da Microsoft onde você pode procurar artigos sobre problemas específicos ou entre em contato com o Atendimento Microsoft.
Grupos de notícias do MSDN
http://msdn.microsoft.com/newsgroups/

Pesquisa do Knowledge Base
http://support.microsoft.com/search

Suporte técnico
http://support.microsoft.com

Referências

Para obter informações adicionais % 1, clique no número % 2 abaixo para ler o artigo % 2 na Base de dados de Conhecimento da Microsoft:
313651INFO: Guia para XML no .NET Framework

Propriedades

ID do artigo: 313997 - Última revisão: sexta-feira, 12 de agosto de 2005 - Revisão: 4.4
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Palavras-chave: 
kbmt kbarttyperoadmap kbinfo KB313997 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 313997

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