Para aquellos que todavía están confundidos, tenga en cuenta estos tres XSDs. Todos ellos definen un tipo global y una definición de elemento global que lo hace referencia.
Primero, una xsd como la publicada arriba. Se utiliza el prefijo 'xsd' para el espacio de nombres de esquema, y un espacio de nombres predeterminado para el targetNamespace:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns="http://example.com/">
<xsd:element name="aGlobalElement" type="aGlobalType"/>
<xsd:simpleType name="aGlobalType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
Ahora mismo xsd, pero la definición y el uso de un prefijo de espacio de nombres para el espacio de nombres:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns:tns="http://example.com/">
<xsd:element name="aGlobalElement" type="tns:aGlobalType"/>
<xsd:simpleType name="aGlobalType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
... y, por último, una versión que utiliza un espacio de nombres predeterminado en lugar de 'xsd' para el espacio de nombres del esquema XML:
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns:tns="http://example.com/">
<element name="aGlobalElement" type="tns:aGlobalType"/>
<simpleType name="aGlobalType">
<restriction base="string"/>
</simpleType>
</schema>
la mayoría de los autores de esquema elegir la primera o la última, porque si el recurso predeterminado del espacio de nombres está disponible, entonces también podríamos usarlo para algo.
podría carecer de un cierto conocimiento sobre este tema, pero no podía ser la respuesta: xmlns es el espacio de nombres predeterminado para ESTE documento (el documento de esquema), mientras que targetNamespace es el espacio de nombre que valida este documento de esquema? Y de esta manera, ¿xmlns y targetNamespace son dos cosas diferentes? – Vering
@Vering mis resultados de la prueba coinciden con su primera oración sí, el targetNamespace definitivamente se refiere al documento que el esquema valida. La presencia de targetNamespace parece necesitar también la presencia de 'xmlns' o 'xmlns: xxx'. De hecho, puede combinar muchos 'xmlns: xxx', 'xmlns: yyy' y 'xmlns' juntos y todavía se valida. – ifelsemonkey