XslCompiledTransform 類別的輸入

Transform 方法可接受來源文件的三種輸入型別:實作 IXPathNavigable 介面的物件、讀取來源文件的 XmlReader 物件,或是字串 URI。

注意

依預設,XslCompiledTransform 類別會保留泛空白字元。 這符合 W3C XSLT 1.0 版建議事項的 3.4 節 \(英文\)。

IXPathNavigable 介面

IXPathNavigable 介面是在 XmlNodeXPathDocument 類別中實作的。 這些類別代表 XML 資料的記憶體中快取。

  • XmlNode 類別是以 W3C 文件物件模型 (DOM) 為基礎,並包含編輯功能。

  • XPathDocument 類別是以 XPath 資料模型為基礎的唯讀資料存放區。 XPathDocument 是建議用於 XSLT 處理的類別。 與 XmlNode 類別相比,它可提供更高的效能。

注意

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立只包含節點片段的物件,並將該物件傳遞至 Transform 方法。 如需詳細資訊,請參閱如何:轉換節點片段

下列範例使用 XslCompiledTransform.Transform 方法,透過 transform.xsl 樣式表將 books.xml 檔案轉換為 books.html 檔案。 本主題中可找到 books.xml 和 transform.xsl 檔案:如何:使用組件執行 XSLT 轉換

// 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 物件

Transform 方法會從 XmlReader 的目前節點載入,並套用至其所有子系節點。 如此您就能夠利用文件中的某些部份做為內容文件。 傳回 Transform 方法後,XmlReader 便定位於內容文件結尾之後的下一節點。 如果到達文件結尾,則 XmlReader 會定位於檔案結尾 (EOF)。

下列範例使用 XslCompiledTransform.Transform 方法,透過 transform.xsl 樣式表將 books.xml 檔案轉換為 books.html 檔案。 本主題中可找到 books.xml 和 transform.xsl 檔案:如何:使用組件執行 XSLT 轉換

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

您也可以將來源文件 URI 指定為 XSLT 輸入。 XmlResolver 可用於解析 URI。 您可以藉由將要使用的 XmlResolver 傳遞給 Transform 方法,來對其進行指定。 若未指定 XmlResolver,則 Transform 方法會使用不含認證的預設 XmlUrlResolver

下列範例使用 XslCompiledTransform.Transform 方法,透過 transform.xsl 樣式表將 books.xml 檔案轉換為 books.html 檔案。 本主題中可找到 books.xml 和 transform.xsl 檔案:如何:使用組件執行 XSLT 轉換

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

如需詳細資訊,請參閱 XSLT 處理期間解析外部資源

另請參閱