Dela via


Indata till XslCompiledTransform-klassen

Metoden Transform accepterar tre indatatyper för källdokumentet: ett objekt som implementerar IXPathNavigable gränssnittet, ett XmlReader objekt som läser källdokumentet eller en sträng-URI.

Kommentar

Klassen XslCompiledTransform bevarar tomt utrymme som standard. Detta är i enlighet med avsnitt 3.4 i W3C XSLT 1.0-rekommendationen.

IXPathNavigable-gränssnitt

Gränssnittet IXPathNavigable implementeras i klasserna XmlNode och XPathDocument . Dessa klasser representerar en minnesintern cache med XML-data.

  • Klassen XmlNode baseras på W3C Document Object Model (DOM) och innehåller redigeringsfunktioner.

  • Klassen XPathDocument är ett skrivskyddat datalager baserat på XPath-datamodellen. XPathDocument är den rekommenderade klassen för XSLT-bearbetning. Det ger snabbare prestanda jämfört med XmlNode klassen.

Kommentar

Transformeringar gäller för dokumentet som helhet. Med andra ord, om du skickar in en annan nod än dokumentrotnoden hindrar detta inte omvandlingsprocessen från att komma åt alla noder i det inlästa dokumentet. Om du vill transformera ett nodfragment måste du skapa ett objekt som bara innehåller nodfragmentet och skicka objektet till Transform -metoden. Mer information finns i Så här: Transformera ett nodfragment.

I följande exempel används XslCompiledTransform.Transform metoden för att transformera books.xml-filen till den books.html filen med formatmallen transform.xsl. Filerna books.xml och transform.xsl finns i det här avsnittet: Så här utför du en XSLT-transformering med hjälp av en sammansättning.

// 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)

XmlReader-objekt

Metoden Transform läses in från den aktuella noden av XmlReader genom alla dess underordnade. På så sätt kan du använda en del av ett dokument som kontextdokument. Transform När metoden har returnerats placeras den XmlReader på nästa nod efter slutet av kontextdokumentet. Om slutet av dokumentet har nåtts XmlReader placeras det i slutet av filen (EOF).

I följande exempel används XslCompiledTransform.Transform metoden för att transformera books.xml-filen till den books.html filen med formatmallen transform.xsl. Filerna books.xml och transform.xsl finns i det här avsnittet: Så här utför du en XSLT-transformering med hjälp av en sammansättning.

// 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)

Sträng-URI

Du kan också ange källdokumentets URI som XSLT-indata. En XmlResolver används för att lösa URI:n. Du kan ange vilken som XmlResolver ska användas genom att skicka den till Transform -metoden. Om en XmlResolver inte har angetts Transform använder metoden ett standardvärde XmlUrlResolver utan autentiseringsuppgifter.

I följande exempel används XslCompiledTransform.Transform metoden för att transformera books.xml-filen till den books.html filen med formatmallen transform.xsl. Filerna books.xml och transform.xsl finns i det här avsnittet: Så här utför du en XSLT-transformering med hjälp av en sammansättning.

// 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")

Mer information finns i Lösa externa resurser under XSLT-bearbetning.

Se även