Formatir XML

Validasi dan format XML. Penyorotan sintaks. Gratis, selamanya.
XML Masukan
XML yang Diformat
XML Masukan

Pribadi dan aman

Semuanya terjadi di browser Anda. File Anda tidak pernah menyentuh server kami.

Sangat cepat

Tanpa mengunggah, tanpa menunggu. Konversi saat Anda meletakkan file.

Benar-benar gratis

Tidak perlu akun. Tidak ada biaya tersembunyi. Tidak ada trik ukuran file.

XML (Extensible Markup Language) telah ada selama lebih dari 25 tahun, tetapi masih tertanam dalam infrastruktur perangkat lunak modern: dari dokumen Office dan tata letak Android hingga SOAP API, feed RSS, file konfigurasi, dan alur kerja pelestarian digital. Ini tidak lagi populer—mahkota itu telah beralih ke JSON—tetapi XML tetap penting di mana pun struktur yang kaku, metadata yang kaya, dan interoperabilitas jangka panjang penting. Tujuan artikel ini adalah menjelaskan XML secara menyeluruh: dari mana asalnya, bagaimana cara kerjanya, bagaimana kita memproses dan memvalidasinya, bagaimana perbandingannya dengan format yang lebih baru, dan bagaimana menggunakannya dengan aman dan baik di tahun 2025 dan seterusnya.

1. Apa itu XML sebenarnya

XML adalah bahasa markup yang disederhanakan untuk merepresentasikan data dan dokumen terstruktur menggunakan elemen dan atribut bersarang. Ini didefinisikan oleh Extensible Markup Language (XML) 1.0 Recommendation dari World Wide Web Consortium, yang menentukan sintaks untuk dokumen XML yang terbentuk dengan baik dan menjelaskan bagaimana prosesor harus menanganinya.

Spesifikasi XML menggambarkan XML sebagai subset terbatas dari SGML (Standard Generalized Markup Language), dirancang untuk lebih sederhana untuk diimplementasikan sambil mempertahankan kekuatan inti SGML: merepresentasikan teks terstruktur dengan markup eksplisit.

Beberapa properti utama yang membedakan XML:

  • Berbasis teks dan sadar Unicode. Dokumen XML adalah teks biasa dan bergantung pada set karakter Unicode/ISO 10646, yang membuatnya portabel dan independen dari bahasa.
  • Mendeskripsikan diri sendiri. Nama tag dan atribut membawa makna. Tidak diperlukan skema terpisah untuk memahami struktur secara dasar (meskipun skema membuatnya jauh lebih kuat).
  • Hierarkis. Struktur pohon XML memetakan langsung ke data, dokumen, dan hierarki konfigurasi yang bersarang.
  • Dapat diperluas. Anda menciptakan tag dan kosakata Anda sendiri; XML sendiri tidak menetapkan set elemen yang diizinkan.

2. Sejarah singkat: dari SGML ke XML ke web modern

Akar XML terletak pada SGML, standar ISO dari tahun 1980-an yang banyak digunakan dalam penerbitan dan dokumentasi teknis. Pada pertengahan 1990-an, HTML web (yang sendiri berbasis SGML) ada di mana-mana tetapi terlalu terbatas dan erat terkait dengan presentasi.

Sekitar 1996–1997, kelompok kerja termasuk Jon Bosak, Tim Bray, C. M. Sperberg-McQueen, James Clark, dan lainnya mulai merancang subset SGML yang lebih sederhana dan ramah web yang dapat diuraikan dengan mudah dan andal. Rekomendasi XML 1.0 pertama diterbitkan pada tahun 1998, dan XML dengan cepat menjadi fondasi bagi banyak standar dan protokol web awal, termasuk SOAP, WSDL, SVG, XSLT, dan banyak kosakata khusus industri.

Kemudian, XML 1.1 menyempurnakan beberapa kasus tepi penanganan karakter dan karakter kontrol, tetapi XML 1.0 tetap menjadi varian dominan dalam praktik.

3. Sintaks XML inti: dokumen yang terbentuk dengan baik

Spesifikasi XML 1.0 mendefinisikan sintaks yang tepat untuk dokumen yang terbentuk dengan baik. Minimal, dokumen XML yang terbentuk dengan baik:

  • Memiliki tepat satu elemen akar.
  • Menggunakan tag awal dan akhir yang cocok.
  • Bersarang elemen dengan benar (tidak ada tag yang tumpang tindih).
  • Menggunakan tanda kutip untuk nilai atribut.
  • Menggunakan karakter dan pengkodean yang sah.

Dokumen kecil tetapi valid mungkin terlihat seperti ini:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>George</to>
  <from>Adam</from>
  <message>Hello XML!</message>
</note>

Deklarasi XML adalah opsional, tetapi ini adalah cara konvensional untuk menyatakan versi dan pengkodean karakter. Elemen dokumen <note> adalah akar tunggal. Node teks, elemen, atribut, komentar, instruksi pemrosesan, dan referensi entitas bersama membentuk struktur pohon yang dijelaskan dalam spesifikasi.

XML juga membedakan antara dokumen yang terbentuk dengan baik dan valid:

  • Dokumen yang terbentuk dengan baik mengikuti aturan sintaks.
  • Dokumen yang valid selain itu sesuai dengan DTD atau skema yang membatasi struktur dan kontennya.

4. Namespace: mencampur kosakata dengan aman

Ketika kosakata XML berkembang, tabrakan nama menjadi masalah: satu kosakata mungkin menggunakan <title> untuk judul buku; yang lain untuk jabatan. Untuk menghindari konflik, XML memperkenalkan namespace, didefinisikan dalam Rekomendasi W3C Namespaces in XML.

Sebagai contoh:

<book xmlns:dc="http://purl.org/dc/elements/1.1/">
  <dc:title>XML in Depth</dc:title>
</book>

Di sini, dc:title dibedakan dengan aman dari elemen <title> lainnya dengan mengikat awalan dc ke URI namespace Dublin Core. Namespace sangat penting dalam ekosistem XML modern: XSD, XSLT, SOAP, RSS, dan Office Open XML semuanya sangat bergantung padanya.

5. Validasi: DTD, XML Schema, dan lainnya

5.1 DTD

Spesifikasi XML asli menyertakan Document Type Definitions (DTD) sebagai cara kanonik untuk mendefinisikan struktur dokumen yang diizinkan—elemen, atribut, entitas yang diizinkan, dll. DTD kompak dan terintegrasi dengan baik ke dalam prolog XML, tetapi mereka terbatas: mereka menggunakan sintaks non-XML, memiliki pengetikan yang lemah, dan kesulitan dengan namespace.

5.2 XML Schema (XSD)

Untuk mengatasi keterbatasan DTD, W3C menstandarisasi XML Schema Definition (XSD), sekarang di versi 1.1, di XML Schema Definition Language (XSD) 1.1 Part 1: Structures. XSD sendiri ditulis dalam XML, mendukung namespace, dan menyediakan pengetikan yang kaya (string, angka, tanggal, daftar, union), batasan kemunculan, dan model konten yang kompleks.

Bahasa skema lain ada—seperti RELAX NG dan Schematron—tetapi XSD tetap menjadi standar de facto di banyak lingkungan perusahaan dan yang digerakkan oleh standar.

5.3 Mengapa validasi penting

Validasi mengubah XML dari teks terstruktur menjadi kontrak antar sistem. Sebagai contoh:

  • Spesifikasi pesan keuangan mendefinisikan skema yang ketat untuk instruksi pembayaran.
  • Standar seperti Office Open XML dan RSS memformalkan format dokumen mereka dengan skema.
  • Alat build dan konfigurasi memvalidasi file seperti pom.xml atau web.config untuk menangkap kesalahan lebih awal.

6. Memproses XML: DOM, SAX, dan streaming

XML sendiri hanyalah teks. Untuk melakukan sesuatu yang berguna, perangkat lunak harus menguraikannya ke dalam beberapa model. Dua model pemrosesan klasik adalah DOM dan SAX.

6.1 DOM: pohon dalam memori

Spesifikasi DOM Level 3 Core W3C mendefinisikan model objek yang netral bahasa yang mewakili seluruh pohon dokumen, dengan node untuk elemen, atribut, teks, komentar, dan lainnya. DOM ramah akses acak, mudah untuk dipertimbangkan, dan didukung secara luas di perpustakaan, tetapi memerlukan seluruh dokumen untuk disimpan dalam memori.

6.2 SAX: streaming berbasis peristiwa

Simple API for XML (SAX) adalah API berbasis peristiwa yang menguraikan XML sebagai aliran dan memicu callback untuk peristiwa seperti "mulai elemen" atau "akhir elemen". Ini dijelaskan di situs proyek SAX dan dalam tutorial Oracle SAX.

SAX memproses dokumen dalam satu lintasan tanpa menyimpan seluruh pohon, membuatnya sangat efisien memori dan ideal untuk aliran besar seperti log, pemrosesan pesan, atau transformasi batch. API streaming berbasis pull seperti StAX mengikuti prinsip serupa.

7. XPath, XSLT, dan XQuery: menanyakan dan mengubah XML

7.1 XPath

XPath adalah bahasa kueri kompak untuk mengalamati bagian dokumen XML menggunakan ekspresi seperti jalur seperti /bookstore/book[1]/title. Versi terbaru, didefinisikan dalam XPath 3.1, memperluas model untuk juga menangani data JSON melalui peta dan array dan didukung oleh seperangkat besar fungsi standar.

XPath tertanam di banyak alat: XSLT, XQuery, asersi XML Schema, dan API di bahasa pemrograman populer.

7.2 XSLT

XSL Transformations (XSLT) adalah bahasa deklaratif untuk mengubah XML menjadi format lain—XML, HTML, teks, atau bahkan JSON dalam prosesor modern. Rekomendasi XSLT 3.0 W3C mendefinisikan sistem berbasis template yang bergantung pada XPath untuk pencocokan pola dan seleksi.

Stylesheet sendiri adalah dokumen XML yang menggunakan namespace XSLT. XSLT 3.0 menambahkan kemampuan streaming untuk dokumen besar dan integrasi yang ditingkatkan dengan JSON dan peta.

7.3 XQuery

XQuery adalah bahasa kueri lengkap untuk repositori XML, didefinisikan dalam XQuery 3.1. Ini dirancang untuk menanyakan dan mengubah koleksi data XML, sering disimpan dalam database XML asli atau toko dokumen, dan menggunakan ekspresi FLWOR (for, let, where, order by, return) untuk menghasilkan set hasil yang kuat.

Bersama-sama, XPath, XSLT, dan XQuery membentuk toolkit yang kaya untuk bekerja dengan XML dalam skala besar, terutama dalam konteks penerbitan, humaniora digital, e-government, dan integrasi data.

8. Penggunaan XML di dunia nyata saat ini

Bahkan ketika JSON mendominasi API web, XML masih tertanam dalam di banyak sistem dan standar.

8.1 Format dokumen dan standar

  • Office Open XML (OOXML). Dokumen Microsoft Office modern (.docx, .xlsx, .pptx) adalah paket ZIP dari file XML yang didefinisikan oleh ECMA-376 Office Open XML dan standar ISO terkait.
  • Pelestarian digital. Institusi seperti Library of Congress memperlakukan XML (terutama XML 1.0) sebagai format yang stabil dan ramah pelestarian untuk merepresentasikan konten digital terstruktur.
  • Markup akademik dan teknis. TEI, DocBook, dan kosakata khusus domain lainnya berbasis XML, memungkinkan markup semantik dan pengarsipan jangka panjang.

8.2 Pesan dan layanan web

  • SOAP. Spesifikasi SOAP 1.2 W3C mendefinisikan amplop berbasis XML untuk pertukaran pesan terstruktur melalui protokol seperti HTTP.
  • RSS dan sindikasi. Spesifikasi RSS 2.0 mendefinisikan format XML untuk sindikasi feed, masih banyak digunakan untuk blog, berita, dan feed produk.

8.3 Konfigurasi dan sistem build

  • Maven POM. Project Object Model (pom.xml) Apache Maven adalah file XML yang menjelaskan metadata proyek, dependensi, plugin, dan konfigurasi build, didokumentasikan dalam Referensi POM dan Pengenalan POM.
  • Konfigurasi XML Spring Framework. Aplikasi Spring tradisional sering mendefinisikan bean dan wiring dalam file applicationContext.xml atau beans.xml, pendekatan yang masih dijelaskan dalam dokumentasi referensi Spring dan tutorial seperti Java Guides.
  • Konfigurasi .NET. ASP.NET dan WCF bergantung pada file web.config dan app.config yang diformat XML untuk mengkonfigurasi endpoint, binding, dan perilaku, seperti yang dijelaskan dalam dokumentasi web.config Microsoft dan panduan konfigurasi WCF.

Lebih umum, XML tetap menjadi format konfigurasi umum ketika validasi dan tooling penting, terutama dengan skema yang didukung XSD.

8.4 Mobile dan tata letak UI

Di Android, tata letak UI biasanya dideklarasikan dalam file XML di bawah res/layout. Dokumentasi Google menjelaskan bahwa Anda menulis tata letak menggunakan kosakata XML Android untuk menyarangkan tampilan, sangat mirip dengan HTML, dengan setiap file tata letak berisi satu elemen akar.

9. XML vs JSON vs YAML

Pada tahun 2025, JSON jelas telah memenangkan kontes popularitas untuk API web: satu artikel perbandingan baru-baru ini memperkirakan JSON sekitar 87% dari respons API web, dengan XML di 9% dan YAML di 4%.

9.1 Kekuatan XML

Dibandingkan dengan JSON dan YAML, XML bersinar ketika Anda membutuhkan:

  • Skema yang kaya dan validasi yang kuat. XSD memungkinkan Anda menentukan tipe kompleks, batasan, dan hubungan, dan memiliki ekosistem alat dan validator yang matang.
  • Konten campuran dan dokumen. XML dibangun untuk dokumen yang berorientasi teks di mana markup dan teks saling berselang; JSON dan YAML lebih baik untuk data yang murni terstruktur.
  • Metadata yang dalam dan ekstensibilitas. Namespace dan skema memungkinkan dokumen yang toleran versi di mana elemen dan atribut opsional dapat ditambahkan tanpa merusak konsumen yang lebih lama.

9.2 Kekuatan JSON dan YAML

JSON lebih sederhana untuk dibaca dan ditulis, memetakan secara alami ke objek JavaScript, dan lebih kecil di kabel. Tutorial sering menunjukkan bahwa JSON menghilangkan tag akhir, lebih ringkas, dan dapat diuraikan secara native di browser tanpa parser XML khusus.

YAML menekankan keterbacaan manusia untuk konfigurasi dan populer di alat DevOps seperti Kubernetes dan Ansible, meskipun kompleksitasnya dan sensitivitas indentasi dapat memperkenalkan kesalahan.

9.3 Memilih format yang tepat

Panduan modern cenderung:

  • Gunakan JSON untuk sebagian besar API web dan komunikasi klien-server.
  • Gunakan YAML untuk konfigurasi yang berpusat pada pengembang di lingkungan cloud/DevOps.
  • Gunakan XML ketika Anda membutuhkan dokumen yang digerakkan oleh skema, konten campuran, ekosistem XML yang ada (SOAP, OOXML, WCF, tata letak Android), atau pengarsipan jangka panjang di mana standardisasi dan tooling sudah matang.

10. Keamanan: XXE dan jebakan XML lainnya

Fleksibilitas XML datang dengan tepi yang tajam, terutama di sekitar entitas eksternal dan DTD. XML External Entity (XXE) Prevention Cheat Sheet OWASP mendokumentasikan bagaimana kerentanan XXE memungkinkan penyerang membaca file lokal, melakukan pemalsuan permintaan sisi server, atau menyebabkan penolakan layanan dengan mengeksploitasi ekspansi entitas.

Vektor serangan umum meliputi:

  • Entitas eksternal yang merujuk ke sumber daya lokal atau jarak jauh.
  • Entitas parameter dalam DTD yang berkembang menjadi payload besar.
  • Pengambilan DTD melalui jaringan yang tidak tepercaya.

Panduan mitigasi umumnya merekomendasikan:

  • Menonaktifkan DTD dan entitas eksternal di parser sebanyak mungkin.
  • Menggunakan pengaturan parser yang diperkuat atau perpustakaan aman yang mengikuti rekomendasi OWASP.
  • Memvalidasi terhadap skema tanpa mengaktifkan fitur berisiko.

Pertimbangan keamanan lainnya termasuk dokumen yang terlalu besar (kehabisan sumber daya), injeksi XPath/XQuery dalam sistem yang membangun kueri dari input pengguna, dan file konfigurasi berbasis XML yang salah konfigurasi yang mengarah pada eskalasi hak istimewa atau eksekusi kode.

11. Desain dan praktik terbaik untuk XML

Digunakan dengan bijak, XML tetap menjadi cara yang bersih dan kuat untuk memodelkan data dan dokumen. Beberapa panduan praktis:

  • Model pohon yang jelas. Rancang XML Anda di sekitar pohon konseptual yang stabil (misalnya, <invoice><lineItems> <lineItem>), daripada secara langsung mencerminkan skema relasional.
  • Pilih elemen vs atribut dengan sengaja. Gunakan elemen untuk konten dan struktur utama; gunakan atribut untuk metadata dan flag.
  • Gunakan namespace dari awal. Bahkan untuk kosakata kecil, menetapkan namespace (misalnya, xmlns="https://example.com/ns/invoice") menghindari migrasi yang menyakitkan nanti.
  • Dukung format Anda dengan skema. Berikan XSD (atau bahasa skema lain) dan perlakukan sebagai bagian dari kontrak publik Anda. Gunakan validasi skema di CI dan di titik integrasi.
  • Jaga agar dapat diperiksa oleh manusia. Pencetakan yang bagus dan komentar membantu debugging, konfigurasi, dan pemeliharaan jangka panjang.
  • Pisahkan data dari presentasi. Gunakan XML untuk struktur dan makna dan ubah menjadi HTML, PDF, atau format lain dengan XSLT atau alat lainnya.
  • Pilih model pemrosesan yang sesuai. Untuk dokumen kecil hingga menengah dan kueri kompleks, DOM + XPath/XSLT mungkin ideal; untuk aliran yang sangat besar atau lingkungan yang terbatas, gunakan SAX, StAX, atau pemrosesan berbasis peristiwa.
  • Perkuat parser. Ikuti panduan pencegahan XXE OWASP dan praktik keamanan terbaik bahasa Anda saat menguraikan input yang tidak tepercaya.

12. Peran masa depan XML

Dalam pengembangan web sehari-hari, XML sebagian besar telah menyerahkan panggung utama kepada JSON dan YAML. Tetapi di banyak domain—integrasi perusahaan, standar dokumen, manajemen konfigurasi, pelestarian digital, dan sistem warisan—menulis ulang semuanya ke format yang lebih baru tidak layak atau tidak diinginkan.

Badan standar seperti W3C dan Ecma masih mempertahankan spesifikasi berbasis XML seperti XML 1.x, XML Schema, XPath, XSLT, XQuery, SOAP, dan OOXML, dan institusi seperti Library of Congress terus memperlakukan XML sebagai kuda pekerja arsip.

Bagi pengembang, ini berarti Anda kemungkinan akan berinteraksi dengan XML setiap kali Anda menyentuh file Office, tata letak Android, banyak tumpukan Java perusahaan, konfigurasi .NET, layanan SOAP/WSDL lama, atau pertukaran data yang digerakkan oleh standar. Memahami sintaks, namespace, skema, dan model pemrosesan XML tetap menjadi keterampilan yang berharga, terutama jika Anda bekerja dalam integrasi, infrastruktur, atau sistem yang berumur panjang.

XML mungkin tidak lagi menjadi bintang API web modern, tetapi masih merupakan fondasi yang kokoh, ditentukan dengan baik, dan sangat terinstrumentasi untuk sejumlah besar perangkat lunak. Belajar secara mendalam membayar setiap kali Anda membutuhkan skema yang kuat, dokumen yang kaya, atau menavigasi lanskap luas standar berbasis XML yang ada.

Pertanyaan yang Sering Diajukan

Apa itu XML?

XML (eXtensible Markup Language) adalah bahasa markup yang mendefinisikan aturan untuk mengkodekan dokumen dalam format yang dapat dibaca oleh manusia dan mesin.

Mengapa saya perlu memformat XML?

Memformat XML membuatnya dapat dibaca oleh manusia dengan menambahkan indentasi dan jeda baris yang tepat.

Apa yang dilakukan validasi XML?

Validasi XML memeriksa apakah dokumen XML Anda terbentuk dengan baik (benar secara sintaksis) dan secara opsional apakah sesuai dengan skema.

Apakah data XML saya aman?

Ya! Semua pemformatan dan validasi XML terjadi sepenuhnya di browser Anda. Data Anda tidak pernah meninggalkan komputer Anda.

Bisakah saya mengunggah file XML?

Ya, Anda dapat mengunggah file XML menggunakan tombol 'Buka file'.

Apa kesalahan XML yang umum?

Kesalahan XML yang umum meliputi: tag yang tidak ditutup, tag pembuka dan penutup yang tidak cocok, karakter tidak valid.

Bisakah saya menyalin XML yang diformat?

Ya, gunakan tombol 'Salin' untuk menyalin XML yang diformat ke clipboard Anda.