了解xml文件的同学应该都知道xml文件的验证模式保证了xml文件格式的正确性,主要的验证模式有DTD以及XSD。不过现在spring比较常用到的是xsd。以下面的例子进行一个分析:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
default-autowire="byName">
beans:是一个xml文件的根节点
xmlns:它是XML NameSpace的缩写,其实就是一个命名空间,何为命名空间呢?打个比方,我们在xml文件都会进行一个自定义标签,但是可能会和别人定义的标签冲突了,这时我们就应该做一个区分,也就是这个nameSpace来区分我们的xml文件和别人的xml文件的区别。类似于java的package。
xmlns:xsi:是指xml文件所遵循的一个xml规范,xsi全名:xml schema instance,是指具体用到的schema资源文件里定义的元素所准守的规范。也就是说xsi="http://www.w3.org/2001/XMLSchema-instance这个文件里面定义的元素应该遵守什么规范。
两者的区别:
xmlns表示默认的Namespace。例如Spring XML文档中的
这一句表示该文档默认的XML Namespace为http://www.springframwork.org/schema/beans。对于默认的Namespace中的元素,可以不使用前缀。例如Spring XML文档中的
xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。
xmlns:schemaLocation : 指定名称空间所对应的XML Schema文档的存储位置,它通常包含两部分,一部分是名称空间(nameSpace)的URI,一部分是该名称空间所标识的XML Schema文件位置。
比如说:
xmlns:aop=
"http://www.springframework.org/schema/aop"
这个就是spring配置文件里面需要使用到aop的标签,声明前缀为aop的命名空间,后面的URL用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。然后其他比如context(针对组件标签)、MVC(针对mvc标签)、tx(针对事务标签)都一样的意思。
后面看到有一个文章也写的很棒:https://blog.csdn.net/qq646040754/article/details/81531151