A classe XslTransform implementa do processador XSLTXslTransform Class Implements the XSLT Processor

Observação

A classe XslTransform está obsoleta no .NET Framework 2.0.The XslTransform class is obsolete in the .NET Framework 2.0. Você pode executar a linguagem XSL Transformations (XSLT) usando a classe XslCompiledTransform.You can perform Extensible Stylesheet Language for Transformations (XSLT) transformations using the XslCompiledTransform class. Confira Usar a classe XslCompiledTransform e Migrar da classe XslTransform para saber mais.See Using the XslCompiledTransform Class and Migrating From the XslTransform Class for more information.

A classe de XslTransform é um processador XSLT que implementa a recomendação de versão 1,0 de transformações XSL (XSLT).The XslTransform class is an XSLT processor implementing the XSL Transformations (XSLT) Version 1.0 recommendation. O método de Load localiza e ler as folhas de estilos, e o método de Transform torna o documento de origem determinado.The Load method locates and reads style sheets, and the Transform method transforms the given source document. Qualquer armazenamento que implemente a interface de IXPathNavigable pode ser usado como o documento de origem para XslTransform.Any store that implements the IXPathNavigable interface can be used as the source document for the XslTransform. O .NET Framework atualmente implementa a interface de IXPathNavigable em XmlDocument, em XmlDataDocument e em XPathDocument, para que todos estes pode ser usado como o documento de fonte de entrada para uma transformação.The .NET Framework currently implements the IXPathNavigable interface on the XmlDocument, the XmlDataDocument, and the XPathDocument, so all of these can be used as the input source document to a transformation.

O objeto de XslTransform no .NET Framework dá suporte somente à especificação XSLT 1,0, definida com a seguir namespace:The XslTransform object in the .NET Framework only supports the XSLT 1.0 specification, defined with the following namespace:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

A folha de estilos pode ser carregada, usando o método Load , de uma das seguintes classes:The style sheet can be loaded, using the Load method, from one of the following classes:

  • XPathNavigatorXPathNavigator

  • XmlReaderXmlReader

  • Uma cadeia de caracteres que representa um URLA string representing a URL

Há um método diferente de Load para cada uma das classes acima de entrada.There is a different Load method for each of the above input classes. Alguns métodos recolhem uma combinação de uma dessas classes e a classe de XmlResolver como argumentos.Some methods take in a combination of one of these classes and the XmlResolver class as arguments. XmlResolver encontrar os recursos referenciados por <xsl:import> ou <xsl:include> encontrado na folha de estilos.The XmlResolver locates resources referenced by <xsl:import> or <xsl:include> found in the style sheet. Os seguintes métodos recebem uma cadeia de caracteres, XmlReader, ou XPathNavigator como entrada.The following methods take a string, XmlReader, or XPathNavigator as input.

Overloads Public Sub Load(String)
public void Load(string);
Overloads Public Sub Load(String, XmlResolver)
public void Load(string, XmlResolver);
Overloads Public Sub Load(XmlReader, XmlResolver, Evidence)
public void Load(XmlReader, XmlResolver, Evidence);
Overloads Public Sub Load(XPathNavigator, XmlResolver, Evidence)
public void Load(XPathNavigator, XmlResolver, Evidence);

A maioria dos métodos de Load mostradas acima recebem XmlResolver como um parâmetro.Most of the Load methods shown above take an XmlResolver as a parameter. XmlResolver é usado para carregar a folha de estilos e qualquer folha de estilos referenciadas em XSL: importação e XSL: inclua elementos.The XmlResolver is used to load the style sheet and any style sheet(s) referenced in xsl:import and xsl:include elements.

A maioria dos métodos de Load também têm a evidência como um parâmetro.Most of the Load methods also take evidence as a parameter. O parâmetro de evidência é Evidence que está associado com a folha de estilos.The evidence parameter is the Evidence that is associated with the style sheet. O nível de segurança de folha de estilo afeta o nível de segurança todos os recursos que subsequentes referência, como o script contém, quaisquer funções de document() usa, e todos os objetos de extensão usados por XsltArgumentList.The security level of the style sheet affects the security level of any subsequent resources it references, such as the script it contains, any document() functions it uses, and any extension objects used by the XsltArgumentList.

Se a folha de estilos é carregada usando um método de Load que não contenha um parâmetro de URL e nenhuma evidência é fornecida, a evidência de folha de estilos é calculada pelo URL dado com suas site e zona.If the style sheet is loaded using a Load method that contains a URL parameter and no evidence is provided, the evidence of the style sheet is calculated by combining the given URL with its site and zone.

Se nenhum URI ou evidência é fornecido, então a evidência definida para a folha de estilos é totalmente confiável.If no URI or evidence is provided, then the evidence set for the style sheet is fully trusted. Não carregar folhas de estilos de fontes não confiáveis, ou adicionar objetos não confiáveis de extensão em XsltArgumentList.Do not load style sheets from untrusted sources, or add untrusted extension objects into the XsltArgumentList.

Para obter mais informações sobre níveis de segurança e evidências e como ele afeta o script, consulte scripting de <msxsl:script> folha de estilos XSLT usando .For more information about security levels and evidence and how it affects scripting, see XSLT Stylesheet Scripting Using <msxsl:script>. Para saber mais sobre os níveis e evidência de segurança, e como isso afeta os objetos de extensão, confira XsltArgumentList para parâmetros de folha de estilos e objetos de extensão.For information about security levels and evidence and how it affects extension objects, see XsltArgumentList for Style Sheet Parameters and Extension Objects.

Para saber mais sobre níveis e evidência de segurança, e como isso afeta a função document(), confira Resolvendo folhas de estilos XSLT e documentos externos.For information about security levels and evidence and how it affects the document() function, see Resolving External XSLT Style Sheets and Documents.

Uma folha de estilos pode ser fornecida com um número de parâmetros.A style sheet can be supplied with a number of input parameters. A folha de estilos também pode chamar funções em objetos de extensão.The style sheet can also call functions on extension objects. Os parâmetros e objetos de extensão são fornecidos para a folha de estilos usando a classe de XsltArgumentList .Both parameters and extension objects are supplied to the style sheet using the XsltArgumentList class. Para obter mais informações sobre XsltArgumentList, consulte XsltArgumentList.For more information about the XsltArgumentList, see XsltArgumentList.

Os privilégios de segurança de folha de estilos depende evidências fornecida.The security privileges of the style sheet depend on the evidence provided. A tabela a seguir resume o local de folha de estilos e fornece uma explicação do tipo de evidência para dar.The following table summarizes the location of the style sheet and gives an explanation of what type of evidence to give.

  • A folha de estilos XSLT não tem nenhuma referência externo, ou a folha de estilos vem de uma base de código que você confie.The XSLT style sheet has no external references, or the style sheet comes from a code base that you trust.

    • Fornecer a evidência do seu conjunto:Provide the evidence from your assembly:

      Dim xslt = New XslTransform() xslt.Load(stylesheet, resolver, Me.GetType().Assembly.Evidence)
      
      XsltTransform xslt = new XslTransform();  xslt.Load(stylesheet, resolver, this.GetType().Assembly.Evidence);
      
  • A folha de estilos XSLT vem de uma fonte externa.The XSLT style sheet comes from an outside source. A origem de origem é conhecida e há URI verificável.The origin of the source is known and there is a verifiable URI.

    • Crie a evidência usando um URI.Create evidence using the URI.

      Dim xslt As New XslTransform() Dim ev As Evidence = XmlSecureResolver.CreateEvidenceForUrl(stylesheetUri) xslt.Load(stylesheet, resolver, evidence)
      
      XslTransform xslt = new XslTransform(); Evidence ev = XmlSecureResolver.CreateEvidenceForUrl(stylesheetUri); xslt.Load(stylesheet, resolver, evidence);
      
  • A folha de estilos XSLT vem de uma fonte externa.The XSLT style sheet comes from an outside source. A origem de origem não é conhecida.The origin of the source is not known.

    • Defina a evidência a null.Set evidence to null. Blocos de script não são processados, a função XSLT document() não é suportada, e objetos privilegiados de extensão não é permitida.Script blocks are not processed, the XSLT document() function is not supported, and privileged extension objects are disallowed.

      Além disso, você pode também definir o parâmetro de resolver a null que isso garante que xsl:import e elementos de xsl:include não sejam processadas.Additionally, you can also set the resolver parameter to null This ensures that xsl:import and xsl:include elements are not processed.

  • A folha de estilos XSLT vem de uma fonte externa.The XSLT style sheet comes from an outside source. A origem de origem não é conhecido, mas você precisar de suporte de script.The origin of the source is not known, but you require script support.

    • Evidência de solicitação do chamador.Request evidence from the caller.

Transformação de dados XMLTransformation of XML Data

Uma vez que uma folha de estilos é carregada, a transformação chamando um dos métodos de Transform e fornecendo um documento de fonte de entrada.Once a style sheet is loaded, the transformation starts by calling one of the Transform methods and supplying an input source document. O método de Transform é sobrecarregado para fornecer saída diferente de transformação.The Transform method is overloaded to provide different transformation outputs. A transformação pode levar a seguir formata de saída:The transformation can result in the following output formats:

Esse último formato, o URL de cadeia de caracteres, fornece um cenário de uso geral em transformar um documento de entrada localizado em um URL e gravar no documento a URL de saída.This last format, the string URL, provides for a commonly used scenario in transforming an input document located in a URL and writing the document to the output URL. Este método de Transform é um método conveniente para carregar um documento XML de um arquivo, para executar a transformação XSLT, e para escrever a saída para um arquivo.This Transform method is a convenience method to load an XML document from a file, perform the XSLT transformation, and write the output to a file. Isso impede que você tem que criar e carregar o documento de fonte de entrada, e grava a um fluxo de arquivos.This prevents you from having to create and load the input source document, and then write to a file stream. O exemplo de código a seguir mostra o uso do método de Transform usando o URL de cadeia de caracteres como entrada e saída:The following code sample shows this use of the Transform method using the string URL as input and output:

Dim xsltransform As XslTransform = New XslTransform()
xsltransform.Load("favorite.xsl")
xsltransform.Transform("MyDocument.Xml", "TransformResult.xml", Nothing)
XslTransform xsltransform = new XslTransform();
xsltransform.Load("favorite.xsl");
xsltransform.Transform("MyDocument.xml", "TransformResult.xml", null);

Transformando uma seção de um documento XMLTransforming a Section of an XML Document

As transformações são aplicadas ao documento no dataset.Transformations apply to the document as a whole. Ou seja se você passar em um nó que não seja o nó de diretório base, isso não impede que o processo de transformação acessar todos os nós do documento carregado.In other words, if you pass in a node other than the document root node, this does not prevent the transformation process from accessing all nodes in the loaded document. Para transformar um fragmento da árvore de resultado, você deve criar XmlDocument que contém apenas o fragmento da árvore de resultado e passe o XmlDocument para o método de Transform .To transform a result tree fragment, you must create an XmlDocument containing just the result tree fragment and pass that XmlDocument to the Transform method. O exemplo a seguir executa uma transformação em um fragmento da árvore de resultado.The following example performs a transformation on a result tree fragment.

Dim xslt As New XslTransform()
xslt.Load("print_root.xsl")
Dim doc As New XmlDocument()
doc.Load("library.xml")
' Create a new document containing just the result tree fragment.
Dim testNode As XmlNode = doc.DocumentElement.FirstChild
Dim tmpDoc As New XmlDocument()
tmpDoc.LoadXml(testNode.OuterXml)
' Pass the document containing the result tree fragment
' to the Transform method.
Console.WriteLine(("Passing " + tmpDoc.OuterXml + " to print_root.xsl"))
xslt.Transform(tmpDoc, Nothing, Console.Out, Nothing)
XslTransform xslt = new XslTransform();
xslt.Load("print_root.xsl");
XmlDocument doc = new XmlDocument();
doc.Load("library.xml");
// Create a new document containing just the result tree fragment.
XmlNode testNode = doc.DocumentElement.FirstChild;
XmlDocument tmpDoc = new XmlDocument();
tmpDoc.LoadXml(testNode.OuterXml);
// Pass the document containing the result tree fragment
// to the Transform method.
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");
xslt.Transform(tmpDoc, null, Console.Out, null);

O exemplo usa os arquivos library.xml e print_root. xsl como entrada e gera o seguinte para o console:The example uses the library.xml and print_root.xsl files as input and outputs the following to the console:

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl
Root node is book.

library.xmllibrary.xml

<library>
  <book genre='novel' ISBN='1-861001-57-5'>
     <title>Pride And Prejudice</title>
  </book>
  <book genre='novel' ISBN='1-81920-21-2'>
     <title>Hook</title>
  </book>
</library>

print_root.xslprint_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >
  <output method="text" />
  <template match="/">
     Root node is  <value-of select="local-name(//*[position() = 1])" />
  </template>
</stylesheet>

Migração XSLT do .NET Framework versão 1,0 para a versão 1,1 do .NET FrameworkMigration of XSLT from .NET Framework version 1.0 to .NET Framework version 1.1

A tabela a seguir mostra os métodos obsoletos do .NET Framework versão 1.0 e a nova versão dos métodos do .NET Framework 1.1 para o método Load.The following table shows the obsolete .NET Framework version 1.0 methods and new .NET Framework version 1.1 methods for the Load method. Novos métodos permitem que você limitar as permissões de folha de estilos especificando a evidência.The new methods enable you to limit the permissions of the style sheet by specifying evidence.

Métodos obsoletos de carregamento do .NET Framework versão 1.0Obsolete .NET Framework version 1.0 Load Methods Métodos de carregamento do .NET Framework versão 1.1 de substituiçãoReplacement .NET Framework version 1.1 Load Methods
Carregamento XPathNavigator conectado (;)Load(XPathNavigator input);

Carregando (entrada de XPathNavigator, resolvedor de XmlResolver);Load(XPathNavigator input, XmlResolver resolver);
Carregando (folha de estilos de XPathNavigator, resolvedor de XmlResolver, evidência de evidência);Load(XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence);
Carregando (folha de estilos de IXPathNavigable);Load(IXPathNavigable stylesheet);

Carregando (folha de estilos de IXPathNavigable, resolvedor de XmlResolver);Load(IXPathNavigable stylesheet, XmlResolver resolver);
Carregando (folha de estilos de IXPathNavigable, resolvedor de XmlResolver, evidência de evidência);Load(IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence);
Carregando (folha de estilos de XmlReader);Load(XmlReader stylesheet);

Carregando (folha de estilos de XmlReader, resolvedor de XmlResolver);Load(XmlReader stylesheet, XmlResolver resolver);
Carregando (folha de estilos de XmlReader, resolvedor de XmlResolver, evidência de evidência);Load(XmlReader stylesheet, XmlResolver resolver, Evidence evidence);

A tabela a seguir mostra os métodos obsoletos e novos para o método de Transform .The following table shows the obsolete and new methods for the Transform method. Novos métodos recebem um objeto de XmlResolver .The new methods take an XmlResolver object.

Métodos obsoletos de transformação do .NET Framework versão 1.0Obsolete .NET Framework version 1.0 Transform Methods Métodos de transformação da versão 1.1 do .NET Framework de substituiçãoReplacement .NET Framework version Transform 1.1 Methods
XmlReader transformação (entrada de XPathNavigator, os args de XsltArgumentList)XmlReader Transform(XPathNavigator input, XsltArgumentList args) XmlReader transformação (entrada de XPathNavigator, args de XsltArgumentList, o resolvedor de XmlResolver)XmlReader Transform(XPathNavigator input, XsltArgumentList args, XmlResolver resolver)
XmlReader transformação (entrada de IXPathNavigable, os args de XsltArgumentList)XmlReader Transform(IXPathNavigable input, XsltArgumentList args) XmlReader transformação (entrada de IXPathNavigable, args de XsltArgumentList, o resolvedor de XmlResolver)XmlReader Transform(IXPathNavigable input, XsltArgumentList args, XmlResolver resolver)
O vácuo transformação (entrada de XPathNavigator, args de XsltArgumentList, a saída de XmlWriter)Void Transform(XPathNavigator input, XsltArgumentList args, XmlWriter output) O vácuo transformação (entrada de XPathNavigator, args de XsltArgumentList, a saída de XmlWriter, o resolvedor de XmlResolver)Void Transform(XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
O vácuo transformação (entrada de IXPathNavigable, args de XsltArgumentList, a saída de XmlWriter)Void Transform(IXPathNavigable input, XsltArgumentList args, XmlWriter output) O vácuo transformação (entrada de IXpathNavigable, args de XsltArgumentList, a saída de XmlWriter, o resolvedor de XmlResolver)Void Transform(IXpathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
O vácuo transformação (entrada de XPathNavigator, args de XsltArgumentList, a saída de Textreader)Void Transform(XPathNavigator input, XsltArgumentList args, TextWriter output) O vácuo transformação (entrada de XPathNavigator, args de XsltArgumentList, a saída de Textreader, o resolvedor de XmlResolver)Void Transform(XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver)
O vácuo transformação (entrada de IXPathNavigable, args de XsltArgumentList, a saída de Textreader)Void Transform(IXPathNavigable input, XsltArgumentList args, TextWriter output) O vácuo transformação (entrada de IXPathNavigable, args de XsltArgumentList, a saída de Textreader, o resolvedor de XmlResolver)Void Transform(IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver)
O vácuo transformação (entrada de XPathNavigator, args de XsltArgumentList, a saída de fluxo)Void Transform(XPathNavigator input, XsltArgumentList args, Stream output) O vácuo transformação (entrada de XPathNavigator, args de XsltArgumentList, a saída de fluxo, o resolvedor de XmlResolver)Void Transform(XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)
O vácuo transformação (entrada de IXPathNavigable, args de XsltArgumentList, a saída de fluxo)Void Transform(IXPathNavigable input, XsltArgumentList args, Stream output) O vácuo transformação (entrada de IXPathNavigable, args de XsltArgumentList, a saída de fluxo, o resolvedor de XmlResolver)Void Transform(IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver)
O vácuo transformação (entrada de cadeia de caracteres, a saída de cadeia de caracteres);Void Transform(String input, String output); O vácuo transformação (entrada de cadeia de caracteres, a saída de cadeia de caracteres, resolvedor de XmlResolver);Void Transform(String input, String output, XmlResolver resolver);

A propriedade XslTransform.XmlResolver está obsoleta no .NET Framework versão 1.1.The XslTransform.XmlResolver property is obsolete in .NET Framework version 1.1. Em vez disso, use as novas sobrecargas Transform que usam um objeto XmlResolver.Instead, use the new Transform overloads which take an XmlResolver object.

Consulte tambémSee also