XslTransform 類別

定義

警告

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

使用可延伸樣式表語言轉換 (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
屬性

範例

下列範例會轉換指定的 XML 檔,並將結果輸出至主控台。

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

備註

注意

類別 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使用 方法來載入轉換的樣式表單。 這個方法有數個多載,而且可以使用 、 XPathNavigatorIXPathNavigable 或 URL 載入樣式表單 XmlReader ,以及檔案的位置。

  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.EvidenceLoad 方法,以提供辨識項。 否則,腳本元件具有完全信任。

半信任呼叫端: UnmanagedCode 編譯內嵌腳本需要許可權。 ControlEvidence需要許可權才能 Load 提供給 Evidence 方法。 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 項目內進行宣告。 下表顯示根據預設所支援的命名空間。

支援的命名空間 描述
System 系統類別。
System.Collection 集合類別。
System.Text 文字處理類別。
System.Xml 核心 XML 類別。
System.Xml.Xsl XSLT 類別。
System.Xml.XPath XML 路徑語言 (XPath) 類別。

腳本函式所定義的引數和傳回值必須是下列其中一個 World Wide Web Consortium (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、Single 或 Decimal,這些類型會強制為 Double,其對應至 W3C XPath 類型編號。

呼叫無法將引數結果轉換成其中一個必要類型的函式時,就會擲回例外狀況。

注意

msxsl:scriptmsxsl:node-list 是 類別所支援之命名空間中唯 urn:schemas-microsoft-com:xslt 一的 XslTransform 函式。

XslTransform 能夠利用 Common Language Runtime (CLR) 程式碼作為擴充機制。 這可藉由將類別的實例傳遞至 類別, XslTransform 並在 XSLT 樣式表單內呼叫其公用方法來完成。 使用 params 關鍵字定義的方法,允許傳遞未指定的參數數目,在此案例中無法正常運作。 如需詳細資訊,請參閱 參數

如需詳細資訊,請參閱 XSLT 轉換與 XslTransform 類別

建構函式

XslTransform()

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

屬性

XmlResolver
已過時。

呼叫 XmlResolver 方法時,設定用來解析外部資源的 Transform

方法

Equals(Object)

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

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
Load(IXPathNavigable)
已過時。

載入 IXPathNavigable 中包含的 XSLT 樣式表。

Load(IXPathNavigable, XmlResolver)
已過時。

載入 IXPathNavigable 中包含的 XSLT 樣式表。

Load(IXPathNavigable, XmlResolver, Evidence)

載入 IXPathNavigable 中包含的 XSLT 樣式表。 這個方法可讓您指定辨識項,限制樣式表的使用權限。

Load(String)

載入 URL 指定的 XSLT 樣式表。

Load(String, XmlResolver)

載入 URL 指定的 XSLT 樣式表。

Load(XmlReader)
已過時。

載入 XmlReader 中包含的 XSLT 樣式表。

Load(XmlReader, XmlResolver)
已過時。

載入 XmlReader 中包含的 XSLT 樣式表。

Load(XmlReader, XmlResolver, Evidence)

載入 XmlReader 中包含的 XSLT 樣式表。 這個方法可讓您指定辨識項,限制樣式表的使用權限。

Load(XPathNavigator)
已過時。

載入 XPathNavigator 中包含的 XSLT 樣式表。

Load(XPathNavigator, XmlResolver)
已過時。

載入 XPathNavigator 中包含的 XSLT 樣式表。

Load(XPathNavigator, XmlResolver, Evidence)

載入 XPathNavigator 中包含的 XSLT 樣式表。 這個方法可讓您指定辨識項,限制樣式表的使用權限。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

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

(繼承來源 Object)
Transform(IXPathNavigable, XsltArgumentList)
已過時。

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 XmlReader

Transform(IXPathNavigable, XsltArgumentList, Stream)
已過時。

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 Stream

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 Stream

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
已過時。

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 TextWriter

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 TextWriter

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 XmlReader

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
已過時。

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 XmlWriter

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

使用指定的 args 來轉換 IXPathNavigable 中的 XML 資料,並將結果輸出至 XmlWriter

Transform(String, String)
已過時。

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

Transform(String, String, XmlResolver)

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

Transform(XPathNavigator, XsltArgumentList)
已過時。

使用指定的 args 來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 XmlReader

Transform(XPathNavigator, XsltArgumentList, Stream)
已過時。

使用指定的 args 來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 Stream

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

使用指定的 args 來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 Stream

Transform(XPathNavigator, XsltArgumentList, TextWriter)
已過時。

使用指定的 args 來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 TextWriter

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

使用指定的 args 來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 TextWriter

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

使用指定的 args 來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 XmlReader

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
已過時。

使用指定的引數來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 XmlWriter

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

使用指定的引數來轉換 XPathNavigator 中的 XML 資料,並將結果輸出至 XmlWriter

適用於

執行緒安全性

XslTransform 物件僅適用于轉換作業的執行緒安全。 其他作業不保證是安全線程。 您必須確定在載入作業期間,物件上不會呼叫任何其他方法。