XslTransform Classe

Definição

Aviso

Esta API agora é obsoleta.

Transforma dados XML usando uma folha de estilos XSLT (linguagem XSL Transformation).Transforms XML data using an Extensible Stylesheet Language for Transformations (XSLT) style sheet.

public ref class XslTransform sealed
[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
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.The following example transforms the specified XML document and outputs the result to the 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 classe XslTransform é obsoleta no Microsoft .NET Framework versão 2,0.The XslTransform class is obsolete in the Microsoft .NET Framework version 2.0. A classe XslCompiledTransform é o novo processador XSLT.The XslCompiledTransform class is the new XSLT processor. Para obter mais informações, consulte usando a classe XslCompiledTransform e migrando da classe XslTransform.For more information, see Using the XslCompiledTransform Class and Migrating From the XslTransform Class.

XslTransform dá suporte à sintaxe XSLT 1,0.XslTransform supports the XSLT 1.0 syntax. A folha de estilos XSLT deve usar o http://www.w3.org/1999/XSL/Transformdo namespace.The XSLT style sheet must use the namespace http://www.w3.org/1999/XSL/Transform.

Argumentos adicionais também podem ser adicionados à folha de estilos usando a classe XsltArgumentList.Additional arguments can also be added to the style sheet using the XsltArgumentList class. Essa classe contém parâmetros de entrada para os objetos de folha de estilo e extensão que podem ser chamados da folha de estilos.This class contains input parameters for the style sheet and extension objects which can be called from the style sheet.

Para transformar dados XML:To transform XML data:

  1. Crie um objeto XslTransform.Create an XslTransform object.

  2. Use o método Load para carregar a folha de estilos da transformação.Use the Load method to load the style sheet for the transformation. Esse método tem várias sobrecargas e pode carregar uma folha de estilos usando um XmlReader, XPathNavigator, IXPathNavigableou uma URL com o local do arquivo.This method has several overloads and can load a style sheet using an XmlReader, XPathNavigator, IXPathNavigable, or a URL with the location of the file.

  3. Use o método Transform para transformar os dados XML.Use the Transform method to transform the XML data. Esse método tem várias sobrecargas e pode lidar com tipos diferentes de entrada e saída.This method has several overloads and can handle different types of input and output. Você também pode especificar um XsltArgumentList contendo argumentos adicionais para usar como entrada durante a transformação.You can also specify an XsltArgumentList containing additional arguments to use as input during the transformation.

Considerações sobre segurançaSecurity Considerations

Ao criar um aplicativo que usa a classe de XslTransform , você deve estar ciente dos seguintes itens e suas implicações:When creating an application that uses the XslTransform class, you should be aware of the following items and their implications:

  • Os objetos de extensão estão habilitados por padrão.Extension objects are enabled by default. Se um objeto XsltArgumentList contendo objetos de extensão for passado para o método Transform, eles serão utilizados.If an XsltArgumentList object containing extension objects is passed to the Transform method, they are utilized.

  • As folhas de estilos XSLT podem incluir referências a outros arquivos e blocos de script inseridos.XSLT style sheets can include references to other files and embedded script blocks. Um usuário mal-intencionado pode explorar isso fornecendo a você dados ou folhas de estilo que, quando executadas, fará com que o sistema seja processado até que o computador fique com poucos recursos.A malicious user can exploit this by supplying you with data or style sheets that when executed will cause your system to process until the computer runs low on resources.

  • Os aplicativos XSLT que executam em um ambiente de confiança misturado podem levar a falsificação de folha de estilos.XSLT applications that run in a mixed trust environment can result in style sheet spoofing. 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.For example, a malicious user can load an object with a harmful style sheet and hand it off to another user who subsequently calls the Transform method and executes the transformation.

Esses problemas de segurança podem ser mitigados não aceitando objetos XslTransform, folhas de estilo XSLT ou dados de origem XML de fontes não confiáveis.These security issues can be mitigated by not accepting XslTransform objects, XSLT style sheets, or XML source data from untrusted sources.

Suporte a scriptsScripting Support

Essa classe dá suporte ao script incorporado usando o elemento msxsl:script.This class supports embedded scripting using the msxsl:script element.

Na versão 1,1 do .NET Framework, a evidência da folha de estilos determina quais permissões são dadas aos scripts inseridos.In version 1.1 of the .NET Framework, the evidence of the style sheet determines what permissions are given to embedded scripts.

  • Se a folha de estilos foi carregada a partir de um Uniform Resource Identifier (URI), o URI é usado para criar a evidência.If the style sheet was loaded from a Uniform Resource Identifier (URI), the URI is used to create the evidence. Essa evidência inclui o URI junto com seu site e zona.This evidence includes the URI along with its site and zone.

  • Se a folha de estilos foi carregada usando outra fonte, você pode fornecer evidências passando um objeto System.Security.Policy.Evidence para o método Load.If the style sheet was loaded using another source, you can provide evidence by passing a System.Security.Policy.Evidence object to the Load method. Caso contrário, o assembly de script terá confiança total.Otherwise, the script assembly has full trust.

Chamadores semiconfiáveis: a permissão UnmanagedCode é necessária para compilar o script inserido.Semi-trusted callers: UnmanagedCode permission is required to compile the embedded script. ControlEvidence permissão é necessária para fornecer Evidence ao método Load.ControlEvidence permission is required to provide Evidence to the Load method. Um SecurityException será gerado se o chamador não tiver as permissões necessárias.A SecurityException is thrown if the caller does not have the necessary permissions. Consulte System.Security.Permissions.SecurityPermission e System.Security.Permissions.SecurityPermissionFlag para obter mais informações.See System.Security.Permissions.SecurityPermission and System.Security.Permissions.SecurityPermissionFlag for more information.

O elemento msxsl:script tem os seguintes requisitos:The msxsl:script element has the following requirements:

  • O elemento msxsl:script pertence ao namespace urn:schemas-microsoft-com:xslt.The msxsl:script element belongs to the urn:schemas-microsoft-com:xslt namespace. A folha de estilos deve incluir a declaração de namespace xmlns:msxsl=urn:schemas-microsoft-com:xslt.The style sheet must include the namespace declaration xmlns:msxsl=urn:schemas-microsoft-com:xslt.

  • O elemento msxsl:script pode incluir um atributo language que especifica a linguagem de script a ser usada.The msxsl:script element can include a language attribute that specifies the scripting language to use. O valor do atributo language deve ser um dos seguintes: C#, Csharp, VB, VisualBasic, JScript ou JavaScript.The value of the language attribute must be one of the following: C#, CSharp, VB, VisualBasic, JScript, or JavaScript. Como o nome do idioma não diferencia maiúsculas de minúsculas, JavaScript e JavaScript são válidos.Because the language name is not case-sensitive, JavaScript and javascript are both valid. Se um atributo language não for especificado, o padrão será JScript.If a language attribute is not specified, it defaults to JScript.

  • O elemento msxsl:script deve incluir um atributo implements-prefix que contém o prefixo que representa o namespace associado ao bloco de script.The msxsl:script element must include an implements-prefix attribute that contains the prefix representing the namespace associated with the script block. Esse namespace deve ser definido dentro da folha de estilos.This namespace must be defined within the style sheet. Uma folha de estilos pode incluir vários blocos de script que são agrupados por namespace.A style sheet can include multiple script blocks which are grouped by namespace. Você não pode ter blocos de script com vários idiomas no mesmo namespace.You cannot have script blocks with multiple languages within the same namespace. Blocos de script podem chamar uma função definida em outro bloco de script, desde que os blocos de script residam no mesmo namespace.Script blocks can call a function defined in another script block, provided the script blocks reside within the same namespace. O conteúdo de um bloco de script é analisado de acordo com as regras e a sintaxe da linguagem de script (fornecida pelo atributo language).The contents of a script block are parsed according to the rules and syntax of the scripting language (supplied by the language attribute). Por exemplo, se você tivesse um C# bloco de script, os comentários seriam prefixados pelo // caracteres.For example, if you had a C# script block, comments would be prefixed by the // characters. Os comentários devem ser um conteúdo XML válido.The comments must be valid XML content.

Observação

É recomendável encapsular blocos de script em uma seção CDATA.It is recommended that you wrap script blocks in a CDATA section.

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

As funções podem ser declaradas no elemento msxsl:script.Functions can be declared within the msxsl:script element. A tabela a seguir mostra os namespaces que têm suporte por padrão.The following table shows the namespaces that are supported by default.

Namespaces com suporteSupported Namespaces DescriçãoDescription
System Classes do sistema.System classes.
System.Collection Classes de coleção.Collection classes.
System.Text Classes de manipulação de texto.Text handling classes.
System.Xml Classes XML principais.Core XML classes.
System.Xml.Xsl Classes XSLT.XSLT classes.
System.Xml.XPath Classes da linguagem XPath.XML Path Language (XPath) classes.

Os argumentos fornecidos e os valores de retorno definidos pelas funções de script devem ser um dos tipos de World Wide Web Consortium (W3C) listados abaixo.The supplied arguments and return values defined by the script functions must be one of the World Wide Web Consortium (W3C) types listed below. A tabela a seguir detalha o mapeamento entre os tipos W3C, XPath ou XSLT, e as classes de .NET Framework correspondentes.The following table details the mapping between the W3C types, either XPath or XSLT, and the corresponding .NET Framework classes.

Tipo W3CW3C Type Classe equivalente do .NETEquivalent .NET class
Cadeia de caracteres (XPath)String (XPath) System.String
Booliano (XPath)Boolean (XPath) System.Boolean
Número (XPath)Number (XPath) System.Double
Fragmento de árvore de resultados (XSLT)Result Tree Fragment (XSLT) System.Xml.XPath.XPathNavigator
Conjunto de nós (XPath)Node Set (XPath) System.Xml.XPath.XPathNodeIterator

Se a função script utilizar um dos tipos numéricos a seguir: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single ou Decimal, esses tipos serão forçados a Double, que será mapeado para o número de tipo XPath do W3C.If the script function utilizes one of the following numeric types: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, or Decimal, these types are coerced to Double, which maps to the W3C XPath type number.

Uma exceção é gerada quando uma função é chamada que não pode converter o resultado do argumento em um dos tipos necessários.An exception is thrown when a function is called that cannot convert the argument result to one of the required types.

Observação

msxsl:script e msxsl:node-list são as únicas funções do namespace urn:schemas-microsoft-com:xslt com suporte na classe XslTransform.msxsl:script and msxsl:node-list are the only functions from the urn:schemas-microsoft-com:xslt namespace that are supported by the XslTransform class.

XslTransform tem a capacidade de utilizar o código Common Language Runtime (CLR) como um mecanismo de extensão.XslTransform has the ability to utilize common language runtime (CLR) code as an extension mechanism. Isso é feito passando uma instância de uma classe para a classe XslTransform e chamando seus métodos públicos dentro de uma folha de estilos XSLT.This is accomplished by passing an instance of a class to the XslTransform class and calling its public methods within an XSLT style sheet. Os métodos que são definidos com a palavra-chave params, que permite que um número não especificado de parâmetros sejam passados, não funcionam corretamente nesse cenário.Methods that are defined with the params keyword, which allows an unspecified number of parameters to be passed, do not work correctly in this scenario. Consulte params para obter mais detalhes.See params for more details.

Para obter mais informações, consulte transformações XSLT com a classe XslTransform.For more information see XSLT Transformations with the XslTransform Class.

Construtores

XslTransform()

Inicializa uma nova instância da classe XslTransform.Initializes a new instance of the XslTransform class.

Propriedades

XmlResolver

Define o XmlResolver usado para resolver recursos externos quando o método Transform é chamado.Sets the XmlResolver used to resolve external resources when the Transform method is called.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
Load(IXPathNavigable)

Carrega a folha de estilos XSLT contida no IXPathNavigable.Loads the XSLT style sheet contained in the IXPathNavigable.

Load(IXPathNavigable, XmlResolver)

Carrega a folha de estilos XSLT contida no IXPathNavigable.Loads the XSLT style sheet contained in the IXPathNavigable.

Load(IXPathNavigable, XmlResolver, Evidence)

Carrega a folha de estilos XSLT contida no IXPathNavigable.Loads the XSLT style sheet contained in the IXPathNavigable. Esse método permite que você limite as permissões da folha de estilos especificando a evidência.This method allows you to limit the permissions of the style sheet by specifying evidence.

Load(String)

Carrega a folha de estilos XSLT especificada por uma URL.Loads the XSLT style sheet specified by a URL.

Load(String, XmlResolver)

Carrega a folha de estilos XSLT especificada por uma URL.Loads the XSLT style sheet specified by a URL.

Load(XmlReader)

Carrega a folha de estilos XSLT contida no XmlReader.Loads the XSLT style sheet contained in the XmlReader.

Load(XmlReader, XmlResolver)

Carrega a folha de estilos XSLT contida no XmlReader.Loads the XSLT style sheet contained in the XmlReader.

Load(XmlReader, XmlResolver, Evidence)

Carrega a folha de estilos XSLT contida no XmlReader.Loads the XSLT style sheet contained in the XmlReader. Esse método permite que você limite as permissões da folha de estilos especificando a evidência.This method allows you to limit the permissions of the style sheet by specifying evidence.

Load(XPathNavigator)

Carrega a folha de estilos XSLT contida no XPathNavigator.Loads the XSLT style sheet contained in the XPathNavigator.

Load(XPathNavigator, XmlResolver)

Carrega a folha de estilos XSLT contida no XPathNavigator.Loads the XSLT style sheet contained in the XPathNavigator.

Load(XPathNavigator, XmlResolver, Evidence)

Carrega a folha de estilos XSLT contida no XPathNavigator.Loads the XSLT style sheet contained in the XPathNavigator. Esse método permite que você limite as permissões da folha de estilos especificando a evidência.This method allows you to limit the permissions of the style sheet by specifying evidence.

MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)
Transform(IXPathNavigable, XsltArgumentList)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlReader.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlReader.

Transform(IXPathNavigable, XsltArgumentList, Stream)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um Stream.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a Stream.

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um Stream.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a Stream.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um TextWriter.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a TextWriter.

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um TextWriter.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a TextWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlReader.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlReader.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlWriter.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Transforma os dados XML no IXPathNavigable usando o args especificado e gera o resultado para um XmlWriter.Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlWriter.

Transform(String, String)

Transforma os dados XML no arquivo de entrada e gera o resultado para um arquivo de saída.Transforms the XML data in the input file and outputs the result to an output file.

Transform(String, String, XmlResolver)

Transforma os dados XML no arquivo de entrada e gera o resultado para um arquivo de saída.Transforms the XML data in the input file and outputs the result to an output file.

Transform(XPathNavigator, XsltArgumentList)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlReader.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlReader.

Transform(XPathNavigator, XsltArgumentList, Stream)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um Stream.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a Stream.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um Stream.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a Stream.

Transform(XPathNavigator, XsltArgumentList, TextWriter)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um TextWriter.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a TextWriter.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um TextWriter.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a TextWriter.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlReader.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlReader.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlWriter.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlWriter.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Transforma os dados XML no XPathNavigator usando o args especificado e gera o resultado para um XmlWriter.Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlWriter.

Aplica-se a

Acesso thread-safe

XslTransform objetos são apenas thread-safe para operações de transformação.XslTransform objects are only thread-safe for transform operations. Não há garantia de que outras operações sejam thread-safe.Other operations are not guaranteed to be thread-safe. Você deve garantir que nenhum outro método seja chamado no objeto durante as operações de carregamento.You must ensure that no other methods are called on the object during load operations.