Validator XSD

Dokumen XML yang well-formed tetap bisa salah: kehilangan elemen wajib, memakai tipe data salah untuk sebuah atribut, atau elemen berada dalam urutan yang keliru. XSD (XML Schema Definition) menjelaskan persis seperti apa dokumen seharusnya. Validator ini memasangkan XML Anda dengan XSD-nya, menjalankan validator W3C XML Schema, dan mendaftar setiap pelanggaran beserta baris, elemen, dan batasan spesifik yang dilanggar.

Cara memvalidasi XML terhadap XSD

  1. 1

    Tempel kedua file

    XML di satu sisi, skema XSD di sisi lain. Beberapa skema bisa ditempel bersamaan.

  2. 2

    Jalankan validasi

    Parser mencocokkan elemen, atribut, dan tipe terhadap deklarasi skema.

  3. 3

    Tinjau kesalahan

    Setiap pelanggaran menampilkan jalur elemen, batasan yang diharapkan, dan nilai aktual.

  4. 4

    Perbaiki dan validasi ulang

    Edit di tempat dan jalankan ulang tanpa memuat ulang.

Apa yang dicek XSD

  • Nama elemen dan kardinalitas: wajib, opsional, kemunculan min/maks.
  • Urutan elemen: sequence, choice, all.
  • Keberadaan dan tipe atribut: wajib vs opsional, nilai default, nilai tetap.
  • Tipe data: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, kustom.
  • Batasan: panjang min/maks, enumerasi, pola regex, nilai min/maks.
  • Integritas referensial: xs:key, xs:keyref, xs:unique untuk batasan antar-elemen.

Kesalahan tipikal

Kesalahan Batasan XSD
Elemen wajib <email> hilang minOccurs="1"
Terlalu banyak elemen <phone> maxOccurs="2" terlampaui
Nilai “abc” bukan integer valid type="xs:integer"
Nilai “[email protected]” tidak cocok pola xs:pattern pada xs:string
Elemen tidak berurutan xs:sequence
Elemen tidak dikenal <foo> Tidak dideklarasikan dalam skema
Key ganda Pelanggaran xs:unique

Memilih antara XSD dan alternatif

  • XSD: standar W3C, bertele-tele, kuat, didukung luas. Pilihan utama untuk XML enterprise.
  • RELAX NG: sintaks lebih sederhana, sama ekspresifnya. Populer dalam format dokumentasi (DocBook, TEI).
  • Schematron: berbasis aturan, menjalankan asersi XPath terhadap dokumen. Bagus untuk aturan bisnis di luar struktur.
  • DTD: lebih tua, jauh kurang ekspresif. Masih dipakai untuk kompatibilitas historis HTML.

Banyak proyek memakai XSD untuk struktur dan Schematron untuk aturan antar-bidang yang kompleks.

Jebakan umum

  • Namespace harus cocok. Jika XSD mendeklarasikan targetNamespace="http://example.com" tetapi XML tidak memakai namespace itu, validasi gagal dengan “no declaration found”.
  • xs:anyType bukan jalan pintas ajaib. Ia cocok dengan apa saja tetapi tidak memberi validasi sama sekali.
  • Nilai default berlaku hanya saat atribut tidak ada. Nilai kosong eksplisit (attr="") tidak mendapat default.
  • Penanganan whitespace bervariasi menurut tipe. xs:string mempertahankannya, xs:token memadatkannya, xs:normalizedString mengganti tab/newline dengan spasi.

Alur debugging

  1. Validasi tanpa skema dulu (cek well-formedness). Perbaiki kesalahan parse apa pun.
  2. Lalu validasi terhadap skema.
  3. Fokus pada kesalahan pertama. Validator XSD kadang menghasilkan kesalahan berantai; yang pertama biasanya paling bisa ditindaklanjuti.
  4. Gunakan XPath untuk menemukan elemen yang bermasalah dalam dokumen besar.

Pertanyaan yang Sering Diajukan

Tidak. Tempel secara terpisah, atau rujuk skema melalui xsi:schemaLocation dalam XML. Sebagian besar tool mendukung kedua pendekatan.

Ya. Saat elemen dari namespace berbeda muncul, masing-masing butuh skema sendiri. Tempel semuanya; validator memuat semuanya.

XSD 1.0. Mesin libxml yang mendasarinya tidak mengimplementasikan XSD 1.1, sehingga fitur khusus 1.1 seperti asersi, tipe kondisional, dan open content tidak diberlakukan.

Tidak. XML dan skema Anda dikirim ke server hanya untuk menjalankan validasi pada permintaan tunggal itu; keduanya tidak disimpan atau dicatat setelahnya.

Alat Terkait

Alat ini tersedia dalam bahasa lain