Risoluzione di fogli di stile XSLT e documenti esterni

Durante una trasformazione si presentano vari casi in cui può essere necessario risolvere le risorse esterne:

  • Durante l'esecuzione del metodo Load per individuare un foglio di stile esterno.
  • Durante l'esecuzione del metodo Load per risolvere gli eventuali elementi <xsl:include> o <xsl:import> presenti nel foglio di stile.
  • Durante l'esecuzione del metodo Transform per risolvere eventuali funzioni document().

Se per accedere a una risorsa di rete è richiesta l'autenticazione, utilizzare i metodi Load contenenti un parametro XmlResolver per passare l'oggetto XmlResolver che contiene il gruppo di credenziali necessario.

Se si dispone di un XmlResolver personalizzato che si desidera utilizzare, o se è necessario specificare credenziali diverse, occorre eseguire le operazioni riportate nella tabella seguente, che dipendono dal momento in cui è necessario risolvere la risorsa esterna.

Processo che richiede la risoluzione Attività richiesta
Durante l'esecuzione del metodo Load per individuare il foglio di stile. Specificare il metodo di overload Load che accetta come parametro XmlResolver, qualora il foglio di stile si trovi in una risorsa che necessita di credenziali.
Durante l'esecuzione del metodo Load per risolvere <xsl:include> o <xsl:import>. Specificare il metodo di overload Load che prende come parametro un XmlResolver. XmlResolver viene utilizzato per caricare i fogli di stile a cui fanno riferimento le istruzioni import o include. Se viene fornito il valore null (Nothing), le risorse esterne non vengono risolte.
Durante una trasformazione per risolvere eventuali funzioni document(). Specificare XmlResolver durante la trasformazione utilizzando il metodo XslTransform.Transform con un argomento XmlResolver.

Oltre ai dati XML iniziali forniti dal flusso di input, la funzionedocument() consente di recuperare da un foglio di stile anche altre risorse XML. Poiché questa funzione consente di includere i dati XML che si trovano in altre posizioni, se al metodo Transform viene fornito un argomento XmlResolver con valore null, la funzione document() non può essere eseguita. Se si desidera utilizzare la funzione document(), utilizzare un metodo Transform con un argomento XmlResolver come parametro, oltre a impostare le autorizzazioni appropriate.

Per ulteriori informazioni sul metodo Load e sull'utilizzo di XmlResolver, vedere Metodo XslTransform.Load (stringa, XmlResolver). Per ulteriori informazioni sulla classe XmlResolver, vedere Risoluzione delle risorse mediante XmlResolver e Classe XmlResolver.

Quando viene chiamato il metodo Transform, le autorizzazioni vengono calcolate in base alla prova fornita durante l'esecuzione del metodo Load e il gruppo di autorizzazioni viene assegnato all'intero processo di trasformazione. Se la funzione document() tenta di avviare un'azione che necessita di autorizzazioni non presenti nel gruppo, viene generata un'eccezione.

Vedere anche

Trasformazioni XSLT con la classe XslTransform | Implementazione del processore XSLT da parte della classe XslTransform | Output da un XslTransform | Trasformazioni XSLT su diversi archivi | XsltArgumentList per i parametri dei fogli di stile e gli oggetti di estensione | Script dei fogli di stile XSLT utilizzando <msxsl:script> | Supporto per la funzione msxsl:node-set() | XPathNavigator nelle trasformazioni | XPathNodeIterator nelle trasformazioni | Input di XPathDocument in XslTransform | Input di XmlDataDocument in XslTransform | Input di XmlDocument in XslTransform