Compartilhar via


XslTransform Classe

Definição

Cuidado

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

Transforma dados XML usando uma folha de estilos XSLT (linguagem XSL Transformation).

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
Herança
XslTransform
Atributos

Exemplos

O exemplo a seguir transforma o documento XML especificado e gera o resultado para o console.

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

Comentários

Observação

A XslTransform classe está obsoleta no Microsoft .NET Framework versão 2.0. A XslCompiledTransform classe é o novo processador XSLT. Para obter mais informações, consulte Usando a classe XslCompiledTransform e migrando da classe XslTransform.

XslTransform dá suporte à sintaxe XSLT 1.0. A folha de estilos XSLT deve usar o namespace http://www.w3.org/1999/XSL/Transform.

Argumentos adicionais também podem ser adicionados à folha de estilos usando a XsltArgumentList classe. Essa classe contém parâmetros de entrada para a folha de estilos e objetos de extensão que podem ser chamados da folha de estilos.

Para transformar dados XML:

  1. Crie um objeto XslTransform.

  2. Use o Load método para carregar a folha de estilos para a transformação. Esse método tem várias sobrecargas e pode carregar uma folha de estilos usando uma XmlReaderXPathNavigatorIXPathNavigableURL com o local do arquivo.

  3. Use o Transform método para transformar os dados XML. Esse método tem várias sobrecargas e pode lidar com diferentes tipos de entrada e saída. Você também pode especificar um XsltArgumentList que contém argumentos adicionais a serem usados como entrada durante a transformação.

Considerações sobre segurança

Ao criar um aplicativo que usa a classe de XslTransform , você deve estar ciente dos seguintes itens e suas implicações:

  • Os objetos de extensão estão habilitados por padrão. Se um XsltArgumentList objeto que contém objetos de extensão for passado para o Transform método, eles serão utilizados.

  • As folhas de estilos XSLT podem incluir referências a outros arquivos e blocos de script inseridos. Um usuário mal-intencionado pode explorar isso fornecendo dados ou folhas de estilo que, quando executadas, farão com que o sistema seja processado até que o computador seja executado com poucos recursos.

  • Os aplicativos XSLT que executam em um ambiente de confiança misturado podem levar a falsificação de folha de estilos. Por exemplo, um usuário mal-intencionado pode carregar um objeto com uma folha de estilos prejudicial e entregá-lo fora a outro usuário que subseqüentemente chama o método de Transform e executa a transformação.

Esses problemas de segurança podem ser mitigados por não aceitar XslTransform objetos, folhas de estilo XSLT ou dados de origem XML de fontes não confiáveis.

Suporte a scripts

Essa classe dá suporte ao script inserido usando o msxsl:script elemento.

Na versão 1.1 do .NET Framework, a evidência da folha de estilos determina quais permissões são dadas a scripts inseridos.

  • Se a folha de estilos foi carregada de um URI (Uniform Resource Identifier), o URI será usado para criar a evidência. Essa evidência inclui o URI junto com seu site e zona.

  • Se a folha de estilos foi carregada usando outra fonte, você pode fornecer evidências passando um System.Security.Policy.Evidence objeto para o Load método. Caso contrário, o assembly de script tem total confiança.

Chamadores semi-confiáveis: UnmanagedCode a permissão é necessária para compilar o script inserido. ControlEvidence a permissão é necessária para fornecer Evidence ao Load método. A SecurityException será gerada se o chamador não tiver as permissões necessárias. Consulte System.Security.Permissions.SecurityPermission e System.Security.Permissions.SecurityPermissionFlag para obter mais informações.

O msxsl:script elemento tem os seguintes requisitos:

  • O msxsl:script elemento pertence ao urn:schemas-microsoft-com:xslt namespace. A folha de estilos deve incluir a declaração xmlns:msxsl=urn:schemas-microsoft-com:xsltde namespace.

  • O msxsl:script elemento pode incluir um language atributo que especifica a linguagem de script a ser usada. O valor do language atributo deve ser um dos seguintes: C#, CSharp, VB, VisualBasic, JScript ou JavaScript. Como o nome do idioma não diferencia maiúsculas de minúsculas, JavaScript e javascript são válidos. Se um language atributo não for especificado, o padrão será JScript.

  • O msxsl:script elemento deve incluir um implements-prefix atributo que contém o prefixo que representa o namespace associado ao bloco de script. Esse namespace deve ser definido na folha de estilos. Uma folha de estilos pode incluir vários blocos de script agrupados por namespace. Você não pode ter blocos de script com vários idiomas no mesmo namespace. Os blocos de script podem chamar uma função definida em outro bloco de script, desde que os blocos de script residam no mesmo namespace. O conteúdo de um bloco de script é analisado de acordo com as regras e a sintaxe da linguagem de script (fornecida pelo language atributo). Por exemplo, se você tivesse um bloco de script C#, os comentários seriam prefixados pelos // caracteres. Os comentários devem ser conteúdo XML válido.

Observação

É recomendável encapsular blocos de script em uma seção CDATA.

<msxsl:script implements-prefix='xy' language='C#'>  
 <![CDATA[  
 // Add code here.  
 ]]>
</msxsl:script>  

As funções podem ser declaradas no elemento msxsl:script. A tabela a seguir mostra os namespaces que têm suporte por padrão.

Namespaces com suporte Descrição
System Classes do sistema.
System.Collection Classes de coleção.
System.Text Classes de tratamento de texto.
System.Xml Classes XML principais.
System.Xml.Xsl Classes XSLT.
System.Xml.XPath Classes da linguagem XPath.

Os argumentos fornecidos e os valores de retorno definidos pelas funções de script devem ser um dos tipos W3C (World Wide Web Consortium) listados abaixo. A tabela a seguir detalha o mapeamento entre os tipos W3C, XPath ou XSLT e as classes .NET Framework correspondentes.

Tipo W3C Classe .NET equivalente
Cadeia de caracteres (XPath) System.String
Booliano (XPath) System.Boolean
Número (XPath) System.Double
Fragmento de árvore de resultado (XSLT) System.Xml.XPath.XPathNavigator
Conjunto de Nós (XPath) System.Xml.XPath.XPathNodeIterator

Se a função script utilizar um dos seguintes tipos numéricos: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single ou Decimal, esses tipos serão coagidos a Double, que mapeia para o número de tipo XPath do W3C.

Uma exceção é gerada quando uma função é chamada que não pode converter o resultado do argumento em um dos tipos necessários.

Observação

msxsl:script e msxsl:node-list são as únicas funções do urn:schemas-microsoft-com:xslt namespace compatíveis com a XslTransform classe.

XslTransform tem a capacidade de utilizar o código CLR (Common Language Runtime) como um mecanismo de extensão. Isso é feito passando uma instância de uma classe para a XslTransform classe e chamando seus métodos públicos em uma folha de estilos XSLT. Os métodos definidos com a params palavra-chave, que permite que um número não especificado de parâmetros seja passado, não funcionam corretamente nesse cenário. Consulte os params para obter mais detalhes.

Para obter mais informações, consulte transformações XSLT com a classe XslTransform.

Construtores

XslTransform()

Inicializa uma nova instância da classe XslTransform.

Propriedades

XmlResolver
Obsoleto.

Define o XmlResolver usado para resolver recursos externos quando o método Transform é chamado.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Load(IXPathNavigable)
Obsoleto.

Carrega a folha de estilos XSLT contida no IXPathNavigable.

Load(IXPathNavigable, XmlResolver)
Obsoleto.

Carrega a folha de estilos XSLT contida no IXPathNavigable.

Load(IXPathNavigable, XmlResolver, Evidence)

Carrega a folha de estilos XSLT contida no IXPathNavigable. Esse método permite que você limite as permissões da folha de estilos especificando a evidência.

Load(String)

Carrega a folha de estilos XSLT especificada por uma URL.

Load(String, XmlResolver)

Carrega a folha de estilos XSLT especificada por uma URL.

Load(XmlReader)
Obsoleto.

Carrega a folha de estilos XSLT contida no XmlReader.

Load(XmlReader, XmlResolver)
Obsoleto.

Carrega a folha de estilos XSLT contida no XmlReader.

Load(XmlReader, XmlResolver, Evidence)

Carrega a folha de estilos XSLT contida no XmlReader. Esse método permite que você limite as permissões da folha de estilos especificando a evidência.

Load(XPathNavigator)
Obsoleto.

Carrega a folha de estilos XSLT contida no XPathNavigator.

Load(XPathNavigator, XmlResolver)
Obsoleto.

Carrega a folha de estilos XSLT contida no XPathNavigator.

Load(XPathNavigator, XmlResolver, Evidence)

Carrega a folha de estilos XSLT contida no XPathNavigator. Esse método permite que você limite as permissões da folha de estilos especificando a evidência.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
Transform(IXPathNavigable, XsltArgumentList)
Obsoleto.

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlReader.

Transform(IXPathNavigable, XsltArgumentList, Stream)
Obsoleto.

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um Stream.

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um Stream.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
Obsoleto.

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um TextWriter.

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um TextWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlReader.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
Obsoleto.

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlWriter.

Transform(String, String)
Obsoleto.

Transforma os dados XML no arquivo de entrada e gera o resultado para um arquivo de saída.

Transform(String, String, XmlResolver)

Transforma os dados XML no arquivo de entrada e gera o resultado para um arquivo de saída.

Transform(XPathNavigator, XsltArgumentList)
Obsoleto.

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlReader.

Transform(XPathNavigator, XsltArgumentList, Stream)
Obsoleto.

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um Stream.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um Stream.

Transform(XPathNavigator, XsltArgumentList, TextWriter)
Obsoleto.

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um TextWriter.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um TextWriter.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlReader.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
Obsoleto.

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlWriter.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlWriter.

Aplica-se a

Acesso thread-safe

XslTransform os objetos são somente thread-safe para operações de transformação. Não há garantia de que outras operações sejam thread-safe. Você deve garantir que nenhum outro método seja chamado no objeto durante operações de carga.