Delen via


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
Verzamel het stijlblad. Los de URI van het stijlblad op.

en

Werk URI-verwijzingen af in een xsl:import- of xsl:include-element.
Voer het stijlblad 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 geen XmlResolver is gespecificeerd, wordt er standaard een XmlUrlResolver zonder inloggegevens 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 waarvan u geen controle heeft of die niet betrouwbaar is.

  • 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 bronnen worden benaderd, kunt u null opgeven voor het XmlResolver argument.

Voorbeeld

In het volgende voorbeeld wordt een stijlblad gecompileerd dat opgeslagen is op een netwerkbron. Een XmlUrlResolver object specificeert de inloggegevens die nodig zijn voor toegang tot het stijlblad.

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

Zie ook