XslCompiledTransform.Load Метод

Определение

Компилирует таблицу стилей.

Перегрузки

Load(IXPathNavigable, XsltSettings, XmlResolver)

Компилирует таблицу стилей XSLT, содержащуюся в объекте IXPathNavigable. Метод XmlResolver разрешает любой элемент XSLT import или include, а параметры XSLT определяют разрешения для таблицы стилей.

Load(String, XsltSettings, XmlResolver)

Загружает и компилирует таблицу стилей XSLT, указанную по URI. Метод XmlResolver разрешает любой элемент XSLT import или include, а параметры XSLT определяют разрешения для таблицы стилей.

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

Загружает метод из таблицы стилей, скомпилированной с помощью средства XSLTC.exe.

Load(XmlReader, XsltSettings, XmlResolver)

Компилирует таблицу стилей XSLT, содержащуюся в объекте XmlReader. Метод XmlResolver разрешает любой элемент XSLT import или include, а параметры 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, скомпилированными в режиме отладки и режиме выпуска. В некоторых случаях таблицы стилей, скомпилированные в режиме отладки, не выдают ошибки во время вызова Load, но завершаются ошибкой позже, при вызове метода Transform. Та же таблица стилей, скомпилированная в режиме выпуска, завершается ошибкой во время вызова Load. Например, это может произойти в том случае, если переменная, не принадлежащая к типу набора узлов, присваивается выражению, где требуется набор узлов.

Load(IXPathNavigable, XsltSettings, XmlResolver)

Компилирует таблицу стилей XSLT, содержащуюся в объекте 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, внешние ресурсы не определяются.

Исключения

Значение stylesheetnull.

Таблица стилей содержит ошибку.

Примеры

В следующем примере загружается таблица стилей. Объект 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. Таблица стилей http://www.w3.org/1999/XSL/Transform XSLT должна использовать пространство имен.

См. также раздел

Применяется к

Load(String, XsltSettings, XmlResolver)

Загружает и компилирует таблицу стилей XSLT, указанную по URI. Метод 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 не удается разрешить.

-или- При обработке этого запроса возникла ошибка.

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. Таблица стилей http://www.w3.org/1999/XSL/Transform XSLT должна использовать пространство имен.

Для 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[]

Массив байтов сериализованных структур данных в поле staticData скомпилированной таблицы стилей, создаваемый методом CompileToType(XmlReader, XsltSettings, XmlResolver, Boolean, TypeBuilder, String).

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

Примечание

Сборка 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)

Компилирует таблицу стилей XSLT, содержащуюся в объекте 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)

Параметры

stylesheet
XmlReader

XmlReader, содержащий таблицу стилей.

settings
XsltSettings

Объект XsltSettings, который следует применить к таблице стилей. Если значение равно null, применяется параметр Default.

stylesheetResolver
XmlResolver

XmlResolver используется для разрешения любых таблиц стилей, на которые имеются ссылки в элементах XSLT import и include. Если его значение равно null, внешние ресурсы не определяются.

Исключения

Значение stylesheetnull.

Таблица стилей содержит ошибку.

Примеры

В следующем примере загружается таблица стилей и включена поддержка сценариев 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. Таблица стилей http://www.w3.org/1999/XSL/Transform XSLT должна использовать пространство имен.

Таблица стилей загружается из текущего узла всех дочерних 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
XmlReader

XmlReader, содержащий таблицу стилей.

Исключения

Значение stylesheetnull.

Таблица стилей содержит ошибку.

Примеры

В следующем примере загружается таблица стилей, содержащаяся в объекте 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. Таблица стилей http://www.w3.org/1999/XSL/Transform XSLT должна использовать пространство имен.

Таблица стилей загружается из текущего узла всех дочерних 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)

Параметры

compiledStylesheet
Type

Имя класса, содержащего скомпилированную таблицу стилей.

Как правило, это имя таблицы стилей. Если иное не указано, средство xsltc.exe использует имя таблицы стилей в именах классов и сборок.

Примеры

В следующем примере показано, как загрузить скомпилированную таблицу стилей из сборки XSLT. В примере предполагается, что средство xsltc.exe использовалось для создания сборки с именем bookOrders.dll с классом с именем bookOrders.

Примечание

При компиляции кода необходимо ссылаться на сборку 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 таблицы стилей.

Исключения

Значение stylesheetUrinull.

Таблица стилей содержит ошибку.

Не удается найти таблицу стилей.

Значение 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. Таблица стилей http://www.w3.org/1999/XSL/Transform XSLT должна использовать пространство имен.

Этот метод имеет следующее поведение:

  • Для 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, содержащий таблицу стилей.

Исключения

Значение stylesheetnull.

Таблица стилей содержит ошибку.

Примеры

В следующем примере загружается таблица стилей, содержащаяся в объекте 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. Таблица стилей http://www.w3.org/1999/XSL/Transform XSLT должна использовать пространство имен.

Этот метод имеет следующее поведение:

  • Для XmlUrlResolver обработки любых xsl:import элементов или xsl:include элементов используется без учетных данных пользователя.

  • Функция document() отключена.

  • Внедренные скрипты не поддерживаются.

Перегрузку Load можно использовать для указания XmlResolver необходимых учетных данных проверки подлинности или для указания различных параметров XSLT.

См. также раздел

Применяется к