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.

Anmärkning

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.

Anmärkning

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 laddar från den aktuella noden av XmlReader och alla dess barn. 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 nås är XmlReader placerat vid filslutet (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 XmlResolver som 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