simple namespace attribute xsd xml-namespaces

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 .