Share via


Auflösen von externen Ressourcen während der XSLT-Verarbeitung

Während einer XSLT-Transformation müssen Sie u. U. mehrmals externe Ressourcen auflösen.

Verwenden der XmlResolver-Klasse

Die XmlResolver-Klasse wird zum Auflösen von externen Ressourcen verwendet. In der folgenden Tabelle wird dargestellt, wann der XmlResolver während der XSLT-Verarbeitung aktiv wird.

XSLT-Aufgabe

Verwendung von "XmlResolver"

Kompilieren des Stylesheets.

Auflösen des URI des Stylesheets.

– und –

Auflösen von URI-Verweisen in allen xsl:import-Elementen oder xsl:include-Elementen.

Ausführen des Stylesheets.

Auflösen des URI des Kontextmenüs.

– und –

Auflösen von URI-Verweisen in beliebigen Funktionen von XSLT-document().

Die Load-Methode und die Transform-Methode enthalten Überladungen, die ein XmlResolver-Objekt als eines ihrer Argumente verwenden. Wenn kein XmlResolver angegeben ist, wird der standardmäßige XmlUrlResolver ohne Anmeldeinformationen verwendet.

In der folgenden Liste wird erläutert, wann ein XmlResolver-Objekt angegeben werden kann.

  • Wenn der XSLT-Vorgang auf eine Netzwerkressource zugreifen muss, die eine Authentifizierung erfordert, können Sie einen XmlResolver mit den notwendigen Anmeldeinformationen verwenden.

  • Wenn Sie die Ressourcen einschränken möchten, auf die der XSLT-Vorgang zugreifen kann, können Sie einen XmlSecureResolver mit den korrekt festgelegten Einstellungen verwenden. Verwenden Sie die XmlSecureResolver-Klasse, wenn Sie eine Ressource öffnen möchten, die nicht von Ihnen gesteuert wird oder die nicht vertrauenswürdig ist.

  • Wenn Sie das Verhalten anpassen möchten, können Sie eine eigene XmlResolver-Klasse implementieren und diese zum Auflösen von Ressourcen verwenden.

  • Wenn Sie sich vergewissern möchten, dass auf keine externe Ressource zugegriffen wird, können Sie für das XmlResolver-Argument null angeben.

Beispiel

Im folgenden Beispiel wird ein Stylesheet kompiliert, das in einer Netzwerkressource gespeichert ist. Ein XmlUrlResolver-Objekt gibt die Anmeldeinformationen an, die für den Zugriff auf das Stylesheet erforderlich sind.

' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("https://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("https://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("https://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("https://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);   

Siehe auch

Referenz

XslCompiledTransform

XsltSettings

Konzepte

Sicherheitsaspekte für "System.Xml"

Weitere Ressourcen

XSLT-Transformationen