Risoluzione delle risorse esterne durante l'elaborazione XSLTResolving External Resources During XSLT Processing

Durante una trasformazione XSLT si presentano vari casi in cui può essere necessario risolvere le risorse esterne.There are several times during an XSLT transformation when you may need to resolve external resources.

Utilizzo della classe XmlResolverUsing the XmlResolver Class

La classe XmlResolver viene usata per risolvere risorse esterne.The XmlResolver class is used to resolve external resources. Nella tabella seguente vengono descritti i casi in cui il tipo XmlResolver viene interessato dall'elaborazione XSLT.The following table describes when the XmlResolver becomes involved during XSLT processing.

Attività XSLTXSLT task Scopo per il quale viene usato XmlResolverWhat the XmlResolver is used for
Compilare il foglio di stile.Compile the style sheet. Risolvere l'URI del foglio di stile.Resolve the URI of the style sheet.

-e--and-

Risolvere i riferimenti URI negli elementi xsl:import o xsl:include.Resolve URI references in any xsl:import or xsl:include elements.
Eseguire il foglio di stile.Execute the style sheet. Risolvere l'URI del documento di contesto.Resolve the URI of the context document.

-e--and-

Risolvere i riferimenti URI in qualsiasi funzione document() XSLT.Resolve URI references in any XSLT document() functions.

I metodi Load e Transform includono overload che accettano un oggetto XmlResolver come argomento.The Load and Transform methods include overloads that take an XmlResolver object as one of its arguments. Se non viene specificato alcun tipo XmlResolver, viene usato un tipo predefinito XmlUrlResolver senza credenziali.If an XmlResolver is not specified, a default XmlUrlResolver with no credentials is used.

Nell'elenco seguente viene descritto quando può essere necessario specificare un oggetto XmlResolver:The following list describes when you may want to specify an XmlResolver object:

  • Se il processo XSLT richiede l'accesso a una risorsa di rete che richiede l'autenticazione, è possibile usare un tipo XmlResolver con le credenziali necessarie.If the XSLT process needs to access a network resource that requires authentication, you can use an XmlResolver with the necessary credentials.

  • Se si desidera limitare le risorse a cui può accedere il processo XSLT, è possibile usare un XmlSecureResolver con il set di autorizzazioni corretto.If you want to restrict the resources that the XSLT process can access, you can use an XmlSecureResolver with the correct permission set. Usare la classe XmlSecureResolver se è necessario aprire una risorsa che non si controlla o che non è considerata affidabile.Use the XmlSecureResolver class if you need to open a resource that you do not control, or that is untrusted.

  • Se si desidera personalizzare il comportamento, è possibile implementare la propria classe XmlResolver e usarla per risolvere le risorse.If you want to customize behavior, you can implement your own XmlResolver class and use it to resolve resources.

  • Se si desidera assicurarsi che non venga eseguito l'accesso ad alcuna risorsa esterna, è possibile specificare null per l'argomento XmlResolver.If you want to ensure that no external resources are accessed, you can specify null for the XmlResolver argument.

EsempioExample

Nell'esempio seguente viene compilato un foglio di stile archiviato su una risorsa di rete.The following example compiles a style sheet that is stored on a network resource. Un oggetto XmlUrlResolver specificherà le credenziali necessarie per accedere al foglio di stile.An XmlUrlResolver object specifies the credentials necessary to access the style sheet.

// 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)

Vedere ancheSee Also

XslCompiledTransform
XsltSettings
Trasformazioni XSLTXSLT Transformations