Sebuah XML validator memeriksa apakah dokumen XML mengikuti aturan struktural yang didefinisikan oleh spesifikasi XML 1.0 (Rekomendasi W3C, edisi kelima). Minimal, validator XML ini memastikan bahwa dokumen bersifat well-formed: memiliki satu elemen root, semua tag bersarang dan tertutup dengan benar, nilai atribut dikutip, dan karakter yang dipesan menggunakan entitas bawaan. Dokumen yang gagal salah satu pemeriksaan ini akan menyebabkan parser XML melempar error, bukan diam-diam menghasilkan output yang salah.
Perbedaan antara well-formedness dan validitas sangat penting. Dokumen XML yang well-formed memenuhi aturan sintaks dari spesifikasi XML itu sendiri. Dokumen XML yang valid melangkah lebih jauh: ia juga memenuhi batasan yang didefinisikan dalam skema eksternal, seperti DTD (Document Type Definition), XSD (XML Schema Definition), atau skema Relax NG. Alat ini memeriksa well-formedness — langkah validasi pertama dan paling umum. Tanpanya, tidak ada proses hilir yang dapat berjalan.
Validasi XML menangkap kesalahan sebelum sampai ke produksi. Tag yang tidak tertutup, nama elemen yang tidak cocok, ampersand yang tidak di-escape, dan atribut duplikat adalah kesalahan paling umum dalam XML yang diedit manual. Parser di berbagai bahasa menangani kesalahan ini secara berbeda: sebagian gagal diam-diam, sebagian mengembalikan hasil parsial, dan sebagian melempar exception. Menjalankan XML melalui validator terlebih dahulu menghilangkan ambiguitas ini dan memberi Anda jawaban lulus-atau-gagal yang jelas beserta detail lokasi error.
Mengapa Menggunakan XML Validator Online?
Mendeteksi kesalahan sintaks XML sejak dini mencegah kegagalan berantai pada aplikasi yang mengonsumsi data XML. Sebuah validator berbasis browser memberi Anda umpan balik langsung tanpa perlu menginstal alat baris perintah atau mengonfigurasi plugin IDE.
⚡
Deteksi error instan
Tempel XML Anda dan dapatkan hasil lulus/gagal beserta lokasi error yang tepat dalam waktu kurang dari satu detik. Tidak perlu menunggu pipeline build atau menyiapkan alat CLI.
🔒
Pemrosesan mengutamakan privasi
Semua parsing dan validasi terjadi di browser Anda menggunakan DOMParser API. XML Anda tidak pernah meninggalkan perangkat Anda dan tidak pernah dikirim ke server mana pun.
🎯
Pelaporan error yang tepat
Lihat baris dan kolom persisnya di mana validasi gagal, beserta deskripsi errornya. Ini lebih cepat daripada membaca stack trace dari parser di kode aplikasi Anda.
📋
Tidak perlu akun atau instalasi
Buka halaman, tempel XML Anda, dan lihat hasilnya. Tidak ada formulir pendaftaran, tidak ada perangkat lunak desktop, tidak ada ekstensi browser.
Kasus Penggunaan XML Validator
Pengembangan frontend
Validasi file SVG dan fragmen XHTML sebelum disematkan ke komponen React atau Vue. Satu tag yang tidak tertutup dalam SVG dapat merusak seluruh pohon komponen.
Rekayasa backend
Periksa respons SOAP, payload XML-RPC, dan feed RSS/Atom dari API pihak ketiga. Validasi respons mentah sebelum menulis logika deserialisasi untuk menghindari debugging exception parser saat runtime.
DevOps dan CI/CD
Pastikan file Maven pom.xml, .csproj, atau skrip build Ant bersifat well-formed setelah diedit secara otomatis. Kesalahan sintaks dalam konfigurasi build dapat menggagalkan seluruh pipeline dengan pesan error yang membingungkan.
QA dan pengujian
Validasi fixture XML dan file expected-output sebelum menjalankan pengujian integrasi. Fixture yang malformed menyebabkan false negative yang membuang waktu debugging.
Rekayasa data
Periksa ekspor XML dari database, portal data terbuka pemerintah, dan pipeline ETL. Memvalidasi struktur sebelum menulis kueri XPath atau transformasi XSLT mencegah kerja sia-sia pada data sumber yang rusak.
Belajar XML
Mahasiswa yang mengikuti tutorial XML atau XSLT dari W3C dapat menempel file latihan ke validator untuk memeriksa sintaks mereka. Pesan error menunjuk langsung ke masalah, sehingga mempercepat proses belajar.
Aturan Well-Formedness XML
Spesifikasi XML 1.0 mendefinisikan sekumpulan aturan sintaks yang ketat. Sebuah dokumen harus memenuhi semua aturan tersebut agar dianggap well-formed. Tabel di bawah mencantumkan setiap aturan, apa yang dipersyaratkan, dan contoh yang benar. Sebagian besar kesalahan validasi dapat ditelusuri kembali ke salah satu aturan ini.
Aturan
Persyaratan
Contoh yang Benar
Single root element
Document must have exactly one root
<root>...</root>
Matched tags
Every opening tag needs a closing tag
<p>text</p>
Proper nesting
Tags must close in reverse order of opening
<a><b>...</b></a>
Quoted attributes
Attribute values must be in single or double quotes
<el attr="val"/>
Entity escaping
Reserved characters must use predefined entities
< > & " '
Case sensitivity
Tag names are case-sensitive: <A> is not </a>
<Book>...</Book>
No duplicate attributes
Each attribute name must appear once per element
<el a="1" b="2"/>
Valid XML declaration
If present, must be the very first line
<?xml version="1.0"?>
Well-Formed vs. Valid DTD vs. Valid Skema
Validasi XML memiliki tiga tingkat. Alat ini memeriksa yang pertama (well-formedness), yang merupakan prasyarat bagi dua tingkat lainnya.
Well-formed
Memenuhi aturan sintaks XML 1.0: satu root, tag yang cocok, atribut dikutip, nesting yang benar. Setiap parser XML memeriksa ini terlebih dahulu. Jika dokumen tidak well-formed, ia sama sekali bukan XML.
Valid DTD
Memenuhi Document Type Definition yang menentukan elemen dan atribut mana yang diizinkan, urutan, dan kardinalitasnya. DTD dideklarasikan secara inline atau melalui referensi DOCTYPE. Validasi DTD umum digunakan pada sistem lama dan XHTML.
Valid skema (XSD / Relax NG)
Memenuhi XML Schema Definition (XSD) atau skema Relax NG. Skema ini mendukung tipe data (integer, date, URI), namespace, dan model konten yang kompleks. Validasi XSD menjadi standar dalam layanan web SOAP, data kesehatan HL7, dan integrasi enterprise.
Contoh Kode
Validasi XML secara terprogram dalam berbagai bahasa. Setiap contoh memeriksa well-formedness dan mengembalikan pesan error jika dokumen malformed.
import xml.etree.ElementTree as ET
def validate_xml(xml_string):
try:
ET.fromstring(xml_string)
return True, "Well-formed XML"
except ET.ParseError as e:
return False, str(e)
valid, msg = validate_xml('<root><item>hello</item></root>')
# → (True, "Well-formed XML")
valid, msg = validate_xml('<root><item>hello</root>')
# → (False, "mismatched tag: line 1, column 27")
# With lxml — also supports XSD schema validation
from lxml import etree
schema = etree.XMLSchema(etree.parse('schema.xsd'))
doc = etree.fromstring(b'<root><item>hello</item></root>')
schema.validate(doc) # → True or False
Go
package main
import (
"encoding/xml"
"fmt"
"strings"
)
func validateXML(raw string) error {
decoder := xml.NewDecoder(strings.NewReader(raw))
for {
_, err := decoder.Token()
if err != nil {
if err.Error() == "EOF" {
return nil
}
return err
}
}
}
func main() {
err := validateXML("<root><item>hello</item></root>")
fmt.Println(err) // → <nil>
err = validateXML("<root><item>hello</root>")
fmt.Println(err) // → XML syntax error: unexpected end element </root>
}
CLI (xmllint)
# Check well-formedness (part of libxml2, pre-installed on macOS/Linux)
xmllint --noout document.xml
# Exit code 0 = valid, non-zero = errors printed to stderr
# Validate against an XSD schema
xmllint --noout --schema schema.xsd document.xml
# Validate against a DTD
xmllint --noout --dtdvalid schema.dtd document.xml
# Validate from stdin
echo '<root><unclosed>' | xmllint --noout -
# → :1: parser error : Premature end of data in tag unclosed line 1
Pertanyaan yang Sering Diajukan
Apa perbedaan antara well-formed dan valid dalam XML?
XML yang well-formed mengikuti aturan sintaks spesifikasi XML 1.0: satu elemen root, tag yang cocok dan bersarang dengan benar, atribut dikutip. XML yang valid melangkah lebih jauh dengan juga memenuhi DTD atau skema XSD yang mendefinisikan elemen, atribut, dan tipe data yang diizinkan. Sebuah dokumen bisa well-formed tetapi tidak valid jika sintaksnya benar namun melanggar batasan skema.
Bisakah dokumen XML valid tetapi tidak well-formed?
Tidak. Well-formedness adalah prasyarat untuk validitas. Jika dokumen melanggar aturan sintaks XML mana pun (tag tidak tertutup, atribut tidak dikutip, dll.), parser tidak dapat membangun pohon darinya, sehingga validasi skema bahkan tidak bisa dimulai. Perbaiki kesalahan well-formedness terlebih dahulu, baru periksa terhadap skema.
Apa saja kesalahan validasi XML yang paling umum?
Lima kesalahan paling sering terjadi adalah: tag tidak tertutup atau tidak cocok, ampersand yang tidak di-escape dalam konten teks, nilai atribut yang tidak dikutip, elemen root yang hilang, dan penulisan huruf yang salah dalam nama tag (XML bersifat case-sensitive). Sebagian besar disebabkan oleh pengeditan manual XML atau penggabungan string dalam kode alih-alih menggunakan serializer XML yang tepat.
Apakah validasi XML sama dengan linting XML?
Keduanya saling tumpang tindih tetapi tidak identik. Validasi memeriksa apakah dokumen memenuhi spesifikasi XML (well-formedness) atau skema (DTD/XSD). Linting biasanya melangkah lebih jauh dengan juga menandai masalah gaya: indentasi yang tidak konsisten, deklarasi namespace yang tidak digunakan, atau nilai atribut default yang redundan. xmllint dari libxml2 menggabungkan keduanya: --noout memeriksa well-formedness, sementara --schema menambahkan validasi XSD.
Bagaimana validasi XML berbeda dari validasi JSON?
XML memiliki tata bahasa yang lebih ketat dan kompleks dibanding JSON. XML membutuhkan tag pembuka/penutup yang cocok, mendukung atribut, namespace, konten campuran (teks dan elemen bersama-sama), serta memiliki beberapa bahasa skema (DTD, XSD, Relax NG, Schematron). Validasi JSON memeriksa kesesuaian kurung kurawal/siku, kunci yang dikutip, dan penempatan koma. JSON Schema ada tetapi lebih sederhana dari XSD. Dokumen XML biasanya 2-3 kali lebih besar dari JSON yang setara untuk data yang sama.
Apakah alat ini memvalidasi terhadap skema XSD atau DTD?
Alat ini hanya memeriksa well-formedness: memastikan XML Anda mengikuti aturan sintaks spesifikasi XML 1.0. Ia tidak memvalidasi terhadap DTD atau skema XSD eksternal. Untuk validasi skema, gunakan xmllint --schema di baris perintah, atau lxml di Python yang mendukung XSD dan Relax NG.
Mengapa XML saya gagal validasi padahal terlihat benar?
Penyebab tidak terlihat yang paling umum adalah: byte order mark (BOM) sebelum deklarasi XML, karakter yang tersasar setelah tag root penutup, ampersand yang tidak di-escape dalam konten teks (gunakan & sebagai gantinya), atau prefiks namespace yang digunakan tetapi tidak pernah dideklarasikan. Salin XML Anda ke hex viewer atau jalankan melalui xmllint --noout untuk mendapatkan byte offset error yang tepat.