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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk