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?
Un
xmlns
es un identificador único dentro del documento; no tiene que ser un URI para el esquema:xsi:schemaLocation
se supone que da una pista sobre la ubicación real del esquema:fuente
Según la especificación para localizar esquemas
(¡Gracias por ser inequívoco, especificación!)
y
Básicamente, al especificar solo un espacio de nombres, su "XML" podría intentarse para ser validado contra un xsd en esa ubicación (incluso si carece de un
schemaLocation
atributo), dependiendo de su "comunidad". Si especifica un específicoschemaLocation
, entonces básicamente implica que el documento xml "debería" ser compatible con dicho xsd, así que "valídelo" (mientras lo leo). Mi conjetura es que si no haces un atributoschemaLocation
onoNamespaceSchemaLocation
simplemente simplemente "no está validado" la mayoría de las veces (según las otras respuestas, parece que Java lo hace de esta manera).Otra arruga aquí es que, por lo general, con la validación xsd en las bibliotecas de Java [ej .: archivos xml de config de primavera], si sus archivos XML especifican una
schemaLocation
url xsd particular en un archivo XML, comoxsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
típicamente dentro de uno de sus frascos de dependencia, contendrá una copia de ese archivo xsd, en su sección de recursos, y spring tiene una capacidad de "mapeo" que dice tratar ese archivo xsd como si se asignara a la urlhttp://somewhere/something.xsd
(para que nunca termines yendo a la web y descargando el archivo, solo existe localmente). Consulte también https://stackoverflow.com/a/41225329/32453 para obtener un poco más de información.fuente
Si entra en cualquiera de esas ubicaciones, encontrará lo que se define en ese esquema. Por ejemplo, le indica cuál es el tipo de datos del valor de las palabras clave del método ini.
fuente