validator - xmlns, xmlns: xsi, xsi: schemaLocation y targetNamespace?
wsdl xsd validator (2)
Atributos relacionados con el espacio de nombres en XML y Esquema XML (XSD)
xmlnses parte de los espacios de nombres W3C en la Recomendación XML :El prefijo xmlns se usa solo para declarar enlaces de espacio de nombres y, por definición, está vinculado al nombre del espacio de nombres http://www.w3.org/2000/xmlns/ .
En su ejemplo , declara que
http://maven.apache.org/POM/4.0.0es el espacio de nombres predeterminado para los elementos en su proyecto Maven.xmlns:xsideclara un prefijo de espacio de nombres estándar (xsi) para un espacio de nombres central utilizado en XSD:http://www.w3.org/2001/XMLSchema-instanceEsquema XML: Structures también define varios atributos para uso directo en cualquier documento XML. Estos atributos están en un espacio de nombres diferente, que tiene el nombre de espacio de nombres http://www.w3.org/2001/XMLSchema-instance . Por brevedad, el texto y los ejemplos en esta especificación usan el prefijo xsi: para representar este último espacio de nombres; en la práctica, cualquier prefijo puede ser utilizado.
En su ejemplo , declara el enlace convencional del prefijo de espacio de nombres
xsiahttp://www.w3.org/2001/XMLSchema-instance, que configura correctamente el uso de los siguientes atributos:xsi:typepermite que una instancia XML asocie información de tipo de elemento directamente en lugar de a través de un XSD. Consulte ¿Cómo restringir el valor de un elemento XML utilizando xsi: type en XSD?En su ejemplo ,
xsi:typeno se usa; incluido aquí para completar con respecto axsi.xsi:nilpermite que un elemento vacío se considere válido cuando el XSD podría no haberlo permitido.En su ejemplo ,
xsi:nilno se usa; incluido aquí para completar con respecto axsi.xsi:schemaLocationyxsi:noNamespaceSchemaLocationproporcionan sugerencias al procesador XML sobre cómo asociar un XSD con un documento XML. Usexsi:schemaLocationcuando haya un espacio de nombres; usexsi:noNamespaceSchemaLocationcuando no haya espacio de nombres.En su ejemplo , hay un espacio de nombres, por lo que utiliza correctamente
xsi:schemaLocation, cuyos valores son pares de espacios de nombres separados por espacios y XRI de ubicación de XSD . Su ejemplo utiliza el espacio de nombres,http://maven.apache.org/POM/4.0.0, y los espacios de nombres son construcciones de nombres léxicos que no necesitan ser recuperables . Su ejemplo también utiliza la URI de ubicación de XSD,http://maven.apache.org/xsd/maven-4.0.0.xsd, que se puede recuperar como debería ser.Si su ejemplo no usara un espacio de nombres, usaría
xsi:noNamespaceSchemaLocation, cuyo valor es un único URI-ubicación-XSD que alude a la ubicación de la XSD deseada y que debería ser recuperable.
targetNamespacees un atributo en el elemento raízxs:schemade un XSD que especifica el espacio de nombres del elemento raíz de las instancias de documentos XML que XSD pretende gobernar. Debe coincidir con el espacio de nombres predeterminado o explícito de los elementos raíz de esos documentos XML.
Para el siguiente fragmento XML:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
¿Qué significan exactamente los atributos xmlns , xmlns:xsi y xsi:schemaLocation ? ¿Como están relacionados? Para que sirve
Y hay 2 URL en xsi:schemaLocation=
- http://maven.apache.org/POM/4.0.0 (sucede que es lo mismo que
xmlnspero da un error 404 cuando visita). - http://maven.apache.org/xsd/maven-4.0.0.xsd (este es un documento XSD real)
Si el 1 no existe, ¿por qué todavía ponerlo allí?
xmlns define el espacio de nombres predeterminado, que establece que todos los nodos dentro del nodo del proyecto y sin un alias de espacio de nombres estarán en http://maven.apache.org/POM/4.0.0 espacio de nombres de forma predeterminada.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" define el espacio de nombres - http://www.w3.org/2001/XMLSchema-instance , y le da un nuevo alias - xsi
xsi:schemaLocation es un atributo schemaLocation del espacio de nombres "http://www.w3.org/2001/XMLSchema-instance" . Contiene pares de valores: URI de espacio de nombres y enlace de ubicación de esquema para el archivo de esquema xsd de ese espacio de nombres. Puede contener muchos pares de valores: un archivo xsd para cada URI de espacio de nombres definido. Eso significa que el enlace http://maven.apache.org/xsd/maven-4.0.0.xsd contiene el esquema xsd con la definición de http://maven.apache.org/POM/4.0.0 espacio de nombres.