Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há várias vezes durante uma transformação XSLT em que talvez seja necessário resolver recursos externos.
Usando a classe XmlResolver
A XmlResolver classe é usada para resolver recursos externos. A tabela a seguir descreve quando o XmlResolver se envolve no 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. |
| Executar a folha de estilos. | Resolva o URI do documento de contexto. -e- Resolva referências de URI em qualquer função XSLT document() . |
Os Load métodos e os Transform métodos incluem sobrecargas que tomam um XmlResolver objeto como um de seus argumentos. Se um XmlResolver não for especificado, um padrão XmlUrlResolver sem credenciais será usado.
A lista a seguir descreve quando talvez você queira 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, use 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 seja confiável.
Se você quiser personalizar o comportamento, poderá implementar sua própria XmlResolver classe e usá-la para resolver recursos.
Se quiser garantir que nenhum recurso externo seja acessado, você poderá especificar
nullpara o XmlResolver argumento.
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)