Pour le fragment XML suivant:
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0
http://maven.Apache.org/xsd/maven-4.0.0.xsd">
Qu'est-ce que le xmlns
, xmlns:xsi
, et xsi:schemaLocation
attributs exactement signifient? Comment sont-ils liés? Quel est le :
pour?
Et il y a 2 URL dans le xsi:schemaLocation=
xmlns
mais cela donne une erreur 404 lors de la visite.)Si 1 n'existe pas, pourquoi le mettre quand même?
xmlns
fait partie de espaces de noms W3C dans la recommandation XML :
Le préfixe xmlns n’est utilisé que pour déclarer des liaisons d’espace de nom et est par définition lié au nom d’espace de nom http://www.w3.org/2000/xmlns / .
Dans votre exemple , il déclare que http://maven.Apache.org/POM/4.0.0
est l’espace de noms par défaut des éléments de votre projet Maven.
xmlns:xsi
déclare un préfixe d’espace de nom standard (xsi
) pour un espace de nom principal utilisé dans XSD: http://www.w3.org/2001/XMLSchema-instance
XML Schema: Structures définit également plusieurs attributs à utiliser directement dans tout document XML. Ces attributs se trouvent dans un espace de noms différent, qui porte le nom d'espace de nom http://www.w3.org/2001/XMLSchema-instance . Par souci de concision, le texte et les exemples de cette spécification utilisent le préfixe xsi: pour désigner ce dernier espace de noms; en pratique, n'importe quel préfixe peut être utilisé.
Dans votre exemple , il déclare la liaison conventionnelle du préfixe xsi
de l'espace de noms à http://www.w3.org/2001/XMLSchema-instance
, qui configure correctement l’utilisation des attributs suivants:
xsi:type
permet à une instance XML d'associer des informations de type d'élément directement plutôt que via un fichier XSD. Voir Comment restreindre la valeur d'un élément XML à l'aide de xsi: type in XSD?
Dans votre exemple , xsi:type
N'est pas utilisé; inclus ici pour la complétude concernant xsi
.
xsi:nil
_ permet à un élément vide d'être considéré comme valide alors que le XSD n'aurait peut-être pas été autorisé autrement.
Dans votre exemple , xsi:nil
N'est pas utilisé; inclus ici pour la complétude concernant xsi
.
xsi:schemaLocation
et xsi:noNamespaceSchemaLocation
_ fournit des indications au processeur XML sur la manière d’associer un XSD à un document XML. Utilisation xsi:schemaLocation
quand il y a un espace de noms; utilisation xsi:noNamespaceSchemaLocation
quand il n'y a pas d'espace de noms.
Dans votre exemple , il y a un espace de noms, vous utilisez donc correctement xsi:schemaLocation
, dont les valeurs sont des paires séparées par des espaces de espace de noms et XSD-emplacement-URI. Votre exemple utilise l’espace de nom, http://maven.Apache.org/POM/4.0.0
, et les espaces de noms sont des constructions de nommage lexicales qui ne doit pas être rétrivable. Votre exemple utilise également l’URI XSD-location-URI, http://maven.Apache.org/xsd/maven-4.0.0.xsd
, qui est rétrivable comme il se doit.
Si votre exemple n'utilisait pas d'espace de nom, utilisez xsi:noNamespaceSchemaLocation
, dont la valeur est un simple XSD-emplacement-URI qui indique l'emplacement du fichier XSD souhaité et qui devrait être récupérable.
targetNamespace
est un attribut sur le xs:schema
élément racine d’un XSD spécifiant l’espace de nom de l’élément racine des instances de document XML que le XSD est censé régir. Il doit correspondre à l'espace de nom par défaut ou explicite des éléments racine de ces documents XML.
xmlns
définit un espace de noms par défaut, qui indique que tous les noeuds du projet et sans alias d'espace de nom seront dans http://maven.Apache.org/POM/4.0.0
espace de noms par défaut.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
définit l’espace de nom - http://www.w3.org/2001/XMLSchema-instance
, et lui donne un nouvel alias - xsi
xsi:schemaLocation
est un attribut schemaLocation
de "http://www.w3.org/2001/XMLSchema-instance"
espace de noms. Il contient des paires de valeurs - l'URI d'espace de nom et le lien d'emplacement de schéma pour le fichier xsd-schema de cet espace de nom. Il peut contenir plusieurs paires de valeurs - un fichier xsd pour chaque URI d'espace de nom défini. Cela signifie lien http://maven.Apache.org/xsd/maven-4.0.0.xsd
contient un schéma xsd avec la définition de http://maven.Apache.org/POM/4.0.0
espace de noms.