XslCompiledTransform.Load 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
編譯樣式表。
多載
Load(IXPathNavigable, XsltSettings, XmlResolver) |
編譯包含在 IXPathNavigable 中的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT |
Load(String, XsltSettings, XmlResolver) |
載入並編譯 URI 所指定的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT |
Load(MethodInfo, Byte[], Type[]) |
從使用 |
Load(XmlReader, XsltSettings, XmlResolver) |
編譯包含在 XmlReader 中的 XSLT 樣式表。 會 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 還慢嗎? (英文)
注意
在偵錯模式中編譯的 XSLT 與在發行模式中編譯的 XSLT 之間有一些差異。 在某些情況下,偵測模式中編譯的樣式表在 Load 期間將不會擲回錯誤,但是稍後會在 Transform 期間失敗。 在發行模式中編譯的相同樣式表在 Load 期間將會失敗。 這類行為範例的情況是在將非節點集型別的變數指派給需要節點集的運算式時。
Load(IXPathNavigable, XsltSettings, XmlResolver)
編譯包含在 IXPathNavigable 中的 XSLT 樣式表。 會 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 包含存取樣式表單中找到之任何 import
或 include
專案所需的認證。
// 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
命名空間。
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);
public void Load (System.Reflection.MethodInfo executeMethod, byte[] queryData, Type[]? earlyBoundTypes);
public void Load (System.Reflection.MethodInfo executeMethod, byte[] queryData, Type[] earlyBoundTypes);
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
減少10%。
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
注意
此範例中使用的「轉換」元件是使用 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 中的 XSLT 樣式表。 會 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);
public void Load (Type compiledStylesheet);
member this.Load : Type -> unit
Public Sub Load (compiledStylesheet As Type)
參數
範例
下列範例示範如何從 XSLT 元件載入已編譯的樣式表單。 此範例假設 xsltc.exe 工具是用來使用名為 bookOrders 的類別建立名為 bookOrders.dll 的元件。
注意
編譯程式代碼時,您必須參考 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 會從元件載入編譯的樣式表單。
注意
您也必須在應用程式中包含 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
命名空間。
這個方法具有下列行為:
XmlUrlResolver沒有使用者認證的 會用來解析樣式表單 URI,並處理任何
xsl:import
或xsl:include
元素。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 設定。