web-dev-qa-db-fra.com

xmln: tns et targetNamespace

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">
...
24

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.

38
Ian Roberts