xmlns, xmlns: xsi, xsi:schemaLocation, et targetNamespace?
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">
que signifient exactement les attributs xmlns
, xmlns:xsi
et xsi:schemaLocation
? Comment sont-ils liés? Pourquoi :
?
et il y a 2 URLs dans le xsi:schemaLocation=
- http://maven.apache.org/POM/4.0.0 (il se trouve être le même que le
xmlns
, mais il donne une erreur 404 lors de la visite.) - http://maven.apache.org/xsd/maven-4.0.0.xsd (ceci est une vraie XSD doc)
Si 1 n'existe pas, pourquoi le mettre encore là?
2 réponses
attributs relatifs à L'espace de noms dans le schéma XML et XML (XSD)
-
xmlns
fait partie des espaces de noms du W3C dans la recommandation XML :le préfixe xmlns n'est utilisé que pour déclarer les reliures d'espaces de noms et est par définition lié à l'espace de noms http://www.w3.org/2000/xmlns / .
dans votre exemple , il déclare que
http://maven.apache.org/POM/4.0.0
est le namespace par défaut pour les éléments de votre projet Maven. -
xmlns:xsi
déclare un préfixe d'espace de noms standard (xsi
) pour un espace de noms de base utilisé dans XSD:http://www.w3.org/2001/XMLSchema-instance
schéma XML: Structures définit également plusieurs attributs pour une utilisation directe dans tout document XML. Ces attributs sont dans un espace de noms différent, qui a le nom d'espace de noms 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: dans la 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 établit 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 par L'intermédiaire d'un XSD. Voir comment restreindre la valeur D'un XML élément utilisant xsi: tapez XSD?dans votre exemple ,
xsi:type
n'est pas utilisé; inclus ici pour l'exhaustivité concernantxsi
. -
xsi:nil
permet à un élément vide d'être considéré comme valide alors que XSD ne l'aurait pas permis autrement.dans votre exemple ,
xsi:nil
n'est pas utilisé; inclus ici pour l'exhaustivité concernantxsi
. -
xsi:schemaLocation
etxsi:noNamespaceSchemaLocation
donnez des conseils au processeur XML sur la façon d'associer un XSD à un document XML. Utilisezxsi:schemaLocation
lorsqu'il y a un espace de noms; utilisezxsi:noNamespaceSchemaLocation
lorsqu'il n'y a pas d'espace de noms.dans votre exemple , il y a un espace de noms, donc vous utilisez correctement
xsi:schemaLocation
, dont les valeurs sont séparées par des espaces paires de espace de noms "1519600920 et XSD-location-URI . Votre exemple utilise l'espace de noms,http://maven.apache.org/POM/4.0.0
, et les espaces de noms sont des constructions de nommage lexicales que n'ont pas besoin d'être récupérables . Votre exemple utilise également XSD-location-URI,http://maven.apache.org/xsd/maven-4.0.0.xsd
, qui est récupérable comme il se doit.si votre exemple n'utilisait pas d'espace de noms, vous utiliseriez
xsi:noNamespaceSchemaLocation
, dont la valeur est un simple XSD-location-URI qui indique l'emplacement du XSD prévu et qui devrait être récupérable.
-
-
targetNamespace
est un attribut de la racinexs:schema
élément d'un XSD qui spécifie l'espace de noms de l'élément racine des instances de document XML le XSD est destiné à gouverner. Il doit correspondent à l'espace de nom par défaut ou explicite de la racine de ces documents XML élément.
xmlns
définit namespace par défaut, qui stipule que tous les noeuds dans le noeud de projet et sans namespace-alias seront dans http://maven.apache.org/POM/4.0.0
namespace par défaut.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
définit namespace - 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"
namespace. Il contient des paires de valeurs-URI d'espace de noms et le lien de localisation de schéma pour le fichier XSD-schema de cet espace de noms. Il peut contenir plusieurs paires de valeurs - un fichier xsd pour chaque URI d'espace de noms défini. Cela signifie que le lien http://maven.apache.org/xsd/maven-4.0.0.xsd
contient le schéma xsd avec la définition de l'espace de noms http://maven.apache.org/POM/4.0.0
.