一些关于XML的问题?
一些关于XML的问题?
我注意到我们在这个属性的值中有多个URL,就像在Spring中一样:
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">
为什么需要这样做?它的用途是什么?Spring会访问URL并进行验证吗?
xmlns和xsi:schemaLocation之间有什么区别?
关于XML的一些问题
在使用Spring的Java XML解析器时,它会读取schemaLocation
的值,并试图从互联网上加载它们,以验证XML文件。而Spring会拦截这些加载请求,并从其自己的JAR文件中提供版本。
如果省略了schemaLocation
,那么XML解析器将不知道从哪里获取模式以验证配置。
XML解析器会搜索类路径吗?
这是否意味着,当我使用-maven构建基于Spring的项目并带有-o(离线)标志时,构建将失败,尽管所有依赖项都在我的本地存储库中可用?
但是XML解析器将寻找什么?模式可以有任何名称。
从技术上讲,XML解析器首先会尝试从互联网加载模式,如果未找到或无法访问互联网,它将从类路径中本地搜索*.xsd文件,如果仍然找不到,则会被省略。
有关Spring拦截层的更多信息,请参阅stackoverflow.com/a/10768972/32453
这是否意味着,如果没有像Spring中那样的解析器层,我们不需要提供xsi:schemaLocation信息?比如在SOAP负载中
声明xsi命名空间而不提供其xsd位置的目的是什么?XML解析器是否仍然能够理解schemaLocation属性并完全省略xsi命名空间?
解析器不会在互联网上搜索模式。它们会查找在该URI上注册的任何模式。允许这样的配置被认为是危险的。