Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Hay varias veces durante una transformación XSLT cuando es posible que necesite resolver recursos externos.
Uso de la clase XmlResolver
La XmlResolver clase se usa para resolver recursos externos. En la tabla siguiente se describe cuándo XmlResolver se involucra durante el procesamiento XSLT.
Tarea de XSLT | Qué se usa XmlResolver para |
---|---|
Compile la hoja de estilos. | Resuelva el URI de la hoja de estilos. \- y - Resuelva las referencias de URI en cualquier elemento xsl:import o xsl:include . |
Ejecute la hoja de estilos. | Resuelva el URI del documento de contexto. \- y - Resolver referencias URI en cualquier función document() de XSLT. |
Los Load métodos y Transform incluyen sobrecargas que toman un XmlResolver objeto como uno de sus argumentos. Si no se especifica un XmlResolver, se utilizará un valor predeterminado XmlUrlResolver sin credenciales.
En la lista siguiente se describe cuándo puede especificar un XmlResolver objeto:
Si el proceso XSLT necesita acceder a un recurso de red que requiere autenticación, puede usar un XmlResolver con las credenciales necesarias.
Si desea restringir los recursos a los que puede acceder el proceso XSLT, puede usar un XmlSecureResolver con el conjunto de permisos correcto. Use la XmlSecureResolver clase si necesita abrir un recurso que no controla o que no es de confianza.
Si desea personalizar el comportamiento, puede implementar su propia XmlResolver clase y usarla para resolver los recursos.
Si desea asegurarse de que no se tiene acceso a ningún recurso externo, puede especificar
null
para el XmlResolver argumento .
Ejemplo
En el ejemplo siguiente se compila una hoja de estilos almacenada en un recurso de red. Un XmlUrlResolver objeto especifica las credenciales necesarias para acceder a la hoja 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)