Compartilhar via


Entradas para a classe de XslCompiledTransform

O método de Transform aceita três tipos de entrada para o documento de origem: um objeto que implementa a interface de IXPathNavigable , um objeto de XmlReader que lê o documento de origem, ou URI de uma cadeia de caracteres.

Observação

A classe de XslCompiledTransform preserva o espaço em branco por padrão. Isso está de acordo com a seção 3.4 da recomendação do XSLT 1.0 do W3C.

Interface de IXPathNavigable

A interface de IXPathNavigable é implementada nas classes de XmlNode e de XPathDocument . Essas classes representam um cache de memória de dados XML.

  • A classe de XmlNode é baseado no W3C Document Object Model (DOM) e inclui recursos de edição.

  • A classe de XPathDocument é um repositório de dados somente leitura com base no modelo de dados XPath. XPathDocument é a classe recomendada para processar XSLT. Fornece um desempenho mais rápido quando comparada a XmlNode a classe.

Observação

As transformações são aplicadas ao documento no dataset. 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. Para transformar um fragmento de nó, você deve criar um objeto que contém apenas o fragmento de nó, e passa esse objeto para o método de Transform . Para saber mais, confira Como transformar um fragmento de nó.

O exemplo a seguir usa o método de XslCompiledTransform.Transform para transformar o arquivo de books.xml para o arquivo de books.html usando a folha de estilos de transform.xsl. Os arquivos books.xml e transform.xsl podem ser encontrados neste tópico: Como executar uma transformação XSLT usando um assembly.

// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);
' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)

Objeto de XmlReader

As tanto o método de Transform do nó atual de XmlReader através de todos seus filhos. Isso permite que você use uma parte de um documento como o documento de contexto. Depois que o método de Transform retorna, XmlReader está localizado no nó seguir após ao final do documento de contexto. Se o final do documento é alcançada, XmlReader está localizado no final do arquivo (EOF).

O exemplo a seguir usa o método de XslCompiledTransform.Transform para transformar o arquivo de books.xml para o arquivo de books.html usando a folha de estilos de transform.xsl. Os arquivos books.xml e transform.xsl podem ser encontrados neste tópico: Como executar uma transformação XSLT usando um assembly.

// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);
'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)

URI de cadeia de caracteres

Você também pode especificar o URI de documento de origem como sua entrada XSLT. XmlResolver é usado para resolver URI. Você pode especificar XmlResolver para usar passando para o método de Transform . Se XmlResolver não for especificado, o método de Transform usa XmlUrlResolver padrão sem credenciais.

O exemplo a seguir usa o método de XslCompiledTransform.Transform para transformar o arquivo de books.xml para o arquivo de books.html usando a folha de estilos de transform.xsl. Os arquivos books.xml e transform.xsl podem ser encontrados neste tópico: Como executar uma transformação XSLT usando um assembly.

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");
' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")

Para saber mais, confira Resolvendo recursos externos durante o processamento de XSLT.

Confira também