XslTransform 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
警告
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 資料:
建立 XslTransform 物件。
Load使用 方法來載入轉換的樣式表單。 這個方法有數個多載,而且可以使用 、 XPathNavigator 、 IXPathNavigable 或 URL 載入樣式表單 XmlReader ,以及檔案的位置。
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 方法。 SecurityException如果呼叫端沒有必要的許可權,則會擲回 。 如需詳細資訊,請參閱 System.Security.Permissions.SecurityPermission 和 System.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:script
和 msxsl:node-list
是 類別所支援之命名空間中唯 urn:schemas-microsoft-com:xslt
一的 XslTransform 函式。
XslTransform 能夠利用 Common Language Runtime (CLR) 程式碼作為擴充機制。 這可藉由將類別的實例傳遞至 類別, XslTransform 並在 XSLT 樣式表單內呼叫其公用方法來完成。 使用 params
關鍵字定義的方法,允許傳遞未指定的參數數目,在此案例中無法正常運作。 如需詳細資訊,請參閱 參數 。
如需詳細資訊,請參閱 XSLT 轉換與 XslTransform 類別。
建構函式
XslTransform() |
初始化 XslTransform 類別的新執行個體。 |
屬性
XmlResolver |
已過時。
呼叫 XmlResolver 方法時,設定用來解析外部資源的 Transform。 |
方法
適用於
執行緒安全性
XslTransform 物件僅適用于轉換作業的執行緒安全。 其他作業不保證是安全線程。 您必須確定在載入作業期間,物件上不會呼叫任何其他方法。