Je vois des documents de schéma XSD qui déclarent à la fois un targetNamespace
et un xmlns:tns
attribut dans leur élément schema
supérieur. Par exemple. la suivante prise d'ici . Ils semblent également avoir la même valeur de chaîne. Je comprends le rôle de targetNamespace
mais qu'est-ce que xmlns:tns
en plus?
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Product"
xmlns:tns="http://www.example.org/Product"
elementFormDefault="qualified">
...
Il vous permet de vous référer à l'espace de noms plus loin dans le schéma. Par exemple, si vous déclarez un type nommé et souhaitez ensuite déclarer également un élément de ce type
<complexType name="someType">
<!-- ... -->
</complexType>
<element name="someElement" type="tns:someType" />
Dire simplement type="someType"
ne fonctionnerait pas car cela ferait référence au (inexistant) someType
dans le http://www.w3.org/2001/XMLSchema
espace de noms (le xmlns="..."
du fichier de schéma) plutôt que celui du http://www.example.org/Product
espace de noms.