Поделиться через


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

Обновлен: November 2007

Во время 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.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("https://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("https://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("https://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("https://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);   

См. также

Основные понятия

Рекомендации по безопасности System.Xml

Ссылки

XslCompiledTransform

XsltSettings

Другие ресурсы

Преобразования XSLT