引入spring时 XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd " >

<!-- 使用注解开发,不用配置controller,需要配置一个组件扫描器 -->
<context:component-scan base-package="test.springMVC"/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置从项目根目录到指定目录一端路径 ,建议指定浅一点的目录-->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 文件的后缀名 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

上面是我的xml文件  那么这个文件的各个标签都是什么意思呢?

<?xml version="1.0" encoding="UTF-8"?>

version 从字面意思就很理解了就是我们用的xml文件的版本  

encoding 是编码格式,默认都是utf-8

然后下面就是规范了   有两种规范

一个是比较老旧的 .dtd 

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 

DTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。 public 即为 公共DTD,就是大家都认可的规范。DTD名称格式为"注册//组织//类型 标签//语言"

而我用的就是另外一种声明 规范

1. beans 是根标签  因为xml是一个标记语言,所以需要根标签

2. xmlns其实是XML Namespace的缩写 也即是为当前的这个xml指定命名空间  

  使用语法: xmlns:namespace-prefix="namespaceURI"。其中namespace-prefix为自定义前缀,只要在这个XML文档中保证前缀不重复即可;namespaceURI是这个前缀对应的XML Namespace的定义。

例如,xmlns:context="http://www.springframework.org/schema/context"

 这一句定义了一个http://www.springframwork.org/schema/context的Namespace(这和Java类中的包的声明很相似),并将其和前缀context绑定。所以上面的Spring XML文档中会有这么一句:<context:component-scan base-package="xxx.xxx.controller" />

这里的<component-scan/>元素就来自别名为context的XML Namespace,也就是在http://www.springframework.org/schema/context中定义的。

3.   xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。 也是xml所要遵循的标签规范

4. 如上hdp, xsi, aop, cache, context, mvc…都是当前xml要使用到的一个标签,后面就是指定标签所要遵循的规范。

5.  xsi:schemaLocation  属性其实是Namespace为http://www.w3.org/2001/XMLSchema-instance里的schemaLocation属性,

我们一开始声明了xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   这里才写作xsi:schemaLocation(当然一般都使用这个前缀)。它定义了XML Namespace和对应的XSD(Xml Schema Definition)文档的位置的关系。它的值由一个或多个URI引用对组成,两个URI之间以空白符分隔(空格和换行均可)。第一个URI是定义的XML Namespace的值,第二个URI给出Schema文档的位置,Schema处理器将从这个位置读取Schema文档,该文档的targetNamespace必须与第一个uri相匹配。

http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd

 xsi:schemaLocation 指定的命名空间对应的验证文件,用来定义xml schema的地址,也就是xml书写时需要遵循的语法,用于声明了目标命名空间的模式文档。。两部分组成,前面部分就是命名空间的名字,后面是xsd(xmlschema)的地址,也是就表示把定义这个命名空间的schema文件给引用进来,好让eclipse这类型工具能够解析和验证你的xml文件是否符合语法规范。等同于。用于声明了目标命名空间的模式文档。

怎么检查我们写的是否正确呢?最快的方法就是复制链接http://www.springframework.org/schema/beans/spring-beans.xsd 看看是否能打开 如果报错 配置的就有问题

 
原文地址:https://www.cnblogs.com/zjf6666/p/9105138.html