Condividi tramite


Input alla classe XslCompiledTransform

Il metodo Transform accetta tre tipi di input per il documento di origine: un oggetto che implementa l'interfaccia IXPathNavigable, un oggetto XmlReader che legge il documento di origine o un URI della stringa.

Nota

Per impostazione predefinita, la classe XslCompiledTransform conserva gli spazi vuoti in conformità alla sezione 3.4 della raccomandazione W3C relativa a XSLT 1.0.

Interfaccia IXPathNavigable

L'interfaccia IXPathNavigable è implementata nelle classi XmlNode e XPathDocument. Queste classi rappresentano una cache di dati XML in memoria.

  • La classe XmlNode è basata sul modello DOM (Document Object Model) W3C e include funzionalità di modifica.

  • La classe XPathDocument è un archivio dati di sola lettura basato sul modello dati XPath. Si consiglia di usare la classe XPathDocument per l'elaborazione di XSLT, in quanto fornisce prestazioni più veloci rispetto alla classe XmlNode.

Nota

Le trasformazioni si applicano all'intero documento. In altre parole, se viene passato un nodo diverso dal nodo radice del documento, il processo di trasformazione accederà comunque a tutti i nodi nel documento caricato. Per trasformare un frammento di nodo, è necessario creare un oggetto contenente solo il frammento di nodo e passare tale oggetto al metodo Transform. Per altre informazioni, vedere Procedura: trasformare un frammento di nodo.

Nell'esempio seguente viene usato il metodo XslCompiledTransform.Transform per trasformare il file books.xml nel file books.html mediante il foglio di stile transform.xsl. I file books.xml e transform.xsl sono disponibili nell'argomento: Procedura: eseguire una trasformazione XSLT utilizzando un 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)

Oggetto XmlReader

Il metodo Transform consente di caricare il nodo corrente del tipo XmlReader tramite i relativi elementi figlio. In tal modo è possibile usare una parte di un documento come documento di contesto. Dopo la restituzione del metodo Transform, il tipo XmlReader viene posizionato sul nodo successivo dopo la fine del documento di contesto. Se viene raggiunta la fine del documento, l'oggetto XmlReader viene posizionato alla fine del file (EOF).

Nell'esempio seguente viene usato il metodo XslCompiledTransform.Transform per trasformare il file books.xml nel file books.html mediante il foglio di stile transform.xsl. I file books.xml e transform.xsl sono disponibili nell'argomento: Procedura: eseguire una trasformazione XSLT utilizzando un 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 della stringa

È inoltre possibile specificare l'URI del documento di origine come input di XSLT. L'URI verrà risolto da un tipo XmlResolver. È possibile specificare il tipo XmlResolver da usare passandolo al metodo Transform. Se non viene specificato alcun oggetto XmlResolver, il metodo Transform utilizzerà un oggetto XmlUrlResolver predefinito senza credenziali.

Nell'esempio seguente viene usato il metodo XslCompiledTransform.Transform per trasformare il file books.xml nel file books.html mediante il foglio di stile transform.xsl. I file books.xml e transform.xsl sono disponibili nell'argomento: Procedura: eseguire una trasformazione XSLT utilizzando un 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")

Per altre informazioni, vedere Risoluzione delle risorse esterne durante l'elaborazione XSLT.

Vedi anche