XslCompiledTransform.Load 方法

定義

編譯樣式表。

多載

Load(IXPathNavigable, XsltSettings, XmlResolver)

編譯包含在 IXPathNavigable 中的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT importinclude 專案,而 XSLT 設定會決定樣式表單的許可權。

Load(String, XsltSettings, XmlResolver)

載入並編譯 URI 所指定的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT importinclude 專案,而 XSLT 設定會決定樣式表單的許可權。

Load(MethodInfo, Byte[], Type[])

從使用 XSLTC.exe 公用程式編譯的樣式表中載入方法。

Load(XmlReader, XsltSettings, XmlResolver)

編譯包含在 XmlReader 中的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT importinclude 專案,而 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)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

編譯包含在 IXPathNavigable 中的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT importinclude 專案,而 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 importinclude 元素中所參考的任何樣式表單。 如果這個值是 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)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

載入並編譯 URI 所指定的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT importinclude 專案,而 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 importinclude 元素中參考的任何樣式表單。

例外狀況

stylesheetUristylesheetResolver 的值為 null

此樣式表包含錯誤。

找不到樣式表。

stylesheetUri 值包含找不到的檔案名稱或目錄。

無法保留 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[])

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

從使用 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)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

編譯包含在 XmlReader 中的 XSLT 樣式表。 會 XmlResolver 解析任何 XSLT importinclude 專案,而 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)

參數

stylesheet
XmlReader

包含樣式表的 XmlReader

settings
XsltSettings

套用至樣式表的 XsltSettings。 如果這是 null,則會套用 Default 設定。

stylesheetResolver
XmlResolver

XmlResolver 用來解析 XSLT importinclude 元素中所參考的任何樣式表單。 如果這個值是 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)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

編譯包含在 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
XmlReader

包含樣式表的 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:importxsl:include 專案。

  • document() 式已停用。

  • 不支援內嵌腳本。

您可以使用 多 Load(XmlReader, XsltSettings, XmlResolver) 載來指定 XmlResolver 具有必要驗證認證的 ,或指定不同的 XSLT 設定。

另請參閱

適用於

Load(Type)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

載入已編譯的樣式表,此樣式表是使用 XSLT 編譯器 (xsltc.exe)所建立的。

public:
 void Load(Type ^ compiledStylesheet);
public void Load (Type compiledStylesheet);
member this.Load : Type -> unit
Public Sub Load (compiledStylesheet As Type)

參數

compiledStylesheet
Type

包含已編譯樣式表的類別名稱。

這通常是樣式表名稱。 除非另有指定,否則 xsltc.exe 工具會將樣式表名稱使用於類別和組件名稱。

範例

下列範例示範如何從 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)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

載入並編譯位於指定之 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 值。

-或-

處理這個要求時發生錯誤。

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:importxsl:include 專案。

  • XmlReader具有預設設定的 用來載入樣式表單。 DTD 處理在 上 XmlReader 已停用。 如果您需要 DTD 處理,請建立 XmlReader 已啟用此功能的 ,並將它傳遞至 Load 方法。

  • document() 式已停用。

  • 不支援內嵌腳本。

您可以使用 多 Load(String, XsltSettings, XmlResolver) 載來指定 XmlResolver 具有必要驗證認證的 ,或指定不同的 XSLT 設定。

另請參閱

適用於

Load(IXPathNavigable)

Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs
Source:
XslCompiledTransform.cs

編譯包含在 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:importxsl:include 專案。

  • document() 式已停用。

  • 不支援內嵌腳本。

您可以使用 多 Load 載來指定 XmlResolver 具有必要驗證認證的 ,或指定不同的 XSLT 設定。

另請參閱

適用於