xsd - www - ¿Cuál es el uso de xsi: schemaLocation?
xsi namespace (4)
De acuerdo con la especificación para localizar Schemas
puede haber o no un esquema recuperable mediante el nombre del espacio de nombres ... Los acuerdos de la comunidad de usuarios y / o consumidores / proveedores pueden establecer circunstancias en las que [intentar recuperar un xsd desde la URL del espacio de nombres] es una estrategia predeterminada sensata
(gracias por ser inequívoco, ¡espec!)
y
en caso de que un autor del documento (humano o no) haya creado un documento con un esquema particular a la vista y garantice que parte o todo el documento se ajusta a ese esquema, se proporcionan schemaLocation y noNamespaceSchemaLocation [attributes].
Básicamente, al especificar solo un espacio de nombres, se intentará "validar" su XML para que se valide contra un xsd en esa ubicación (incluso si carece de un atributo schemaLocation
), dependiendo de su "comunidad". Si especifica un schemaLocation
específico, básicamente implica que el documento xml "debería" ser conforme con dicho xsd, por lo que "validarlo" (como lo leí). Supongo que si no hace un schemaLocation
o noNamespaceSchemaLocation
simplemente "no se valida" la mayoría de las veces (en función de las otras respuestas, parece que Java lo hace de esta manera).
Otra arruga aquí es que típicamente, con la validación xsd en las bibliotecas java [ej .: Spring config xml files], si sus archivos XML especifican una url xsd schemaLocation
particular en un archivo XML, como xsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
normalmente dentro de uno de sus xsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
de dependencia contendrá una copia de ese archivo xsd, en su sección de recursos, y Spring tiene una función de" mapeo "que indica tratar ese archivo xsd como si se mapeara al url http://somewhere/something.xsd
(para que nunca termine yendo a la web y descargando el archivo, solo existe localmente). Consulte también https://stackoverflow.com/a/41225329/32453 para obtener más información.
Veo que tenemos múltiples url como valor de este atributo como en primavera:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
¿Por qué es necesario y para qué se utiliza? ¿Spring va a la url y valida? ¿Cuál es la diferencia entre xmlns y xsi: schemaLocation?
El analizador XML de Java que utiliza la primavera leerá los valores de schemaLocation
e intentará cargarlos desde Internet para validar el archivo XML. Spring, a su vez, intercepta esas solicitudes de carga y sirve versiones desde dentro de sus propios archivos JAR.
Si omite el schemaLocation
, el analizador XML no sabrá dónde obtener el esquema para validar la configuración.
Si ingresa a cualquiera de esas ubicaciones, encontrará lo que se define en esos esquemas. Por ejemplo, le dice cuál es el tipo de datos del valor de las palabras clave del método ini-method.
Un xmlns
es un identificador único dentro del documento; no tiene que ser un URI para el esquema:
Los espacios de nombres XML proporcionan un método simple para calificar los nombres de elementos y atributos utilizados en documentos de lenguaje de marcado extensible al asociarlos con espacios de nombres identificados por referencias de URI.
Se supone que xsi:schemaLocation
da una pista sobre la ubicación real del esquema:
se puede utilizar en un documento para proporcionar sugerencias sobre la ubicación física de los documentos del esquema que pueden utilizarse para la evaluación.