Bagikan melalui


Mengatasi Sumber Daya Eksternal Selama Pemrosesan XSLT

Ada kalanya selama transformasi XSLT, Anda mungkin perlu mengatasi sumber daya eksternal.

Menggunakan Kelas XmlResolver

Kelas XmlResolver digunakan untuk mengatasi sumber daya eksternal. Tabel berikut menjelaskan kapan XmlResolver dilibatkan selama pemrosesan XSLT.

Tugas XSLT Kegunaan XmlResolver
Mengompilasi lembar gaya. Mengatasi URI lembar gaya.

-dan-

Mengatasi referensi URI dalam elemen xsl:import atau xsl:include apa pun.
Menjalankan lembar gaya. Mengatasi URI dari dokumen konteks.

-dan-

Mengatasi referensi URI dalam fungsi XSLT document() apa pun.

Metode Load dan Transform memasukkan kelebihan beban yang menganggap objek XmlResolver sebagai salah satu argumen. Jika XmlResolver tidak ditentukan, XmlUrlResolver default tanpa kredensial akan digunakan.

Daftar berikut ini menjelaskan kapan Anda mungkin ingin menentukan objek XmlResolver:

  • Jika proses XSLT perlu mengakses sumber daya jaringan yang memerlukan autentikasi, Anda dapat menggunakan XmlResolver dengan kredensial yang diperlukan.

  • Jika ingin membatasi sumber daya yang dapat diakses oleh proses XSLT, Anda dapat menggunakan XmlSecureResolver dengan rangkaian izin yang benar. Gunakan kelas XmlSecureResolver jika Anda perlu membuka sumber daya yang tidak Anda kontrol, atau yang tidak tepercaya.

  • Jika ingin menyesuaikan perilaku, Anda dapat menerapkan kelas XmlResolver milik Anda sendiri dan menggunakannya untuk mengatasi sumber daya.

  • Jika Anda ingin memastikan bahwa tidak ada sumber daya eksternal yang diakses, Anda dapat menentukan null untuk argumen XmlResolver.

Contoh

Contoh berikut mengompilasi lembar gaya yang disimpan di sumber daya jaringan. Objek XmlUrlResolver menentukan kredensial yang diperlukan untuk mengakses lembar gaya.

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

Lihat juga