XslTransform 類別

定義

警告

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

使用 Extensible Stylesheet Language for Transformations(XSLT)樣式表來轉換 XML 資料。

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
繼承
XslTransform
屬性

備註

備註

XslTransform 類別在 Microsoft .NET Framework 2.0 版本中已過時。 這個 XslCompiledTransform 類別是新的 XSLT 處理器。 如需詳細資訊,請參閱 使用 XslCompiledTransform 類別從 XslTransform 類別移轉

XslTransform 支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名空間 http://www.w3.org/1999/XSL/Transform

也可以利用該 XsltArgumentList 類別在樣式表中新增額外的參數。 此類別包含樣式表的輸入參數,擴充物件可從樣式表中呼叫。

要轉換 XML 資料:

  1. 建立 XslTransform 物件。

  2. 用這個 Load 方法載入變換的樣式表。 此方法有多種重載,並可載入帶有 XmlReader檔案位置的樣式表,包含 、 XPathNavigatorIXPathNavigable或 URL。

  3. 使用該 Transform 方法來轉換 XML 資料。 此方法有多種過載,能處理不同類型的輸入與輸出。 你也可以指定一個 XsltArgumentList 包含額外參數的參數,作為轉換時的輸入。

安全性考量

建立使用 XslTransform 類別的應用程式時,您應該注意下列事項及其影響:

  • 擴充物件預設為啟用。 XsltArgumentList如果包含擴充對象的對象傳遞至 Transform 方法,則會使用它們。

  • XSLT 樣式表可以包含對其他檔案和內嵌腳本區塊的引用。 惡意使用者可能會利用這些漏洞,提供資料或樣式表,執行後會使系統持續運算直到電腦資源耗盡。

  • 在混合信任環境中執行的 XSLT 應用程式可能會導致樣式表單詐騙。 例如,惡意使用者可以使用有害的樣式表單載入物件,並將它交給後續呼叫 Transform 方法並執行轉換的另一位使用者。

這些安全問題可以透過不接受 XslTransform 來自不受信任來源的物件、XSLT 樣式表或 XML 原始碼資料來緩解。

腳本支援

此類別支援使用 元素 msxsl:script 的嵌入式腳本。

在 .NET Framework 1.1 版本中,樣式表的證據決定了嵌入式腳本的權限。

  • 若樣式表是從統一資源識別碼(URI)載入,則該 URI 用於建立證據。 這些證據包括URI及其遺址和區域。

  • 如果樣式表是用其他來源載入,你可以透過傳遞 System.Security.Policy.Evidence 物件到 Load 方法來提供證據。 否則,腳本組裝完全信任。

半受信任呼叫者: UnmanagedCode 編譯內嵌腳本需取得許可。 ControlEvidence提供給Load方法需Evidence取得許可。 若呼叫者未取得必要權限,則會拋出 A SecurityException 。 如需詳細資訊,請參閱 System.Security.Permissions.SecurityPermissionSystem.Security.Permissions.SecurityPermissionFlag

msxsl:script 元素具備以下要求:

  • msxsl:script 元素屬於 urn:schemas-microsoft-com:xslt 命名空間。 樣式表必須包含命名空間宣告 xmlns:msxsl=urn:schemas-microsoft-com:xslt

  • msxsl:script 元素可以包含 language 一個屬性,指定要使用的腳本語言。 屬性的值 language 必須是以下其中之一:C#、CSharp、VB、VisualBasic、JScript 或 JavaScript。 由於語言名稱不區分大小寫,JavaScript 和 javascript 皆有效。 若 language 未指定屬性,則預設為 JScript。

  • msxsl:script 元素必須包含 implements-prefix 一個屬性,該屬性包含代表與腳本區塊相關聯命名空間的前綴。 此命名空間必須在樣式表中定義。 樣式表可以包含多個腳本區塊,並依命名空間分組。 你不能在同一命名空間內同時擁有多種語言的腳本區塊。 腳本區塊可以呼叫另一個腳本區塊中定義的函式,前提是這些腳本區塊位於相同的命名空間中。 腳本區塊的內容會依據腳本語言(由 language 屬性提供的)的規則與語法進行解析。 舉例來說,如果你有一個 C# 腳本區塊,註解會以字元作為前綴 // 。 註解必須是有效的 XML 內容。

備註

建議你在 CDATA 區段中包裝腳本區塊。

<msxsl:script implements-prefix='xy' language='C#'>  
 <![CDATA[  
 // Add code here.  
 ]]>
</msxsl:script>  

函式可以在 msxsl:script 元素內宣告。 下表顯示預設支援的命名空間。

支援命名空間 Description
System 系統類別。
System.Collection 收藏課程。
System.Text 文字處理課程。
System.Xml 核心 XML 類別。
System.Xml.Xsl XSLT 課程。
System.Xml.XPath XML 路徑語言(XPath)類別。

腳本函式所定義的參數與回傳值必須是以下列出的萬維網聯盟(W3C)類型之一。 下表詳細說明了 W3C 類型(XPath 或 XSLT)與對應的 .NET Framework 類別之間的映射。

W3C 類型 等效的 .NET 類別
弦(XPath) System.String
布林值(XPath) System.Boolean
編號(XPath) System.Double
結果樹片段(XSLT) System.Xml.XPath.XPathNavigator
節點集(XPath) System.Xml.XPath.XPathNodeIterator

若腳本函式使用以下數字類型之一:Int16、UInt16、Int32、UInt32、Int64、UInt64、單數或十進位,這些類型會被強制轉換為 Double,對應至 W3C XPath 的類型編號。

當呼叫的函式無法將參數結果轉換為所需型別時,會拋出例外。

備註

msxsl:scriptmsxsl:node-list 是該命名空間中唯一由類別支援XslTransform的函數urn:schemas-microsoft-com:xslt

XslTransform 具備利用通用語言執行時(CLR)程式碼作為擴充機制的能力。 這是透過將一個類別的實例傳給該 XslTransform 類別,並在 XSLT 樣式表中呼叫其公開方法來達成的。 以 params 關鍵字定義、允許傳遞未指定參數數量的方法在此情況下無法正常運作。 詳情請參見 參數

更多資訊請參閱 XSLT 轉換與 XslTransform 類別的相關說明。

建構函式

名稱 Description
XslTransform()
已淘汰.

初始化 XslTransform 類別的新執行個體。

屬性

名稱 Description
XmlResolver
已淘汰.

設定 使用 以 XmlResolver 在呼叫該方法時 Transform 解析外部資源。

方法

名稱 Description
Equals(Object)
已淘汰.

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()
已淘汰.

做為預設哈希函式。

(繼承來源 Object)
GetType()
已淘汰.

取得目前實例的 Type

(繼承來源 Object)
Load(IXPathNavigable, XmlResolver, Evidence)
已淘汰.

載入包含在 IXPathNavigable. 此方法允許你透過指定證據來限制樣式表的權限。

Load(IXPathNavigable, XmlResolver)
已淘汰.

載入包含在 IXPathNavigable.

Load(IXPathNavigable)
已淘汰.

載入包含在 IXPathNavigable.

Load(String, XmlResolver)
已淘汰.

載入由 URL 指定的 XSLT 樣式表。

Load(String)
已淘汰.

載入由 URL 指定的 XSLT 樣式表。

Load(XmlReader, XmlResolver, Evidence)
已淘汰.

載入包含在 XmlReader. 此方法允許你透過指定證據來限制樣式表的權限。

Load(XmlReader, XmlResolver)
已淘汰.

載入包含在 XmlReader.

Load(XmlReader)
已淘汰.

載入包含在 XmlReader.

Load(XPathNavigator, XmlResolver, Evidence)
已淘汰.

載入包含在 XPathNavigator. 此方法允許你透過指定證據來限制樣式表的權限。

Load(XPathNavigator, XmlResolver)
已淘汰.

載入包含在 XPathNavigator.

Load(XPathNavigator)
已淘汰.

載入包含在 XPathNavigator.

MemberwiseClone()
已淘汰.

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()
已淘汰.

傳回表示目前 物件的字串。

(繼承來源 Object)
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 Stream

Transform(IXPathNavigable, XsltArgumentList, Stream)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 Stream

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 TextWriter

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 TextWriter

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 XmlReader

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 XmlWriter

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 XmlWriter

Transform(IXPathNavigable, XsltArgumentList)
已淘汰.

利用指定的IXPathNavigable方式轉換 XML 資料args,並將結果輸出為 XmlReader

Transform(String, String, XmlResolver)
已淘汰.

將輸入檔案中的 XML 資料轉換,並將結果輸出為輸出檔案。

Transform(String, String)
已淘汰.

將輸入檔案中的 XML 資料轉換,並將結果輸出為輸出檔案。

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)
已淘汰.

利用指定的XPathNavigator方式轉換 XML 資料args,並將結果輸出為 Stream

Transform(XPathNavigator, XsltArgumentList, Stream)
已淘汰.

利用指定的XPathNavigator方式轉換 XML 資料args,並將結果輸出為 Stream

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)
已淘汰.

利用指定的XPathNavigator方式轉換 XML 資料args,並將結果輸出為 TextWriter

Transform(XPathNavigator, XsltArgumentList, TextWriter)
已淘汰.

利用指定的XPathNavigator方式轉換 XML 資料args,並將結果輸出為 TextWriter

Transform(XPathNavigator, XsltArgumentList, XmlResolver)
已淘汰.

利用指定的XPathNavigator方式轉換 XML 資料args,並將結果輸出為 XmlReader

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)
已淘汰.

利用指定的 args 轉換 XML 資料 XPathNavigator ,並將結果輸出為 XmlWriter

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
已淘汰.

利用指定的 args 轉換 XML 資料 XPathNavigator ,並將結果輸出為 XmlWriter

Transform(XPathNavigator, XsltArgumentList)
已淘汰.

利用指定的XPathNavigator方式轉換 XML 資料args,並將結果輸出為 XmlReader

適用於

執行緒安全性

XslTransform 物件僅在轉換操作時是執行緒安全的。 其他操作則不保證執行緒安全。 你必須確保在載入操作期間不會對物件呼叫其他方法。