with validator validate validar online con archivo xml xsd xml-namespaces xsd-validation xml-validation

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)

  • xmlns es 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.0 es el espacio de nombres predeterminado para los elementos en su proyecto Maven.

  • xmlns:xsi declara un prefijo de espacio de nombres estándar ( xsi ) para un espacio de nombres central utilizado en XSD: http://www.w3.org/2001/XMLSchema-instance

    Esquema 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 xsi a http://www.w3.org/2001/XMLSchema-instance , que configura correctamente el uso de los siguientes atributos:

    • xsi:type permite 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:type no se usa; incluido aquí para completar con respecto a xsi .

    • xsi:nil permite que un elemento vacío se considere válido cuando el XSD podría no haberlo permitido.

      En su ejemplo , xsi:nil no se usa; incluido aquí para completar con respecto a xsi .

    • xsi:schemaLocation y xsi:noNamespaceSchemaLocation proporcionan sugerencias al procesador XML sobre cómo asociar un XSD con un documento XML. Use xsi:schemaLocation cuando haya un espacio de nombres; use xsi:noNamespaceSchemaLocation cuando 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.

  • targetNamespace es un atributo en el elemento raíz xs:schema de 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=

  1. http://maven.apache.org/POM/4.0.0 (sucede que es lo mismo que xmlns pero da un error 404 cuando visita).
  2. 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.