System.Xml Ruang nama
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan dukungan berbasis standar untuk memproses XML.
Kelas
NameTable |
Mengimplementasikan utas XmlNameTabletunggal . |
UniqueId |
Pengidentifikasi unik yang dioptimalkan untuk Guid. |
XmlAttribute |
Mewakili suatu atribut. Nilai valid dan default untuk atribut ditentukan dalam definisi jenis dokumen (DTD) atau skema. |
XmlAttributeCollection |
Mewakili kumpulan atribut yang dapat diakses berdasarkan nama atau indeks. |
XmlBinaryReaderSession |
Memungkinkan string yang dioptimalkan dikelola dengan cara yang dinamis. |
XmlBinaryWriterSession |
Memungkinkan penggunaan kamus dinamis untuk mengompresi string umum yang muncul dalam pesan dan mempertahankan status. |
XmlCDataSection |
Mewakili bagian CDATA. |
XmlCharacterData |
Menyediakan metode manipulasi teks yang digunakan oleh beberapa kelas. |
XmlComment |
Mewakili konten komentar XML. |
XmlConvert |
Mengodekan dan mendekode nama XML, dan menyediakan metode untuk mengonversi antara jenis runtime bahasa umum dan jenis bahasa definisi Skema XML (XSD). Saat mengonversi jenis data, nilai yang ditampilkan bersifat lokal independen. |
XmlDataDocument |
Memungkinkan data terstruktur disimpan, diambil, dan dimanipulasi melalui relasional DataSet. |
XmlDeclaration |
Mewakili simpul <deklarasi XML ?xml version='1.0'...?>. |
XmlDictionary |
Mengimplementasikan kamus yang digunakan untuk mengoptimalkan implementasi pembaca/penulis XML Windows Communication Foundation (WCF). |
XmlDictionaryReader |
Kelas |
XmlDictionaryReaderQuotas |
Berisi nilai kuota yang dapat dikonfigurasi untuk XmlDictionaryReaders. |
XmlDictionaryString |
Mewakili entri yang disimpan dalam XmlDictionary. |
XmlDictionaryWriter |
Mewakili kelas abstrak yang berasal dari XmlWriter Windows Communication Foundation (WCF) untuk melakukan serialisasi dan deserialisasi. |
XmlDocument |
Mewakili dokumen XML. Anda dapat menggunakan kelas ini untuk memuat, memvalidasi, mengedit, menambahkan, dan memosisikan XML dalam dokumen. |
XmlDocumentFragment |
Mewakili objek ringan yang berguna untuk operasi penyisipan pohon. |
XmlDocumentType |
Mewakili deklarasi tipe dokumen. |
XmlDocumentXPathExtensions |
Menyediakan metode ekstensi untuk XmlDocument dan XmlNode untuk navigasi dokumen. |
XmlElement |
Mewakili sebuah elemen. |
XmlEntity |
Mewakili deklarasi entitas, seperti <! ENTITAS... >. |
XmlEntityReference |
Mewakili node referensi entitas. |
XmlException |
Menampilkan informasi terperinci tentang pengecualian terakhir. |
XmlImplementation |
Menentukan konteks untuk sekumpulan XmlDocument objek. |
XmlLinkedNode |
Mendapatkan node segera mendahului atau mengikuti node ini. |
XmlNamedNodeMap |
Mewakili kumpulan simpul yang dapat diakses berdasarkan nama atau indeks. |
XmlNamespaceManager |
Mengatasi, menambahkan, dan menghapus namespace ke koleksi dan menyediakan manajemen cakupan untuk namespace ini. |
XmlNameTable |
Tabel objek string yang diatomisasi. |
XmlNode |
Mewakili satu simpul dalam dokumen XML. |
XmlNodeChangedEventArgs |
Menyediakan data untuk NodeChangedperistiwa , NodeChanging, NodeInserted, NodeInserting, NodeRemoved dan NodeRemoving . |
XmlNodeList |
Mewakili kumpulan node yang diurutkan. |
XmlNodeReader |
Mewakili pembaca yang menyediakan akses maju yang cepat dan tidak di-cache hanya ke data XML dalam XmlNode. |
XmlNotation |
Mewakili deklarasi notasi, seperti <! NOTASI... >. |
XmlParserContext |
Menyediakan semua informasi konteks yang diperlukan oleh untuk mengurai XmlReader fragmen XML. |
XmlProcessingInstruction |
Mewakili petunjuk pemrosesan, yang ditentukan XML untuk menyimpan informasi khusus prosesor dalam teks dokumen. |
XmlQualifiedName |
Mewakili nama XML yang memenuhi syarat. |
XmlReader |
Mewakili pembaca yang menyediakan akses cepat, tidak di-cache, dan hanya maju ke data XML. |
XmlReaderSettings |
Menentukan sekumpulan fitur yang akan didukung pada objek yang XmlReader dibuat oleh Create metode . |
XmlResolver |
Mengatasi sumber daya XML eksternal yang dinamai oleh Pengidentifikasi Sumber Daya Seragam (URI). |
XmlSecureResolver |
Membantu mengamankan implementasi lain dengan XmlResolver membungkus XmlResolver objek dan membatasi sumber daya yang dapat diakses oleh yang mendasarnya XmlResolver . |
XmlSignificantWhitespace |
Mewakili spasi kosong antara markup dalam node konten campuran atau spasi kosong dalam cakupan xml:space= 'preserve'. Hal ini juga disebut sebagai spasi kosong yang signifikan. |
XmlText |
Mewakili konten teks elemen atau atribut. |
XmlTextReader |
Mewakili pembaca yang menyediakan akses cepat, tidak di-cache, dan hanya maju ke data XML. Dimulai dengan .NET Framework 2.0, kami sarankan Anda menggunakan kelas sebagai gantinyaXmlReader. |
XmlTextWriter |
Mewakili penulis yang menyediakan cara cepat, tidak di-cache, dan hanya maju untuk menghasilkan aliran atau file yang berisi data XML yang sesuai dengan W3C Extensible Markup Language (XML) 1.0 dan Namespace dalam rekomendasi XML. Dimulai dengan .NET Framework 2.0, kami sarankan Anda menggunakan kelas sebagai gantinyaXmlWriter. |
XmlUrlResolver |
Mengatasi sumber daya XML eksternal yang dinamai oleh Pengidentifikasi Sumber Daya Seragam (URI). |
XmlValidatingReader |
Mewakili pembaca yang menyediakan definisi jenis dokumen (DTD), skema XML-Data Reduced (XDR), dan validasi bahasa definisi Skema XML (XSD). Kelas ini sudah usang. Dimulai dengan .NET Framework 2.0, kami sarankan Anda menggunakan XmlReaderSettings kelas dan Create metode untuk membuat pembaca XML yang memvalidasi. |
XmlWhitespace |
Mewakili spasi kosong dalam konten elemen. |
XmlWriter |
Mewakili penulis yang menyediakan cara cepat, tidak di-cache, dan hanya maju untuk menghasilkan aliran atau file yang berisi data XML. |
XmlWriterSettings |
Menentukan sekumpulan fitur yang akan didukung pada objek yang XmlWriter dibuat oleh Create metode . |
XmlXapResolver |
Jenis XmlXapResolver digunakan untuk menyelesaikan sumber daya dalam paket XAP aplikasi Silverlight. |
Antarmuka
IApplicationResourceStreamResolver |
Mewakili pemecah masalah aliran sumber daya aplikasi. |
IFragmentCapableXmlDictionaryWriter |
Berisi properti dan metode yang ketika diimplementasikan oleh XmlDictionaryWriter, memungkinkan pemrosesan fragmen XML. |
IHasXmlNode |
Memungkinkan kelas untuk mengembalikan XmlNode dari konteks atau posisi saat ini. |
IStreamProvider |
Mewakili antarmuka yang dapat diimplementasikan oleh kelas yang menyediakan aliran. |
IXmlBinaryReaderInitializer |
Menyediakan metode untuk menginisialisasi ulang pembaca biner untuk membaca dokumen baru. |
IXmlBinaryWriterInitializer |
Menentukan persyaratan implementasi untuk penulis biner XML yang berasal dari antarmuka ini. |
IXmlDictionary |
|
IXmlLineInfo |
Menyediakan antarmuka untuk mengaktifkan kelas untuk mengembalikan informasi garis dan posisi. |
IXmlMtomReaderInitializer |
Menentukan persyaratan implementasi untuk pembaca XML MTOM yang berasal dari antarmuka ini. |
IXmlMtomWriterInitializer |
Ketika diimplementasikan oleh penulis MTOM, antarmuka ini memastikan inisialisasi untuk penulis MTOM. |
IXmlNamespaceResolver |
Menyediakan akses baca-saja ke sekumpulan awalan dan pemetaan namespace layanan. |
IXmlTextReaderInitializer |
Menentukan persyaratan implementasi untuk pembaca teks XML yang berasal dari antarmuka ini. |
IXmlTextWriterInitializer |
Menentukan persyaratan implementasi untuk penulis teks XML yang berasal dari antarmuka ini. |
Enum
ConformanceLevel |
Menentukan jumlah pemeriksaan input atau output yang XmlReader dilakukan objek dan XmlWriter . |
DtdProcessing |
Menentukan opsi untuk memproses DTD. Enumerasi DtdProcessing digunakan oleh XmlReaderSettings kelas . |
EntityHandling |
Menentukan cara XmlTextReader atau XmlValidatingReader menangani entitas. |
Formatting |
Menentukan opsi pemformatan untuk XmlTextWriter. |
NamespaceHandling |
Menentukan apakah akan menghapus deklarasi namespace duplikat di XmlWriter. |
NewLineHandling |
Menentukan cara menangani pemisah baris. |
ReadState |
Menentukan status pembaca. |
ValidationType |
Menentukan jenis validasi yang akan dilakukan. |
WhitespaceHandling |
Menentukan bagaimana ruang kosong ditangani. |
WriteState |
Menentukan status XmlWriter. |
XmlDateTimeSerializationMode |
Menentukan cara memperlakukan nilai waktu saat mengonversi antara string dan DateTime. |
XmlDictionaryReaderQuotaTypes |
Menghitung nilai kuota yang dapat dikonfigurasi untuk XmlDictionaryReaders. |
XmlNamespaceScope |
Menentukan cakupan namespace. |
XmlNodeChangedAction |
Menentukan jenis perubahan simpul. |
XmlNodeOrder |
Menjelaskan urutan dokumen simpul dibandingkan dengan simpul kedua. |
XmlNodeType |
Menentukan jenis simpul. |
XmlOutputMethod |
Menentukan metode yang digunakan untuk membuat serial output XmlWriter . |
XmlSpace |
Menentukan cakupan saat ini |
XmlTokenizedType |
Mewakili jenis XML untuk string. Ini memungkinkan string dibaca sebagai jenis XML tertentu, misalnya jenis bagian CDATA. |
Delegasikan
OnXmlDictionaryReaderClose |
|
XmlNodeChangedEventHandler |
Mewakili metode yang menangani NodeChangedperistiwa , , NodeChangingNodeInserted, NodeInserting, NodeRemoved dan NodeRemoving . |
Keterangan
Standar yang didukung
Namespace System.Xml mendukung standar ini:
Namespace XML, baik tingkat aliran maupun DOM
Lihat bagian Perbedaan dari spesifikasi W3C untuk dua kasus di mana kelas XML berbeda dari rekomendasi W3C.
Namespace terkait
.NET juga menyediakan namespace layanan lain untuk operasi terkait XML. Untuk daftar, deskripsi, dan tautan, lihat System.Xml Namespace.
Memproses XML secara asinkron
Kelas System.Xml.XmlReader dan System.Xml.XmlWriter mencakup sejumlah metode asinkron yang didasarkan pada model pemrograman asinkron. Metode ini dapat diidentifikasi dengan string "Asinkron" di akhir namanya. Dengan metode ini, Anda dapat menulis kode asinkron yang mirip dengan kode sinkron Anda, dan Anda dapat memigrasikan kode sinkron yang ada ke kode asinkron dengan mudah.
Gunakan metode asinkron di aplikasi di mana ada latensi aliran jaringan yang signifikan. Hindari menggunakan API asinkron untuk aliran memori atau operasi baca/tulis aliran file lokal. Aliran input, XmlTextReader, dan XmlTextWriter harus mendukung operasi asinkron juga. Jika tidak, utas akan tetap diblokir oleh operasi I/O.
Kami tidak menyarankan untuk mencampur panggilan fungsi sinkron dan asinkron, karena Anda mungkin lupa menggunakan
await
kata kunci atau menggunakan API sinkron di mana panggilan asinkron diperlukan.Jangan atur XmlReaderSettings.Async bendera atau XmlWriterSettings.Async ke
true
jika Anda tidak berniat menggunakan metode asinkron.Jika Anda lupa menentukan
await
kata kunci saat memanggil metode asinkron, hasilnya tidak deterministik: Anda mungkin menerima hasil yang Anda harapkan atau pengecualian.XmlReader Saat objek membaca simpul teks besar, objek mungkin hanya menyimpan sebagian nilai teks dan mengembalikan simpul teks, sehingga mengambil XmlReader.Value properti mungkin diblokir oleh operasi I/O. XmlReader.GetValueAsync Gunakan metode untuk mendapatkan nilai teks dalam mode asinkron, atau gunakan XmlReader.ReadValueChunkAsync metode untuk membaca blok teks besar dalam gugus.
Saat Anda menggunakan XmlWriter objek, panggil XmlWriter.FlushAsync metode sebelum memanggil XmlWriter.Close untuk menghindari pemblokiran operasi I/O.
Perbedaan dari spesifikasi W3C
Dalam dua kasus yang melibatkan batasan pada komponen skema grup model, System.Xml namespace berbeda dari rekomendasi W3C.
Konsistensi dalam deklarasi elemen:
Dalam beberapa kasus, ketika grup pengganti digunakan, System.Xml implementasi tidak memenuhi "Batasan Komponen Skema: Deklarasi Elemen Konsisten," yang dijelaskan dalam bagian Batasan pada Komponen Skema Grup Model dari spesifikasi W3C.
Misalnya, skema berikut menyertakan elemen yang memiliki nama yang sama tetapi jenis yang berbeda dalam model konten yang sama, dan grup substitusi digunakan. Ini akan menyebabkan kesalahan, tetapi System.Xml mengkompilasi dan memvalidasi skema tanpa kesalahan.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="t1"/>
<xs:complexType name="t1"/>
<xs:element name="e2" type="t2" substitutionGroup="e1"/>
<xs:complexType name="t2">
<xs:complexContent>
<xs:extension base="t1">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1"/>
<xs:element name="e2" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Dalam skema ini, jenis t3
berisi urutan elemen. Karena penggantian, referensi ke elemen e1
dari urutan dapat menghasilkan elemen e1
jenis t1
atau dalam elemen e2
jenis t2
. Kasus terakhir akan menghasilkan urutan dua e2
elemen, di mana satu berjenis t2
dan yang lainnya berjenis xs:int
.
Atribusi partikel unik:
Dalam kondisi berikut, System.Xml implementasi tidak memenuhi "Batasan Komponen Skema: Atribusi Partikel Unik," yang dijelaskan di bagian Batasan pada Komponen Skema Grup Model dari spesifikasi W3C.
Salah satu elemen dalam grup mereferensikan elemen lain.
Elemen yang dirujuk adalah elemen kepala dari grup substitusi.
Grup substitusi berisi elemen yang memiliki nama yang sama dengan salah satu elemen dalam grup.
Kardinalitas elemen yang mereferensikan elemen kepala grup substitusi dan elemen dengan nama yang sama dengan elemen grup substitusi tidak diperbaiki (minOccurs < maxOccurs).
Definisi elemen yang mereferensikan grup substitusi mendahului definisi elemen dengan nama yang sama dengan elemen grup substitusi.
Misalnya, dalam skema di bawah model konten ambigu dan harus menyebabkan kesalahan kompilasi, tetapi System.Xml mengompilasi skema tanpa kesalahan.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="xs:int"/>
<xs:element name="e2" type="xs:int" substitutionGroup="e1"/>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e3" type="t3"/>
</xs:schema>
Jika Anda mencoba memvalidasi XML berikut terhadap skema di atas, validasi akan gagal dengan pesan berikut: "Elemen 'e3' memiliki elemen anak yang tidak valid 'e2'." dan XmlSchemaValidationException pengecualian akan dilemparkan.
<e3>
<e2>1</e2>
<e2>2</e2>
</e3>
Untuk mengatasi masalah ini, Anda dapat menukar deklarasi elemen dalam dokumen XSD. Contohnya:
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
menjadi ini:
<xs:sequence>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
Berikut adalah contoh lain dari masalah yang sama:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="xs:string"/>
<xs:element name="e2" type="xs:string" substitutionGroup="e1"/>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e3" type="t3"/>
</xs:schema>
Jika Anda mencoba memvalidasi XML berikut terhadap skema di atas, validasi akan gagal dengan pengecualian berikut: "Pengecualian Tidak Tertangani: System.Xml. Schema.XmlSchemaValidationException: Elemen el 'e2' tidak valid - Nilai 'abc' tidak valid menurut jenis datanya 'http://www.w3.org/2001/XMLSchema:int'
- String 'abc' bukan nilai Int32 yang valid."
<e3><e2>abc</e2></e3>
Pertimbangan keamanan
Jenis dan anggota di namespace mengandalkan System.Xmlsistem keamanan .NET. Bagian berikut membahas masalah keamanan yang khusus untuk teknologi XML.
Perhatikan juga bahwa saat Anda menggunakan System.Xml jenis dan anggota, jika XML berisi data yang memiliki implikasi privasi potensial, Anda perlu menerapkan aplikasi Anda dengan cara yang menghormati privasi pengguna akhir Anda.
Akses eksternal
Beberapa teknologi XML memiliki kemampuan untuk mengambil dokumen lain selama pemrosesan. Misalnya, definisi jenis dokumen (DTD) dapat berada di dokumen yang sedang diurai. DTD juga dapat hidup dalam dokumen eksternal yang direferensikan oleh dokumen yang sedang diurai. Teknologi BAHASA definisi Skema XML (XSD) dan XSLT juga memiliki kemampuan untuk menyertakan informasi dari file lain. Sumber daya eksternal ini dapat menyajikan beberapa masalah keamanan. Misalnya, Anda harus memastikan bahwa aplikasi Anda hanya mengambil file dari situs tepercaya, dan file yang diambilnya tidak berisi data berbahaya.
Kelas XmlUrlResolver ini digunakan untuk memuat dokumen XML dan untuk menyelesaikan sumber daya eksternal seperti entitas, DTD, atau skema, dan mengimpor atau menyertakan arahan.
Anda dapat mengambil alih kelas ini dan menentukan objek yang XmlResolver akan digunakan. Gunakan kelas XmlSecureResolver jika Anda perlu membuka sumber daya yang tidak Anda kontrol, atau yang tidak tepercaya. Membungkus XmlSecureResolver dan memungkinkan Anda membatasi sumber daya yang dapat diakses oleh yang mendasarnya XmlResolverXmlResolver .
Penolakan layanan
Skenario berikut dianggap kurang rentan terhadap penolakan serangan layanan karena kelas memberikan sarana perlindungan dari serangan tersebut System.Xml .
Mengurai data XML teks.
Mengurai data XML biner jika data XML biner dihasilkan oleh Microsoft SQL Server.
Menulis dokumen XML dan fragmen dari sumber data ke sistem file, aliran, TextWriter, atau StringBuilder.
Memuat dokumen ke dalam objek Model Objek Dokumen (DOM) jika Anda menggunakan XmlReader objek dan XmlReaderSettings.DtdProcessing diatur ke DtdProcessing.Prohibit.
Menavigasi objek DOM.
Skenario berikut tidak disarankan jika Anda khawatir tentang penolakan serangan layanan, atau jika Anda bekerja di lingkungan yang tidak tepercaya.
Pemrosesan DTD.
Pemrosesan skema. Ini termasuk menambahkan skema yang tidak tepercaya ke koleksi skema, mengkompilasi skema yang tidak tepercaya, dan memvalidasi dengan menggunakan skema yang tidak tepercaya.
Pemrosesan XSLT.
Mengurai aliran arbitrer data XML biner yang disediakan pengguna.
Operasi DOM seperti mengkueri, mengedit, memindahkan sub-pohon antar dokumen, dan menyimpan objek DOM.
Jika Anda khawatir tentang penolakan masalah layanan atau jika Anda berurusan dengan sumber yang tidak tepercaya, jangan aktifkan pemrosesan DTD. Ini dinonaktifkan secara default pada XmlReader objek yang XmlReader.Create dibuat metode.
Catatan
XmlTextReader memungkinkan pemrosesan DTD secara default. XmlTextReader.DtdProcessing Gunakan properti untuk menonaktifkan fitur ini.
Jika pemrosesan DTD diaktifkan, Anda dapat menggunakan XmlSecureResolver kelas untuk membatasi sumber daya yang XmlReader dapat diakses. Anda juga dapat merancang aplikasi sehingga pemrosesan XML dibatasi memori dan waktu. Misalnya, Anda dapat mengonfigurasi batas waktu habis di aplikasi ASP.NET Anda.
Pertimbangan pemrosesan
Karena dokumen XML dapat menyertakan referensi ke file lain, sulit untuk menentukan berapa banyak daya pemrosesan yang diperlukan untuk mengurai dokumen XML. Misalnya, dokumen XML dapat menyertakan DTD. Jika DTD berisi entitas berlapis atau model konten kompleks, dibutuhkan waktu yang berlebihan untuk mengurai dokumen.
Saat menggunakan XmlReader, Anda dapat membatasi ukuran dokumen yang dapat diurai dengan mengatur XmlReaderSettings.MaxCharactersInDocument properti . Anda dapat membatasi jumlah karakter yang dihasilkan dari memperluas entitas dengan mengatur XmlReaderSettings.MaxCharactersFromEntities properti . Lihat topik referensi yang sesuai untuk contoh pengaturan properti ini.
Teknologi XSD dan XSLT memiliki kemampuan tambahan yang dapat memengaruhi performa pemrosesan. Misalnya, dimungkinkan untuk membuat skema XML yang memerlukan banyak waktu untuk diproses ketika dievaluasi melalui dokumen yang relatif kecil. Dimungkinkan juga untuk menyematkan blok skrip dalam lembar gaya XSLT. Kedua kasus tersebut menimbulkan potensi ancaman keamanan terhadap aplikasi Anda.
Saat membuat aplikasi yang menggunakan XslCompiledTransform kelas , Anda harus mengetahui item berikut dan implikasinya:
Skrip XSLT dinonaktifkan secara default. Skrip XSLT harus diaktifkan hanya jika Anda memerlukan dukungan skrip dan Anda bekerja di lingkungan yang sepenuhnya tepercaya.
Fungsi XSLT
document()
dinonaktifkan secara default. Jika Anda mengaktifkandocument()
fungsi , batasi sumber daya yang dapat diakses dengan meneruskan XmlSecureResolver objek ke XslCompiledTransform.Transform metode .Objek ekstensi diaktifkan secara default. XsltArgumentList Jika objek yang berisi objek ekstensi diteruskan ke XslCompiledTransform.Transform metode , objek ekstensi akan digunakan.
Lembar gaya XSLT dapat menyertakan referensi ke file lain dan blok skrip yang disematkan. Pengguna jahat dapat mengeksploitasi ini dengan memberi Anda lembar data atau gaya yang, ketika dijalankan, dapat menyebabkan sistem Anda diproses sampai komputer kehabisan sumber daya.
Aplikasi XSLT yang berjalan di lingkungan kepercayaan campuran dapat mengakibatkan spoofing lembar gaya. Misalnya, pengguna jahat dapat memuat objek dengan lembar gaya berbahaya dan menyerahkannya kepada pengguna lain yang kemudian memanggil XslCompiledTransform.Transform metode dan menjalankan transformasi.
Masalah keamanan ini dapat dimitigasi dengan tidak mengaktifkan skrip atau document()
fungsi kecuali lembar gaya berasal dari sumber tepercaya, dan dengan tidak menerima XslCompiledTransform objek, lembar gaya XSLT, atau data sumber XML dari sumber yang tidak tepercaya.
Penanganan pengecualian
Pengecualian yang dilemparkan oleh komponen tingkat bawah dapat mengungkapkan informasi jalur yang tidak ingin Anda terekspos ke aplikasi. Aplikasi Anda harus menangkap pengecualian dan memprosesnya dengan tepat.