ceea ce este utilizarea de xsi:schemaLocation?

Văd că avem mai multe url's ca valoarea acestui atribut ca în primăvară:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

De ce este necesar și ceea ce este folosit pentru? Face Primăvară se duce la url-ul și valida? care este diferența între xmlns și xsi:schemaLocation?

Soluția

Java XML parser că primăvara foloseste va citi `schemaLocation valorile și încercați să le încărcați de pe internet, în scopul de a valida fișier XML. Primăvara, la rândul său, interceptează cei cererile de sarcină și servește versiuni din interiorul propriilor fișiere JAR.

Dacă omiteți `schemaLocation, atunci XML parser câștigat't știu unde pentru a obține schema în scopul de a valida config.

Comentarii (7)

O xmlns este un identificator unic în cadrul documentului - nu't trebuie să fie un URI la schema:

spații de nume XML oferă o metodă simplă pentru calificare element și nume de atribute utilizate în Extensible Markup Language documente, asociindu-le cu spații de nume identificate prin URI referințe.

xsi:schemaLocation ar trebui să dea un indiciu cu privire la efective schema de amplasare:

poate fi folosit într-un document pentru a oferi indicii cu privire la locația fizică a schemei de documente care pot fi utilizate pentru evaluare.

Comentarii (0)

Conform spec pentru localizarea Scheme

nu poate sau nu poate fi o schemă de accesat prin intermediul namespace nume... comunitate de utilizatori și/sau consumator/furnizor de acorduri pot stabili împrejurările în care a [încerca pentru a prelua un xsd din namespace url] este o decizie implicită de strategie

(vă mulțumim pentru a fi lipsite de ambiguitate, spec!)

și

în cazul în care un document de autor (umane sau nu) a creat un document cu o anumită schemă în vedere, și garantează că unele sau toate a documentului este conformă cu acea schemă, schemaLocation și noNamespaceSchemaLocation [atribute] sunt furnizate.

Deci, practic, cu specificarea doar un spațiu de nume XML "poate" fi încercat să fie validat de un xsd la acea locație (chiar dacă acesta nu dispune de un schemaLocationatribut), în funcție de "comunitate." Dacă specificați un anumitschemaLocation, atunci acesta este practic ceea ce înseamnă că documentul xml "trebuie" să fie conformă a spus xsd, deci "vă rugăm să validați-l" (ca am citit-o). Părerea mea este că dacă nu&#39;t face o schemaLocation " sau " noNamespaceSchemaLocation atribut doar "e't validat" de cele mai multe ori (bazate pe alte răspunsuri, apare java face în acest fel).

O altă problemă aici este că, de obicei, cu validare xsd în biblioteci java [ex: primavara config fișiere xml], dacă fișierele XML specifică un anumit schemaLocation xsd url-ul într-un fișier XML, ca xsi:schemaLocation="http://somewhere http://somewhere/something.xsd" de obicei în termen de o de dependență borcane se va *conțin* o copie a xsd, în secțiunea resurse, și de primăvară are o "cartografiere" capacitatea de a spune pentru a trata xsd ca în cazul hărților la url-ulhttp://somewhere/something.xsd` (astfel încât să nu ajung la web și descărcarea de fișiere, acesta există doar la nivel local). A se vedea, de asemenea, https://stackoverflow.com/a/41225329/32453 pentru ceva mai multe informatii.

Comentarii (0)

Dacă te duci în oricare dintre aceste locații, atunci veți găsi ceea ce este definit în aceste scheme. De exemplu, vă spune care este tipul de date al ini-metoda de cuvinte cheie valoare.

Comentarii (0)