Je vois que nous avons plusieurs URL comme valeur de cet attribut comme au printemps:
<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">
Pourquoi est-il nécessaire et à quoi sert-il? Est-ce que Spring accède à l'URL et valide? quelle est la différence entre xmlns et xsi: schemaLocation?
An
xmlns
est un identifiant unique dans le document - il n'est pas nécessaire qu'il s'agisse d'un URI du schéma:xsi:schemaLocation
est censé donner un indice quant à l'emplacement réel du schéma:la source
Selon les spécifications de localisation des schémas
(merci d'être sans ambiguïté, spec!)
et
Donc, fondamentalement, en spécifiant juste un espace de noms, votre XML «pourrait» être tenté d'être validé par rapport à un xsd à cet emplacement (même s'il manque un
schemaLocation
attribut), en fonction de votre «communauté». Si vous spécifiez un spécifiqueschemaLocation
, cela implique essentiellement que le document xml "devrait" être conforme audit xsd, donc "veuillez le valider" (tel que je l'ai lu). Je suppose que si vous ne faites pas unschemaLocation
ounoNamespaceSchemaLocation
attribuez pas simplement "n'est pas validé" la plupart du temps (sur la base des autres réponses, il semble que java le fasse de cette façon).Une autre difficulté ici est que, typiquement, avec la validation xsd dans les bibliothèques java [ex: spring config xml files], si vos fichiers XML spécifient une
schemaLocation
URL xsd particulière dans un fichier XML, commexsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
généralement dans l'un de vos fichiers jars de dépendance, il contiendra une copie de ce fichier xsd, dans sa section de ressources, et spring a une capacité de "mappage" indiquant de traiter ce fichier xsd comme s'il était mappé à l'urlhttp://somewhere/something.xsd
(donc vous ne finirez jamais par aller sur le Web et télécharger le fichier, il existe juste localement). Voir également https://stackoverflow.com/a/41225329/32453 pour un peu plus d'informations.la source
Si vous allez dans l'un de ces emplacements, vous trouverez ce qui est défini dans ces schémas. Par exemple, il vous indique quel est le type de données de la valeur des mots clés de la méthode ini.
la source