Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Há várias vezes durante uma transformação XSLT em que você pode precisar resolver recursos externos.
Usando a classe XmlResolver
A XmlResolver classe é usada para resolver recursos externos. A tabela a seguir descreve quando o XmlResolver é utilizado durante o processamento XSLT.
| Tarefa XSLT | Para que o XmlResolver é usado |
|---|---|
| Compile a folha de estilos. | Resolva o URI da folha de estilos. -e- Resolva referências de URI em qualquer elemento xsl:import ou xsl:include. |
| Execute a folha de estilos. | Resolva o URI do documento de contexto. -e- Resolva referências de URI em qualquer função XSLT document() . |
Os métodos Load e Transform incluem sobrecargas que recebem um objeto XmlResolver como um dos seus argumentos. Se um XmlResolver não for especificado, um padrão XmlUrlResolver sem credenciais será usado.
A lista a seguir descreve quando você pode querer especificar um XmlResolver objeto:
Se o processo XSLT precisar acessar um recurso de rede que exija autenticação, você poderá usar um XmlResolver com as credenciais necessárias.
Se você quiser restringir os recursos que o processo XSLT pode acessar, você pode usar um XmlSecureResolver com o conjunto de permissões correto. Use a XmlSecureResolver classe se precisar abrir um recurso que você não controla ou que não é confiável.
Se quiser personalizar o comportamento, você pode implementar sua própria XmlResolver classe e usá-la para resolver recursos.
Se quiser garantir que nenhum recurso externo seja acessado, especifique o argumento
nullcom XmlResolver.
Exemplo
O exemplo a seguir compila uma folha de estilos armazenada em um recurso de rede. Um XmlUrlResolver objeto especifica as credenciais necessárias para acessar a folha de estilos.
// 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)