Externe resources oplossen tijdens XSLT-verwerking
Er zijn meerdere keren tijdens een XSLT-transformatie wanneer u mogelijk externe resources moet oplossen.
De klasse XmlResolver gebruiken
De XmlResolver klasse wordt gebruikt om externe resources op te lossen. In de volgende tabel wordt beschreven wanneer de XmlResolver betrokken worden tijdens de XSLT-verwerking.
XSLT-taak | Waarvoor xmlResolver wordt gebruikt |
---|---|
Compileer het opmaakmodel. | Los de URI van het opmaakmodel op. en Los URI-verwijzingen in een xsl:import of xsl:include meer elementen op. |
Voer het opmaakmodel uit. | Los de URI van het contextdocument op. en URI-verwijzingen in XSLT-functies document() oplossen. |
De Load en Transform methoden omvatten overbelastingen die een XmlResolver object als een van de argumenten gebruiken. Als er XmlResolver geen referenties zijn opgegeven, wordt standaard geen XmlUrlResolver referenties gebruikt.
In de volgende lijst wordt beschreven wanneer u mogelijk een XmlResolver object wilt opgeven:
Als het XSLT-proces toegang nodig heeft tot een netwerkresource waarvoor verificatie is vereist, kunt u een XmlResolver met de benodigde referenties gebruiken.
Als u de resources wilt beperken waartoe het XSLT-proces toegang heeft, kunt u een XmlSecureResolver met de juiste machtigingenset gebruiken. Gebruik de XmlSecureResolver klasse als u een resource wilt openen die u niet bepaalt of die niet wordt vertrouwd.
Als u het gedrag wilt aanpassen, kunt u uw eigen XmlResolver klasse implementeren en deze gebruiken om resources op te lossen.
Als u ervoor wilt zorgen dat er geen externe resources worden geopend, kunt u opgeven
null
voor het XmlResolver argument.
Opmerking
In het volgende voorbeeld wordt een opmaakmodel gecompileerd dat is opgeslagen op een netwerkresource. Een XmlUrlResolver object geeft de referenties op die nodig zijn voor toegang tot het opmaakmodel.
// 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)