Bahasa Melayu

Alat pembangun · Penukar sintaks

Keturunan XML daripada SGML: sebab ia mempunyai atribut, ruang nama dan DTD

· Latar belakang

xml format data keselamatan

XML atribut, awalan ruang nama dan teks bercampur di sebelah DOCTYPE yang ditolak
Ilustrasi vektor ToolAcre asal

Keanehan XML (atribut berbanding elemen, ruang nama, DTD, kandungan bercampur) masuk akal apabila anda tahu ia direka bentuk sebagai SGML yang dipermudahkan untuk dokumen, bukan untuk data. Siaran ini mengesan keturunan itu dan maksudnya apabila anda menukar XML kepada JSON.

Mengapakah format data ini mempunyai atribut? — pembangun menukar XML kepada JSON dan mencapai perbezaan JSON tidak pernah diperlukan

JSON mempunyai satu jenis sifat objek; XML membezakan atribut, elemen anak dan teks. ToolAcre memetakan perbezaan itu dengan atribut `@` dan kunci anak biasa. Perbezaannya dapat dilihat apabila elemen mempunyai kedua-dua `id="7"` dan anak `<id>`: kedua-duanya bertahan di bawah sifat berasingan.

Konvensyen ini menerangkan bentuk yang terhasil tanpa mendakwa bahawa atribut mempunyai satu peranan semantik universal. XML pengarang memilih mereka di bawah skema mereka sendiri. Penukar mengekalkan kategori nod yang boleh diperhatikan, bukan sebab perniagaan ia dipilih.

SGML dan tradisi dokumen — ISO 8879, penanda untuk penerbitan dan idea menandai teks dan bukannya mengekod rekod

Kandungan bercampur, kanak-kanak tersusun, atribut, ulasan dan arahan pemprosesan ialah ciri berorientasikan dokumen yang terdapat dalam sumber XML. Pelaksanaan menunjukkan pengendaliannya tetapi tidak mengandungi bukti untuk SGML kronologi, ISO sejarah penerbitan atau motivasi industri penerbitan.

Oleh itu, artikel bersempadan sumber bermula daripada tingkah laku boleh laku. Teks di sekeliling elemen kanak-kanak adalah lossy; komen dan arahan pemprosesan digugurkan; CDATA kekal ditanda. Fakta tersebut menjelaskan mengapa pepohon dokumen tidak sesuai dengan pepohon nilai JSON.

Ciri XML berorientasikan dokumen kelihatan dalam pelaksanaan, tanpa tuntutan sejarah SGML

Penghurai mengesahkan XML yang dibentuk dengan baik dan melaporkan baris dan lajur. Ia mengabaikan pengisytiharan dalam nilai yang terhasil dan mengekalkan lima entiti terbina dalam dan rujukan aksara angka sebagai teks yang dinyahkod. Ia tidak menetapkan matlamat kumpulan kerja atau akaun reka bentuk sepuluh prinsip.

Tuntutan sejarah memerlukan sumber editorial luaran, yang tugas ini tidak menambah. Meninggalkannya adalah lebih tepat daripada mencipta pematuhan atau asal daripada nama pergantungan.

Penghurai mengendalikan sintaks XML; bukti repositori tidak menetapkan sejarah reka bentuk 1998

Atribut menjadi kunci yang diawali dengan `@`; unsur mengekalkan nama mereka. Teks di dalam elemen berstruktur beralih ke `#text`, manakala elemen teks sahaja runtuh kepada rentetan. Ini memisahkan kategori struktur sejauh yang dibenarkan oleh model objek.

Menulis XML membalikkan konvensyen: `@id` menjadi atribut. Nama atribut atau unsur yang tidak sah ditolak dan bukannya dibersihkan. Keputusan itu menghalang pemetaan yang salah bentuk daripada menjadi munasabah XML dengan nama yang diubah secara senyap.

Atribut dan elemen kekal berbeza di bawah konvensyen @ ToolAcre

Awalan ruang nama dikekalkan secara verbatim dalam nama elemen dan atribut, termasuk pengisytiharan ruang nama. Mereka tidak diselesaikan, dialih keluar atau ditulis semula. Ini mengekalkan ejaan sumber tetapi bukan resolusi jenis sedar ruang nama.

Setiap DOCTYPE ditolak sebelum fast-xml-parser menerima dokumen. Topeng mengelakkan padanan palsu dalam ulasan dan CDATA. Ini menghalang permintaan entiti luaran, bacaan entiti fail tempatan dan serangan pengembangan entiti, tanpa pilihan untuk memintas penolakan.

Awalan ruang nama dikekalkan secara literal dan setiap DOCTYPE ditolak

Dalam `<p>before<b>bold</b>after</p>`, peletakan teks penting. ToolAcre mengesan kandungan bercampur, menyertai serpihan di bawah `#text` dan memberi amaran bahawa kedudukan mereka berbanding dengan kanak-kanak hilang. JSON sifat objek tidak boleh menghasilkan semula urutan tertib teks berselang-seli dan nod elemen.

Kanak-kanak dengan nama yang sama berulang menjadi tatasusunan, tetapi adik-beradik yang dinamakan berbeza kekal sebagai sifat. Kod yang memerlukan susunan dokumen yang tepat harus menggunakan perwakilan nod XML daripada menganggap objek yang ditukar sebagai lengkap.

Perkara ini tidak meliputi — XSLT, XPath dan XQuery, bahasa pemprosesan yang berkembang di sekitar XML

XSLT, XPath dan XQuery tidak diimport atau didedahkan. Panel juga tidak mengesahkan XSD, memproses DTD pengisytiharan atau membina objek domain ditaip. Ia adalah unjuran data dengan sempadan keselamatan dan kesetiaan yang jelas.

Bahasa pertanyaan atau transformasi boleh mengekalkan dan menavigasi susunan nod dengan cara penukaran nilai biasa ini tidak boleh. Pilih alat itu apabila ciri dokumen adalah sebahagian daripada kerja dan bukannya pembungkusan sampingan.

Bawa pulang: XML ialah format dokumen yang belajar untuk membawa data — dan cara panel penukar Sintaks menunjukkan perkara yang kekal dalam terjemahannya ke dalam JSON

Model data boleh diperhatikan XML termasuk perbezaan yang tidak terdapat pada JSON. ToolAcre menandakan atribut, CDATA dan teks berstruktur, mengekalkan awalan ruang nama, menggugurkan nod bukan data dan menolak DOCTYPE. Setiap pilihan boleh dilihat dan diuji.

Gunakan panel untuk mengetahui perkara yang kekal dalam unjuran, bukan sebagai pihak berkuasa sejarah atau pemproses XML penuh. Apabila memesan, skema atau semantik ruang nama penting, simpan pokok asal dan gunakan alat XML yang dibina khas.

Keselamatan dan kesetiaan juga bersilang di sempadan DOCTYPE. Menolak pengisytiharan menghalang pemprosesan entiti, tetapi memadamkannya daripada dokumen warisan sewenang-wenangnya boleh mengubah rujukan entiti atau andaian pengesahan. Jika anda memiliki sumber itu, gantikan entiti yang diperlukan dengan teks selamat yang jelas dan sahkan dokumen yang terhasil. Jika anda tidak memilikinya, gunakan aliran kerja XML yang diluluskan dan bukannya melemahkan penolakan atau mengemukakan penukaran separa sebagai kandungan asal.