Partilhar via


Entradas para a classe XslCompiledTransform

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

Observação

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

IXPathInterface navegável

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

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

  • A XPathDocument classe é um armazenamento de dados somente leitura baseado no modelo de dados XPath. XPathDocument é a classe recomendada para processamento XSLT. Proporciona um desempenho mais rápido quando comparado com a XmlNode classe.

Observação

As transformações aplicam-se ao documento como um todo. Em outras palavras, se você passar um nó diferente do nó raiz do documento, isso não impedirá que o processo de transformação acesse todos os nós no documento carregado. Para transformar um fragmento de nó, deve-se criar um objeto contendo apenas o fragmento de nó e passar esse objeto para o método Transform. Para obter mais informações, consulte Como: Transformar um Fragmento de Nó.

O exemplo a seguir usa o XslCompiledTransform.Transform método para transformar o arquivo books.xml no arquivo books.html usando a folha de estilos 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 XmlReader

O método Transform carrega a partir do nó atual do XmlReader através de todos os seus filhos. Isso permite que você use uma parte de um documento como o documento de contexto. Após o método Transform retornar, o XmlReader é posicionado no nó seguinte ao final do documento de contexto. Se o final do documento for atingido, o XmlReader é posicionado no final do arquivo (EOF).

O exemplo a seguir usa o XslCompiledTransform.Transform método para transformar o arquivo books.xml no arquivo books.html usando a folha de estilos 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 da cadeia de caracteres

Você também pode especificar o URI do documento de origem como sua entrada XSLT. Um XmlResolver é usado para resolver o URI. Pode especificar o XmlResolver a ser usado passando-o para o método Transform. Se um XmlResolver não for especificado, o Transform método usará um padrão XmlUrlResolver sem credenciais.

O exemplo a seguir usa o XslCompiledTransform.Transform método para transformar o arquivo books.xml no arquivo books.html usando a folha de estilos 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 obter mais informações, consulte Resolvendo recursos externos durante o processamento XSLT.

Ver também