Бөлісу құралы:


Разрешение внешних ресурсов во время обработки XSLT

Во время преобразования XSLT может возникнуть несколько случаев, когда потребуется обработать внешние ресурсы.

Использование класса XmlResolver

Класс XmlResolver используется для разрешения внешних ресурсов. В следующей таблице описывается, когда XmlResolver участвует в процессе обработки XSLT.

Задача XSLT Для чего используется XmlResolver
Скомпилируйте таблицу стилей. Определите универсальный идентификатор ресурса (URI) таблицы стилей.

-и-

Разрешите ссылки на универсальный код ресурса (URI) в любом элементе xsl:import или xsl:include.
Выполните таблицу стилей. Определите URI контекстного документа.

-и-

Разрешение ссылок на URI в любых функциях XSLT document() .

Методы Load и Transform включают перегрузки, которые принимают объект XmlResolver в качестве одного из аргументов. XmlResolver Если значение не указано, используется значение по умолчанию XmlUrlResolver без учетных данных.

В следующем списке описывается, когда может потребоваться указать XmlResolver объект:

  • Если процесс XSLT должен получить доступ к сетевому ресурсу, которому требуется проверка подлинности, можно использовать XmlResolver с необходимыми учетными данными.

  • Если вы хотите ограничить доступ к ресурсам, к которым может получить доступ процесс XSLT, можно использовать правильный XmlSecureResolver набор разрешений. Используйте класс XmlSecureResolver, если необходимо открыть ресурс, который вы не контролируете, или является ненадежным.

  • Если вы хотите настроить поведение, можно реализовать собственный XmlResolver класс и использовать его для разрешения ресурсов.

  • Если вы хотите убедиться, что внешние ресурсы не доступны, можно указать null для аргумента XmlResolver .

Пример

В следующем примере компилируется таблица стилей, которая хранится в сетевом ресурсе. Объект XmlUrlResolver задает учетные данные, необходимые для доступа к таблице стилей.

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred);
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName, SecurelyStoredPassword, Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

См. также