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
.