attribute - xsd namespace
xmln: tns y targetNamespace (1)
Estoy viendo algunos documentos de esquema XSD que declaran un targetNamespace y un atributo xmlns:tns en su elemento de schema superior. Por ejemplo, la siguiente tomada desde aquí . También parecen tener el mismo valor de cadena. Entiendo el rol de targetNamespace pero, ¿qué hace xmlns:tns además de eso?
<?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">
...
Le permite referirse al espacio de nombres más adelante en el esquema. Por ejemplo, si declara un tipo con nombre y luego desea declarar también un elemento de ese tipo
<complexType name="someType">
<!-- ... -->
</complexType>
<element name="someElement" type="tns:someType" />
El simple hecho de decir type="someType" no funcionaría porque se someType al someType (no existente) en el espacio de nombres http://www.w3.org/2001/XMLSchema (el xmlns="..." de el archivo de esquema) en lugar del que se encuentra en el espacio de nombres http://www.example.org/Product .