Mengapa mereka mengatakan bahwa XML menyediakan keamanan tipe dan bagaimana itu dinyatakan dalam XML itu sendiri?
Apa bedanya dengan JSON (misalnya) yang (seperti yang saya mengerti) bukan tipe aman?
sumber
Mengapa mereka mengatakan bahwa XML menyediakan keamanan tipe dan bagaimana itu dinyatakan dalam XML itu sendiri?
Apa bedanya dengan JSON (misalnya) yang (seperti yang saya mengerti) bukan tipe aman?
Karena Definisi Skema XML (XSD).
Dengan XML, Anda dapat memiliki file tambahan yang menjelaskan skema. Ini menunjukkan, misalnya, bahwa elemen /a/b
adalah array dan mengandung dari 1 hingga 10 elemen, atau elemen tersebut /a/c
adalah bilangan bulat. Anda dapat menemukan contoh XSD di sini .
Validasi file XML yang diberikan melalui XSD didukung oleh banyak bahasa . Misalnya, aplikasi .NET dapat meminta file XML dari sumber yang tidak tepercaya dan memeriksa apakah cocok dengan XSD ; kemudian, itu dapat menyimpannya ke database Microsoft SQL Server, yang pada gilirannya dapat berisi XSD dan melakukan pemeriksaan lagi (untuk memastikan bahwa setiap klien yang memiliki akses ke database mematuhi).
XSD bukan satu-satunya bahasa.
Jika Anda telah melakukan pengembangan web, Anda tentu pernah mendengar tentang Document Type Definition (DTD) - bahasa markup yang mendefinisikan struktur XML dan digunakan terutama dalam validasi konten terkait HTML. Meskipun tidak dapat melakukan semua hal yang dapat dilakukan XSD, seperti memastikan bahwa elemen atau atribut berisi angka integer, ia masih dapat melakukan banyak pemeriksaan struktur.
RELAX NG memiliki keuntungan relatif sederhana dibandingkan dengan bahasa lain dan dapat ditulis dalam bentuk yang lebih ringkas daripada XML.
Schematron adalah "bahasa validasi berbasis aturan lain untuk membuat pernyataan tentang ada atau tidaknya pola dalam pohon XML" ( Wikipedia ) dan menyajikan pendekatan yang sedikit berbeda, berdasarkan pada pernyataan XPath.
Inisiatif serupa untuk JSON tidak begitu populer (terutama, saya percaya, di dunia korporat Microsoft-sentris). Salah satu alasannya adalah bahwa JSON dimaksudkan untuk situasi di mana struktur data agak mendasar (misalnya dapat dinyatakan sebagai pohon, tanpa perlu atribut, misalnya) dan tidak perlu divalidasi. Contoh yang sangat baik adalah REST API yang digunakan oleh bahasa yang diketik secara dinamis:
/something/percentage
adalah angka aktual dan berada dalam kisaran 0,100).XML dapat diketik dengan aman, karena dimungkinkan dengan skema XSD untuk mendeklarasikan tipe data elemen. Dokumen yang divalidasi terhadap skema XSD dijamin sesuai dengan tipe yang diharapkan. Tetapi format XML tidak diperlukan untuk memiliki skema, jadi dokumen tidak secara otomatis mengetik aman hanya dengan menjadi XML.
Sebenarnya ada bahasa skema untuk JSON juga, jadi ketik aman JSON adalah mungkin. Tetapi ini jarang digunakan, jadi biasanya JSON bukan tipe yang aman.
Keamanan tipe bukanlah atribut absolut. Itu bukan boolean. Bahasa (dan XML dan JSON adalah bahasa) memungkinkan dan mencegah berbagai jenis kesalahan dan kesalahan. Misalnya, Anda dapat menyebutkan elemen yang salah. Tetapi Anda tidak dapat melewati elemen sintaksis yang diperlukan seperti tag penutup dan kawat gigi.
XML dan JSON biasa hampir sama-sama aman-tipe (atau tipe-tidak aman). String XML / JSON yang valid memiliki struktur sintaksis dan semantik tertentu, tetapi ini hampir tidak pernah cukup untuk aplikasi untuk bekerja dengannya. Aplikasi tidak sembarang suatu struktur tapi satu tertentu.
XML bersinar dengan XML Schema Definition (XSD) yang merupakan cara yang fleksibel dan kuat untuk memvalidasi dokumen XML yang diberikan terhadap suatu skema. Ini memberikan banyak jenis keamanan di bawah definisi yang diberikan di atas.
sumber