Menurut spesifikasi untuk menemukan Skema
mungkin ada atau tidak ada skema yang dapat diambil melalui nama namespace ... Komunitas pengguna dan / atau perjanjian konsumen / penyedia dapat menetapkan keadaan di mana [mencoba untuk mengambil xsd dari url namespace] adalah strategi default yang masuk akal
(Terima kasih karena tidak ambigu, spek!)
dan
dalam hal penulis dokumen (manusia atau tidak) membuat dokumen dengan skema tertentu dalam pandangan, dan menjamin bahwa beberapa atau semua dokumen sesuai dengan skema itu, schemaLocation dan noNamespaceSchemaLocation [atribut] disediakan.
Jadi pada dasarnya dengan menetapkan hanya namespace, XML Anda "mungkin" diupayakan divalidasi terhadap xsd di lokasi itu (bahkan jika tidak memiliki schemaLocation
atribut), tergantung pada "komunitas" Anda. Jika Anda menentukan spesifik schemaLocation
, maka pada dasarnya ini menyiratkan bahwa dokumen xml "harus" sesuai dengan kata xsd, jadi "tolong validasi" (seperti yang saya baca). Dugaan saya adalah bahwa jika Anda tidak melakukan schemaLocation
atau noNamespaceSchemaLocation
atribut itu hanya "tidak divalidasi" sebagian besar waktu (berdasarkan jawaban lain, tampaknya java melakukannya dengan cara ini).
Kerut lain di sini adalah bahwa biasanya, dengan validasi xsd di pustaka java [mis: spring config xml files], jika file XML Anda menentukan schemaLocation
url xsd tertentu dalam file XML, seperti xsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
biasanya dalam salah satu toples ketergantungan Anda, ia akan berisi salinan dari file xsd itu, di bagian sumber dayanya, dan pegas memiliki kemampuan "pemetaan" yang mengatakan untuk memperlakukan file xsd itu seolah-olah memetakan ke url http://somewhere/something.xsd
(jadi Anda tidak akan pernah pergi ke web dan mengunduh file, itu hanya ada secara lokal). Lihat juga https://stackoverflow.com/a/41225329/32453 untuk info lebih lanjut.