XslCompiledTransform.Load 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
編譯樣式表。
多載
| 名稱 | Description |
|---|---|
| Load(IXPathNavigable, XsltSettings, XmlResolver) |
編譯包含於 IXPathNavigable. 它 XmlResolver 解析任何 XSLT |
| Load(String, XsltSettings, XmlResolver) |
載入並編譯 URI 指定的 XSLT 樣式表。 它 XmlResolver 解析任何 XSLT |
| Load(MethodInfo, Byte[], Type[]) |
從使用 |
| Load(XmlReader, XsltSettings, XmlResolver) |
編譯包含於 XmlReader. 它 XmlResolver 解析任何 XSLT |
| Load(XmlReader) |
編譯包含於 XmlReader. |
| Load(Type) |
載入使用 XSLT 編譯器(xsltc.exe)建立的編譯樣式表。 |
| Load(String) |
載入並編譯位於指定 URI 的樣式表。 |
| Load(IXPathNavigable) |
編譯物件中包含的 IXPathNavigable 樣式表。 |
備註
雖然 XslCompiledTransform 類別的整體效能優於 XslTransform 類別,但在首次進行轉換呼叫時,Load 類別的 XslCompiledTransform 方法執行速度可能比 Load 類別的 XslTransform 方法慢。 這是因為必須先編譯 XSLT 檔案,才能載入它。 如需詳細資訊,請參閱下列部落格文章: XslCompiledTransform 比 XslTransform 慢?
Note
在除錯模式下編譯的 XSLT 與在發佈模式下編譯的 XSLT 之間存在差異。 在某些情況下,在除錯模式下編譯的樣式表在 時不會丟出錯誤 Load,但在 時則會失敗 Transform。 同一份樣式表在 Release 模式下編譯時會失敗。Load 此類行為的例子是當一個非節點集合型態的變數被指派到需要節點集合的表達式時。
Load(IXPathNavigable, XsltSettings, XmlResolver)
編譯包含於 IXPathNavigable. 它 XmlResolver 解析任何 XSLT import 或 include 元素,而 XSLT 設定則決定樣式表的權限。
public:
void Load(System::Xml::XPath::IXPathNavigable ^ stylesheet, System::Xml::Xsl::XsltSettings ^ settings, System::Xml::XmlResolver ^ stylesheetResolver);
public void Load(System.Xml.XPath.IXPathNavigable stylesheet, System.Xml.Xsl.XsltSettings? settings, System.Xml.XmlResolver? stylesheetResolver);
public void Load(System.Xml.XPath.IXPathNavigable stylesheet, System.Xml.Xsl.XsltSettings settings, System.Xml.XmlResolver stylesheetResolver);
member this.Load : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltSettings * System.Xml.XmlResolver -> unit
Public Sub Load (stylesheet As IXPathNavigable, settings As XsltSettings, stylesheetResolver As XmlResolver)
參數
- stylesheet
- IXPathNavigable
一個實作介面的 IXPathNavigable 物件。 在 Microsoft .NET Framework 中,這可以是 XmlNode (通常是 XmlDocument),或 XPathDocument 是包含樣式表的
- settings
- XsltSettings
將 套 XsltSettings 用到 樣式表。 如果是 null, Default 則該設定被套用。
- stylesheetResolver
- XmlResolver
它們 XmlResolver 用來解析 XSLT import 中引用的任何樣式表和 include 元素。 如果是 null,外部資源則未被解決。
例外狀況
stylesheet 值是 null。
樣式表中有一個錯誤。
範例
以下範例載入一個樣式表。 物件XmlSecureResolver包含存取樣式表中任何importinclude元素所需的憑證。
// Create a resolver and specify the necessary credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
System.Net.NetworkCredential myCred;
myCred = new System.Net.NetworkCredential(UserName,SecurelyStoredPassword,Domain);
resolver.Credentials = myCred;
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(new XPathDocument("http://serverName/data/xsl/sort.xsl"), XsltSettings.Default, resolver);
' Create a resolver and specify the necessary credentials.
Dim resolver As New XmlUrlResolver()
Dim myCred As System.Net.NetworkCredential
myCred = New System.Net.NetworkCredential(UserName, SecurelyStoredPassword, Domain)
resolver.Credentials = myCred
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load(New XPathDocument("http://serverName/data/xsl/sort.xsl"), XsltSettings.Default, resolver)
備註
此 XslCompiledTransform 類別支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名 http://www.w3.org/1999/XSL/Transform 空間。
另請參閱
適用於
Load(String, XsltSettings, XmlResolver)
載入並編譯 URI 指定的 XSLT 樣式表。 它 XmlResolver 解析任何 XSLT import 或 include 元素,而 XSLT 設定則決定樣式表的權限。
public:
void Load(System::String ^ stylesheetUri, System::Xml::Xsl::XsltSettings ^ settings, System::Xml::XmlResolver ^ stylesheetResolver);
public void Load(string stylesheetUri, System.Xml.Xsl.XsltSettings? settings, System.Xml.XmlResolver? stylesheetResolver);
public void Load(string stylesheetUri, System.Xml.Xsl.XsltSettings settings, System.Xml.XmlResolver stylesheetResolver);
member this.Load : string * System.Xml.Xsl.XsltSettings * System.Xml.XmlResolver -> unit
Public Sub Load (stylesheetUri As String, settings As XsltSettings, stylesheetResolver As XmlResolver)
參數
- stylesheetUri
- String
樣式表的 URI。
- settings
- XsltSettings
將 套 XsltSettings 用到 樣式表。 如果是 null, Default 則該設定被套用。
- stylesheetResolver
- XmlResolver
它們 XmlResolver 用來解析樣式表 URI 以及 XSLT import 和 include 元素中引用的任何樣式表。
例外狀況
或stylesheetUri值stylesheetResolver為 null。
樣式表中有一個錯誤。
找不到樣式表。
該 stylesheetUri 值包含無法找到的檔名或目錄。
stylesheetUri 不是有效的 URI。
在樣式表載入時出現了解析錯誤。
範例
以下範例載入儲存在網路資源上的樣式表。 XmlSecureResolver物件會指定存取樣式表單所需的認證。
// Create the XslCompiledTransform object.
XslCompiledTransform xslt = new XslCompiledTransform();
// Create a resolver and set the credentials to use.
XmlSecureResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), "http://serverName/data/");
resolver.Credentials = CredentialCache.DefaultCredentials;
// Load the style sheet.
xslt.Load("http://serverName/data/xsl/sort.xsl", null, resolver);
' Create the XslCompiledTransform object.
Dim xslt As New XslCompiledTransform()
' Create a resolver and set the credentials to use.
Dim resolver As New XmlSecureResolver(New XmlUrlResolver(), "http://serverName/data/")
resolver.Credentials = CredentialCache.DefaultCredentials
' Load the style sheet.
xslt.Load("http://serverName/data/xsl/sort.xsl", Nothing, resolver)
備註
此 XslCompiledTransform 類別支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名 http://www.w3.org/1999/XSL/Transform 空間。
用預設設定的 A XmlReader 鍵來載入樣式表。 DTD 處理在 XmlReader. 如果你需要 DTD 處理,請建立啟用此功能的 , XmlReader 然後傳給該 Load 方法。
另請參閱
適用於
Load(MethodInfo, Byte[], Type[])
從使用 XSLTC.exe 該工具編譯的樣式表載入方法。
public:
void Load(System::Reflection::MethodInfo ^ executeMethod, cli::array <System::Byte> ^ queryData, cli::array <Type ^> ^ earlyBoundTypes);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This method will call into constructors of the earlyBoundTypes array which cannot be statically analyzed.")]
public void Load(System.Reflection.MethodInfo executeMethod, byte[] queryData, Type[]? earlyBoundTypes);
public void Load(System.Reflection.MethodInfo executeMethod, byte[] queryData, Type[]? earlyBoundTypes);
public void Load(System.Reflection.MethodInfo executeMethod, byte[] queryData, Type[] earlyBoundTypes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This method will call into constructors of the earlyBoundTypes array which cannot be statically analyzed.")>]
member this.Load : System.Reflection.MethodInfo * byte[] * Type[] -> unit
member this.Load : System.Reflection.MethodInfo * byte[] * Type[] -> unit
Public Sub Load (executeMethod As MethodInfo, queryData As Byte(), earlyBoundTypes As Type())
參數
- executeMethod
- MethodInfo
一個 MethodInfo 代表編譯器產生 execute 的編譯樣式表方法的物件。
- queryData
- Byte[]
一個由該方法產生CompileToType(XmlReader, XsltSettings, XmlResolver, Boolean, TypeBuilder, String)的序列化資料結構欄位中的staticData位元組陣列。
- earlyBoundTypes
- Type[]
一個儲存在編譯後樣式表中由編譯器產生 ebTypes 欄位的型別陣列。
- 屬性
範例
以下程式碼範例使用 來 Load 載入已編譯的樣式表。 轉換會使元素的價值 Price 降低百分之十。
using System;
using System.IO;
using System.Reflection;
using System.Xml;
using System.Xml.Xsl;
class Example
{
static void Main()
{
// Load a stylesheet compiled using the XSLTC.EXE utility
Type compiledStylesheet = Assembly.Load("Transform").GetType("Transform");
// Extract private members from the compiled stylesheet
BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Static;
MethodInfo executeMethod = compiledStylesheet.GetMethod("Execute", bindingFlags);
object staticData = compiledStylesheet.GetField("staticData", bindingFlags).GetValue(null);
object earlyBoundTypes = compiledStylesheet.GetField("ebTypes", bindingFlags).GetValue(null);
// Load into XslCompiledTransform
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(executeMethod, (byte[])staticData, (Type[])earlyBoundTypes);
// Run the transformation
xslt.Transform(XmlReader.Create(new StringReader("<Root><Price>9.50</Price></Root>")), (XsltArgumentList)null, Console.Out);
}
}
Imports System.IO
Imports System.Reflection
Imports System.Xml
Imports System.Xml.Xsl
Module Module1
Sub Main()
' Load a stylesheet compiled using the XSLTC.EXE utility
Dim compiledStylesheet As Type = [Assembly].Load("Transform").GetType("Transform")
' Extract private members from the compiled stylesheet
Dim bindingFlags As BindingFlags = bindingFlags.NonPublic Or bindingFlags.Static
Dim executeMethod As MethodInfo = compiledStylesheet.GetMethod("Execute", bindingFlags)
Dim staticData As Object = compiledStylesheet.GetField("staticData", bindingFlags).GetValue(Nothing)
Dim earlyBoundTypes As Object = compiledStylesheet.GetField("ebTypes", bindingFlags).GetValue(Nothing)
' Load into XslCompiledTransform
Dim xslt As New XslCompiledTransform()
xslt.Load(executeMethod, CType(staticData, Byte()), CType(earlyBoundTypes, Type()))
' Run the transformation
xslt.Transform(XmlReader.Create(New StringReader("<Root><Price>9.50</Price></Root>")), CType(Nothing, XsltArgumentList), Console.Out)
End Sub
End Module
Note
本範例中使用的「Transform」組件是使用 xsltc.exe 工具組合。 欲了解使用此命令列工具的詳細資訊,請參閱 「如何:使用組合語言執行 XSLT 轉換」。
前一個程式碼範例使用了以下轉換:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
public double modifyPrice(double price){
price*=0.9;
return price;
}
]]>
</msxsl:script>
<xsl:template match="Root">
<Root xmlns="">
<Price><xsl:value-of select="user:modifyPrice(Price)"/></Price>
</Root>
</xsl:template>
</xsl:stylesheet>
備註
此方法接受已編譯的樣式表,形式包括 MethodInfo 物件、位元組陣列及型別陣列。 DynamicMethod 物件可用於允許在物件被回收時 XslCompiledTransform 丟棄編譯後的樣式表方法。
適用於
Load(XmlReader, XsltSettings, XmlResolver)
編譯包含於 XmlReader. 它 XmlResolver 解析任何 XSLT import 或 include 元素,而 XSLT 設定則決定樣式表的權限。
public:
void Load(System::Xml::XmlReader ^ stylesheet, System::Xml::Xsl::XsltSettings ^ settings, System::Xml::XmlResolver ^ stylesheetResolver);
public void Load(System.Xml.XmlReader stylesheet, System.Xml.Xsl.XsltSettings? settings, System.Xml.XmlResolver? stylesheetResolver);
public void Load(System.Xml.XmlReader stylesheet, System.Xml.Xsl.XsltSettings settings, System.Xml.XmlResolver stylesheetResolver);
member this.Load : System.Xml.XmlReader * System.Xml.Xsl.XsltSettings * System.Xml.XmlResolver -> unit
Public Sub Load (stylesheet As XmlReader, settings As XsltSettings, stylesheetResolver As XmlResolver)
參數
- settings
- XsltSettings
將 套 XsltSettings 用到 樣式表。 如果是 null, Default 則該設定被套用。
- stylesheetResolver
- XmlResolver
它們 XmlResolver 用來解析 XSLT import 中引用的任何樣式表和 include 元素。 如果是 null,外部資源則未被解決。
例外狀況
stylesheet 值是 null。
樣式表中有一個錯誤。
範例
以下範例載入樣式表並啟用對 XSLT 腳本的支援。
// Create the XslCompiledTransform object.
XslCompiledTransform xslt = new XslCompiledTransform();
// Create a resolver and set the credentials to use.
XmlSecureResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), "http://serverName/data/");
resolver.Credentials = CredentialCache.DefaultCredentials;
XmlReader reader = XmlReader.Create("http://serverName/data/xsl/sort.xsl");
// Create the XsltSettings object with script enabled.
XsltSettings settings = new XsltSettings(false,true);
// Load the style sheet.
xslt.Load(reader, settings, resolver);
' Create the XslCompiledTransform object.
Dim xslt As New XslCompiledTransform()
' Create a resolver and set the credentials to use.
Dim resolver As New XmlSecureResolver(New XmlUrlResolver(), "http://serverName/data/")
resolver.Credentials = CredentialCache.DefaultCredentials
Dim reader As XmlReader = XmlReader.Create("http://serverName/data/xsl/sort.xsl")
' Create the XsltSettings object with script enabled.
Dim settings As New XsltSettings(False, True)
' Load the style sheet.
xslt.Load(reader, settings, resolver)
備註
此 XslCompiledTransform 類別支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名 http://www.w3.org/1999/XSL/Transform 空間。
樣式表會從 的 XmlReader 當前節點載入,經過所有子節點。 這讓你能使用文件的一部分作為樣式表。 方法完成後 Load ,將 XmlReader 置於樣式表結束後的下一個節點。 如果到達文件的結尾,則指標 XmlReader 會被定位到檔尾(EOF)。
另請參閱
適用於
Load(XmlReader)
編譯包含於 XmlReader.
public:
void Load(System::Xml::XmlReader ^ stylesheet);
public void Load(System.Xml.XmlReader stylesheet);
member this.Load : System.Xml.XmlReader -> unit
Public Sub Load (stylesheet As XmlReader)
參數
例外狀況
stylesheet 值是 null。
樣式表中有一個錯誤。
範例
以下範例載入包含在物件 XmlReader 中的樣式表。
// Create a reader that contains the style sheet.
XmlReader reader = XmlReader.Create("titles.xsl");
reader.ReadToDescendant("xsl:stylesheet");
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(reader);
' Create a reader that contains the style sheet.
Dim reader As XmlReader = XmlReader.Create("titles.xsl")
reader.ReadToDescendant("xsl:stylesheet")
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load(reader)
備註
此 XslCompiledTransform 類別支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名 http://www.w3.org/1999/XSL/Transform 空間。
樣式表會從 的 XmlReader 當前節點載入,經過所有子節點。 這讓你能使用文件的一部分作為樣式表。 方法完成後 Load ,將 XmlReader 置於樣式表結束後的下一個節點。 如果到達文件的結尾,則指標 XmlReader 會被定位到檔尾(EOF)。
此方法具有以下行為:
XmlUrlResolver一個沒有使用者憑證的裝置用於處理任何
xsl:import或xsl:include元素。這個
document()功能是被停用的。不支援內嵌腳本。
你可以用 Load(XmlReader, XsltSettings, XmlResolver) 超載功能來指定 XmlResolver 一個擁有必要的認證憑證,或是設定不同的 XSLT 設定。
另請參閱
適用於
Load(Type)
載入使用 XSLT 編譯器(xsltc.exe)建立的編譯樣式表。
public:
void Load(Type ^ compiledStylesheet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This method will get fields and types from the assembly of the passed in compiledStylesheet and call their constructors which cannot be statically analyzed")]
public void Load(Type compiledStylesheet);
public void Load(Type compiledStylesheet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("This method will get fields and types from the assembly of the passed in compiledStylesheet and call their constructors which cannot be statically analyzed")>]
member this.Load : Type -> unit
member this.Load : Type -> unit
Public Sub Load (compiledStylesheet As Type)
參數
- 屬性
範例
以下範例說明如何從 XSLT 組合語言載入編譯後的樣式表。 範例假設 xsltc.exe 工具被用來建立一個名為 bookOrders.dll 的組合,並有一個名為 bookOrders 的類別。
Note
編譯程式碼時必須參考 XSLT 組合語言。 例如: csc /r:system.dll;system.xml.dll;bookOrders.dll myCode.cs 。
// Load the type of the class.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(typeof(bookOrders));
備註
xsltc.exe 工具用於編譯樣式表並從樣式表產生組譯。 此 Load 方法會從組合語言載入編譯後的樣式表。
Note
你也必須在申請中附上 XSLT 組件作為參考資料。
另請參閱
適用於
Load(String)
載入並編譯位於指定 URI 的樣式表。
public:
void Load(System::String ^ stylesheetUri);
public void Load(string stylesheetUri);
member this.Load : string -> unit
Public Sub Load (stylesheetUri As String)
參數
- stylesheetUri
- String
樣式表的 URI。
例外狀況
stylesheetUri 值是 null。
樣式表中有一個錯誤。
找不到樣式表。
該 stylesheetUri 值包含無法找到的檔名或目錄。
stylesheetUri 不是有效的 URI。
在樣式表載入時出現了解析錯誤。
範例
以下範例執行一個轉換並輸出到檔案。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");
// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")
備註
此 XslCompiledTransform 類別支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名 http://www.w3.org/1999/XSL/Transform 空間。
此方法具有以下行為:
使用 A XmlUrlResolver 無使用者憑證來解析樣式表 URI,並處理任何
xsl:import或xsl:include元素。用預設設定的 A XmlReader 鍵來載入樣式表。 DTD 處理在 XmlReader. 如果你需要 DTD 處理,請建立啟用此功能的 , XmlReader 然後傳給該 Load 方法。
這個
document()功能是被停用的。不支援內嵌腳本。
你可以用 Load(String, XsltSettings, XmlResolver) 超載功能來指定 XmlResolver 一個擁有必要的認證憑證,或是設定不同的 XSLT 設定。
另請參閱
適用於
Load(IXPathNavigable)
編譯物件中包含的 IXPathNavigable 樣式表。
public:
void Load(System::Xml::XPath::IXPathNavigable ^ stylesheet);
public void Load(System.Xml.XPath.IXPathNavigable stylesheet);
member this.Load : System.Xml.XPath.IXPathNavigable -> unit
Public Sub Load (stylesheet As IXPathNavigable)
參數
- stylesheet
- IXPathNavigable
一個實作介面的 IXPathNavigable 物件。 在 Microsoft .NET Framework 中,這可以是 XmlNode (通常是 XmlDocument),或 XPathDocument 是包含樣式表的
例外狀況
stylesheet 值是 null。
樣式表中有一個錯誤。
範例
以下範例載入包含在物件 XPathDocument 中的樣式表。
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(new XPathDocument("http://serverName/data/xsl/sort.xsl"));
Dim xslt As New XslCompiledTransform()
xslt.Load(New XPathDocument("http://serverName/data/xsl/sort.xsl"))
備註
此 XslCompiledTransform 類別支援 XSLT 1.0 語法。 XSLT 樣式表必須使用命名 http://www.w3.org/1999/XSL/Transform 空間。
此方法具有以下行為:
XmlUrlResolver一個沒有使用者憑證的裝置用於處理任何
xsl:import或xsl:include元素。這個
document()功能是被停用的。不支援內嵌腳本。
你可以用 Load 超載功能來指定 XmlResolver 一個擁有必要的認證憑證,或是設定不同的 XSLT 設定。