Dela via


Lösa externa resurser under XSLT-bearbetning

Det finns flera gånger under en XSLT-transformering när du kan behöva lösa externa resurser.

Använda XmlResolver-klassen

Klassen XmlResolver används för att lösa externa resurser. I följande tabell beskrivs när blir XmlResolver involverad under XSLT-bearbetning.

XSLT-uppgift Vad XmlResolver används för
Kompilera formatmallen. Lös URI:n för formatmallen.

-och-

Lös URI-referenser i valfritt xsl:import eller xsl:include element.
Kör formatmallen. Lös URI:n för kontextdokumentet.

-och-

Lös URI-referenser i alla XSLT-funktioner document() .

Metoderna Load och Transform innehåller överlagringar som tar ett XmlResolver objekt som ett av argumenten. Om en XmlResolver inte har angetts används ett standardvärde XmlUrlResolver utan autentiseringsuppgifter.

I följande lista beskrivs när du kanske vill ange ett XmlResolver objekt:

  • Om XSLT-processen behöver åtkomst till en nätverksresurs som kräver autentisering kan du använda en XmlResolver med nödvändiga autentiseringsuppgifter.

  • Om du vill begränsa de resurser som XSLT-processen kan komma åt kan du använda en XmlSecureResolver med rätt behörighetsuppsättning. XmlSecureResolver Använd klassen om du behöver öppna en resurs som du inte kontrollerar eller som inte är betrodd.

  • Om du vill anpassa beteendet kan du implementera din egen XmlResolver klass och använda den för att lösa resurser.

  • Om du vill se till att inga externa resurser används kan du ange null för XmlResolver argumentet.

Exempel

I följande exempel kompileras en formatmall som lagras på en nätverksresurs. Ett XmlUrlResolver objekt anger de autentiseringsuppgifter som krävs för att få åtkomst till formatmallen.

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

Se även