Tukar XML kepada Markdown: Tag Keluar, Hierarki Kekal
XML ada satu tabiat yang tiada pada format lain: ia menulis nama setiap elemen dua kali. Sekali untuk membuka, sekali untuk menutup. Tambah awalan namespace, tambah atribut, tambah inden yang menjadikannya boleh dibaca, dan lazimnya anda berakhir dengan fail yang tagnya lebih berat daripada kandungan yang dibalutnya. Katalog produk dengan 200 item boleh menjangkau ribuan baris tetapi maklumat sebenarnya cuma sekitar satu setengah muka surat.
Menukar XML kepada Markdown mengekalkan pokoknya dan membuang istiadatnya.
Penyarangan elemen menjadi aras tajuk, adik-beradik yang berulang menjadi senarai atau jadual, dan
kepungan tag lenyap. Muat naik fail .xml di atas dan anda akan menerimanya semula dalam
beberapa saat — percuma, tanpa mendaftar, had 50 MB, tiada apa-apa disimpan.
Pokok Elemen Bertukar Menjadi Apa
Penukaran menyusuri dokumen dan menterjemahkan setiap binaan:
- Elemen bekas menjadi tajuk. Elemen yang mempunyai elemen anak tetapi tiada teks sendiri ialah seksyen. Kedalamannya dalam pokok menetapkan aras tajuk, jadi skema enterprise lima aras dalam sampai sebagai dokumen dengan rangka yang kemas.
- Elemen daun menjadi nilai berlabel.
<author>Ursula Le Guin</author>terbaca sebagai author: Ursula Le Guin. Satu nama dan bukannya dua, tiada kepungan. - Adik-beradik berulang menjadi senarai atau jadual — dibincangkan di bawah, kerana di situlah kebanyakan nilainya.
- Kandungan bercampur dikekalkan inline. Ini kes di mana teks dan elemen anak
berselang-seli, seperti dalam
<para>See the <ref>appendix</ref> for details</para>. Penukar yang naif memecahkannya kepada serpihan dan ayatnya hilang. Ia sepatutnya keluar sebagai satu baris yang boleh dibaca dengan rujukannya utuh. - Komen, processing instruction dan deklarasi XML dibuang. Tiada satu pun daripadanya kandungan.
Atribut: Bahagian yang Orang Hilangkan Tanpa Sedar
XML menyimpan data di dua tempat — antara tag, dan di dalam tag itu sendiri. Teks elemen memang
jelas. Atribut mudah terlepas pandang, dan banyak pengekstrakan naif menggugurkannya secara senyap.
Tidak mengapa apabila ia metadata seperti id="4471". Bencana apabila ia muatan
sebenar.
Dan itu perkara biasa. <price currency="GBP">49.99</price> tiada makna tanpa
mata wangnya. Format konfigurasi lebih teruk — Maven, Ant, Spring, manifes Android dan fail
app.config .NET kerap meletakkan hampir segala-galanya dalam atribut, jadi
pengekstrakan yang hanya mengambil teks elemen daripada salah satu fail itu memulangkan dokumen
yang betul dari segi struktur tetapi hampir kosong sepenuhnya. Kalau anda menukar fail konfigurasi
dan outputnya nampak terlalu pendek, inilah sebabnya.
Dalam output Markdown, atribut sepatutnya duduk bersebelahan elemen yang dimilikinya dan bukan lenyap — dipaparkan sebagai penerang ringkas di sebelah nilai, atau sebagai lajur tambahan apabila elemen itu sebahagian daripada set berulang. Semak skrin pertama output berbanding sumber sebelum anda mempercayakannya dengan apa-apa yang penting. Sepuluh saat mengimbas lebih baik daripada perbualan yang mengelirukan dengan model kemudian.
Adik-beradik Berulang Menjadi Jadual
Bentuk terbaik XML ialah satu parent yang memegang banyak anak seiras: elemen
<item> dalam suapan RSS, elemen <row> dalam eksport pangkalan
data, rekod <employee> dalam longgokan HR. Setiap anak mempunyai sub-elemen yang
sama dalam susunan yang sama.
Semua itu runtuh menjadi satu jadual paip Markdown. Nama sub-elemen menjadi pengepala lajur, setiap rekod menjadi satu baris, dan pengulangan tag — yang dalam fail mentah bermakna menulis setiap nama medan dua kali bagi setiap rekod — berlaku tepat sekali sahaja, dalam pengepala. Inilah pengurangan tunggal terbesar yang anda akan lihat daripada mana-mana penukaran XML, dan itulah sebab memilih Markdown berbanding teks rata untuk apa sahaja yang berbentuk rekod.
Ia merosot apabila rekod tidak seragam — elemen pilihan wujud pada sesetengah anak tetapi tidak pada yang lain, atau satu anak mengandungi blok bersarang yang tiada pada yang lain. Anda akan dapat lompang, atau bahagian bersarang itu tersorong ke bawah jadual. Kalau data anda memang berbentuk segi empat, eksport ke CSV dan gunakan penukar CSV kepada Markdown untuk jadual yang lebih bersih. Dan kalau sumbernya berbentuk JSON dan bukannya berbentuk tag, penukar JSON kepada Markdown mengendalikan masalah yang sama dari arah bertentangan.
Namespace, Envelope dan Hingar Enterprise
XML dunia sebenar jarang bersih. Tiga perkara mengembungkannya melebihi kandungan maklumatnya:
- Namespace. Deklarasi
xmlnsdan awalan sepertisoap:,xsi:,atom:ataudc:wujud untuk mengelakkan perlanggaran nama antara vokabulari. Bagi pembaca, ia tiada makna. Awalan dibuang semasa penukaran, jadi<dc:creator>terbaca sebagai creator. Satu-satunya masa untuk ambil kisah ialah apabila dua namespace benar-benar menggunakan nama lokal yang sama untuk perkara berbeza — jarang, tetapi semak kalau anda menggabungkan vokabulari. - Envelope SOAP. Respons web service membalut bahagian yang anda mahu dalam
EnvelopedanBody, kerap kali ditambah header yang penuh dengan token keselamatan dan data penghalaan. Penukaran memberikan anda dokumen di mana muatannya akhirnya kelihatan dan bukannya tertanam empat aras ke bawah dalam boilerplate yang terpaksa anda langkau dalam kepala. - Rujukan skema.
xsi:schemaLocation, deklarasi DTD dan atribut pengesahan menerangkan bagaimana fail itu patut disemak, bukan apa yang dikatakannya. Hingar untuk semua tujuan di sini.
Suapan RSS dan Atom duduk di hujung yang mesra. Ia seragam, cetek, dan bertukar menjadi senarai entri bertarikh yang bersih — cara munasabah untuk menghulurkan sebulan catatan blog kepada model. Perhatikan bahawa deskripsi suapan biasanya mengandungi HTML yang di-escape di dalam XML, yang sampai sebagai markup dalam output anda; salurkan ia melalui penukar HTML kepada Markdown kalau anda mahukannya bersih, atau gunakan Web2Txt untuk mengambil halaman itu dengan betul.
Bila Anda Patut Kekalkan XML Mentah
Jawapan terus terang, memandangkan banyak halaman yang menjual penukar tidak akan memberikannya: model membaca XML dengan baik. Ia meleret, tetapi tidak taksa dan diwakili dengan sangat meluas dalam data latihan. Menukar ialah pilihan, bukan keperluan.
Kekalkan mentah apabila anda meminta ungkapan XPath, stylesheet XSLT, parser, atau skema — apa sahaja yang memerlukan model menghasilkan semula nama elemen yang tepat, awalan namespace dan perbezaan atribut-lawan-elemen. Markdown sengaja melicinkan butiran-butiran itu. Tampal serpihan fail sebenar yang mewakili sebaliknya.
Tukar apabila seorang manusia perlu membacanya, apabila anda cuba memahami skema yang asing dengan cepat, atau apabila fail mentah itu kebanyakannya tag dan konteks anda terhad. Itu kemenangan yang nyata. Selain itu, cita rasa masing-masing.
XML yang Anda Tak Sedar Ialah XML
Cukup banyak format yang anda sangka binari sebenarnya XML yang dizipkan. Namakan semula
.docx kepada .zip, buka, dan anda akan jumpa document.xml
berserta timbunan fail relationship. EPUB kisah yang sama: dokumen kandungan XHTML dan manifes
pakej XML dalam satu zip. Begitu juga .pptx, dan begitu juga .xlsx.
Anda boleh membuka zipnya dan menukar XML itu secara manual. Jangan — markup dalamannya penuh dengan run penggayaan, penjejakan semakan dan arahan susun atur yang menenggelamkan teks. Gunakan Word kepada Markdown atau EPUB kepada Markdown, yang tahu bahagian mana XML itu kandungan dan bahagian mana arahan pemformatan. Halaman ini untuk XML yang diserahkan kepada anda sebagai XML: suapan, eksport, respons API, konfigurasi, pertukaran data.
Soalan Lazim
Bagaimana nak tukar XML kepada Markdown?
Muat naik fail .xml di atas dan struktur dokumennya dipetakan ke Markdown — hierarki elemen menjadi aras tajuk, elemen adik-beradik yang berulang menjadi senarai atau jadual. Percuma, 50 MB setiap fail, tanpa mendaftar. Ia mengekalkan bentuk dokumen, dan itulah bezanya dengan meratakannya kepada teks.
Adakah hierarki elemen menjadi aras tajuk?
Ya, itulah pemetaannya — elemen yang bersarang menjadi tajuk yang lebih dalam. Ia berfungsi baik untuk XML berbentuk dokumen seperti DocBook, TEI atau eksport artikel, di mana penyarangan itu benar-benar mencerminkan seksyen dalam seksyen. Ia berfungsi buruk untuk XML berbentuk data di mana penyarangan mencerminkan skema pangkalan data, dan anda dapat dua belas aras tajuk untuk menerangkan satu rekod.
Apa jadi pada awalan namespace?
Ia digugurkan daripada output. Tajuk yang berbunyi dc:title atau tei:head tidak memberitahu apa-apa kepada manusia dan lebih kurang lagi kepada model, jadi awalan dibuang dan nama elemen lokal digunakan. Kalau dua namespace dalam dokumen yang sama mentakrifkan nama lokal yang sama, ia akan bergabung — jarang, tetapi berbaloi disemak kalau tajuk kelihatan berulang.
Bergunakah ini untuk menukar DocBook atau DITA?
Untuk lelaran pertama, ya. Prosa, seksyen, senarai dan penekanan inline terbawa dengan baik kerana format itu menandakannya secara eksplisit. Profil bersyarat, rujukan kandungan, entity include dan penyelesaian rujukan silang tidak selamat — itulah bahagian yang menjadikan format itu berbaloi digunakan, dan tiada penukar generik yang boleh menyelesaikannya.
Yang mana patut saya pilih untuk korpus XML yang besar?
Teks, dalam kebanyakan kes. Kalau anda membina embedding merentas ribuan rekod, sintaks tajuk ialah overhed yang berulang pada setiap chunk tanpa manfaat retrieval. Markdown layak dipilih apabila seorang manusia atau model akan membaca satu dokumen dan perlu tahu di mana letaknya seksyen-seksyen.
Teks Biasa Sebagai Ganti, dan Alat-alat yang Lain
Kalau anda tidak mahu struktur langsung — teks untuk embedding, indeks carian, atau kiraan token serendah mungkin — gunakan XML kepada teks biasa, yang mengeluarkan kandungan dari antara tag dan tidak meninggalkan apa-apa lagi. Togol format di bahagian atas halaman ini bertukar antara kedua-duanya dan mengekalkan fail anda termuat, jadi membandingkan kedua-dua output cuma memerlukan satu klik. Pembilang token di bawah output memberitahu anda kos setiap satu.
Kalau XML itu satu fail dalam sebuah projek — konfigurasi, deskriptor build, fixture — menukarnya bersendirian memberikan model data tanpa kod di sekelilingnya. Penukar repositori GitHub kepada teks dan penukar direktori lokal membolehkan anda mengambil XML itu bersama pengguna-penggunanya, dan itu biasanya unit yang lebih berguna. File2Txt mengendalikan semua format yang disokong di satu tempat, dan panduan menyediakan fail untuk LLM merangkumi prinsip-prinsip umumnya.
Repo2Txt dibina dan diselenggara oleh v12hero, pembangun bebas yang membina aplikasi natif dan web yang mengutamakan privasi.