Bagikan melalui


Mengatasi Sumber Daya Eksternal Selama Pemrosesan XSLT

Ada beberapa kali selama transformasi XSLT ketika Anda mungkin perlu menyelesaikan sumber daya eksternal.

Menggunakan Kelas XmlResolver

Kelas XmlResolver ini digunakan untuk menyelesaikan sumber daya eksternal. Tabel berikut menjelaskan kapan XmlResolver terlibat selama pemrosesan XSLT.

Tugas XSLT Untuk apa XmlResolver digunakan
Mengkompilasi lembar gaya. Selesaikan URI stylesheet.

-dan-

Selesaikan referensi URI dalam elemen xsl:import atau xsl:include apa pun.
Jalankan lembar gaya. Atasi URI dokumen konteks.

-dan-

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

Metode Load dan Transform mencakup kelebihan beban yang mengambil XmlResolver objek sebagai salah satu argumennya. Jika XmlResolver tidak ditentukan, default XmlUrlResolver tanpa kredensial akan digunakan.

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

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

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

  • Jika ingin menyesuaikan perilaku, Anda dapat mengimplementasikan kelas Anda sendiri XmlResolver dan menggunakannya untuk menyelesaikan sumber daya.

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

Contoh

Contoh berikut mengkompilasi lembar gaya yang disimpan pada 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