xmlns, xmlns:xsi, xsi:schemaLocation 解释

xmlnsxsischemaLocation

我们在写 xml 文件时,尤其是 spring 、mybatis 的配置文件时,经常会用到上 xmlns、xmlns:xsi、xsi:schemaLocation 等元素,但多数时候大家都是直接拷贝,并未真正理解这三个元素的具体含义。

今天整理出来,权当备忘。

请看下面一段 xml 配置

<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <bean id="bean" class="com.feshfans.Bean"></bean>
</beans>

xmlns

xmlns 的全称为 xml namespace,即 xml 命名空间,这个很好理解,和 java 中 package 和 c# 中 namespace 的概念基本一致,起的作用也基本一致:区分重复元素

xmlns 格式定义如下:

xmlns[:name] = "uri"

默认命名空间

name 可以忽略不填,即为默认命名空间,如:

xmlns="http://www.springframework.org/schema/beans"

表现效果则为命名空间中的元素可以不加前辍,在此 xml 中直接使用,如上面的

<bean id="bean" class="com.feshfans.Bean"></bean>   // bean 元素可以直接使用
自定义命名空间

我们也可以自定义命名空间的名称,如:

xmlns:context = "http://www.springframework.org/schema/context"  // context 名称可以随便起,如 abc

表现效果为,我们在 xml 文件中使用此命名空间下的元素时,必须加上 context 前辍,如:

<context:component-scan base-package="com.feshfans"></context:component-scan>
为什么?

假如 xml 没有命名空间,spring 定义了 bean 元素,mybatis 也定义了 bean 元素,那么我们使用的是哪个 bean 元素呢?显示易见, xmlns 解决了元素冲突的问题

xmlns:xsi

这本质就是声明一个名为 xsi 的命名空间,其值为一个标准的命名空间

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

此命名空间还定义了 xsi:type, xsi:nil, xsi:schemaLocation 等属性

虽然 xsi 也可以随意用别的名称替换,但不建议这样做。xsi 已经是通用的写法, 是 xml schema instance 的缩写,可以看成是固定写法。

xsi:schemaLocation

此为 xsi 命名空间中定义的一个属性,用于通知 xml 处理器 xml 文档与 xsd 文件的关联关系。

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

这里需要注意的是:命名空间和 命名空间的 xsd (xml schema defination,定义了命名空间下元素的写法) 必须成对出现,中间用空格分分隔;可以填写多个对应关系。

这也是一个通用的写法,可以理解为固定写法。

其它

其实,命名空间与其对应的 xsd 文件我们在 jar 中一般都是可以发现的,以 spring-beans.jar 为例:

在 META-INF 目录下,spring.tooling 文件中可以找到命名空间的值,在 spring.schemas 文件中可以找到 xsd 文件的值,同时此文件中也定义了离线 xsd 文件的位置。

xmlns, xmlns:xsi, xsi:schemaLocation 解释的更多相关文章

  1. xml schema xmlns xmlns:xsi xsi:schemaLocation targetnamespace

    先上一段xml文档 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  2. xmlns和xsi之schemaLocation

    appplicationContex.xml文件报错:元素 "util:constant" 的前缀 "util" 未绑定 在根节点添加了“xmlns:util= ...

  3. xml文件中 xmlns xmlns:xsi 等解释

    http://bbs.csdn.NET/topics/390751819 maven 的 pom.xml 开头是下面这样的 <project xmlns="http://maven.a ...

  4. 我来说说XML文件中的xmlns、xmlns:xsi和xsi:schemaLocation、dtd文件的具体含义

    文章摘自:https://yq.aliyun.com/articles/40353               http://www.cnblogs.com/zhao1949/p/5652167.ht ...

  5. 【转载】关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation

    原文在: https://yq.aliyun.com/articles/40353 这里有转载:http://www.cnblogs.com/zhao1949/p/5652167.html 先来一段S ...

  6. Android 编程下的自定义 xmlns

    什么是 xmlns xmlns是 XML Namespaces 的缩写,中文名称是 XML命名空间. xmlns 使用规则 xmlns:namespace-prefix="namespace ...

  7. 有关xml中的xmlns

    1. xmlns "xmlns"是XHTML namespace的缩写,叫做"名字空间"声明.名字空间是什么作用呢?我的理解是:由于xml允许你自己定义自己的标 ...

  8. xmlns:android="http://schemas.android.com/apk/res/android 这句话的作用

    xmlns:android="http://schemas.android.com/apk/res/android 有了这句话,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么 ...

  9. xml中的xmlns,xmlns:xsi,xsi:schemaLocation有什么作用,如果没有会怎么样呢

    如 maven 的 pom.xml 开头是下面这样的谁能解释下,这东西有社么用,不写这东西又会怎么样的,官方拷贝来的说明文档就算了,我想要简明扼要的说明.不胜感激---------<projec ...

随机推荐

  1. Docker环境安装部署Java应用(含安装Tomcat和JDK)

    1.部署思路 两台docker机(centos 7系统),Docker 版本:18.09.6, build 481bc77156 Docker host IP:192.168.102.135 Dock ...

  2. web开发(九) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6506027.html>,在此仅供学习参考之用. 一.发送 ...

  3. Elasticsearch 6.2.3版本 同一个index新增type报错 Rejecting mapping update to [website] as the final mapping would have more than 1 type: [blog2, blog]

    在website的index下已经存在一个名为blog的type.想在website下,新增一个名为blog2的type. 执行语句如下: PUT /website/blog2/1 { "t ...

  4. freebsd 隐藏ssh版本号

    方案一: vi /etc/ssh/sshd_config VersionAddendum 为空或者no或者别的信息 /etc/rc.d/sshd restart 方案二: https://kram.n ...

  5. unieap platform eclipse.ini vm设置

    -vm C:\Program Files (x86)\Java\jdk1..0_45\bin\javaw.exe -startup plugins/org.eclipse.equinox.launch ...

  6. C#打开文件

    C#中经常用到的功能,打开文件: /// <summary> /// 打开文件,可选择多个文件 /// </summary> /// <param name=" ...

  7. RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.

    [问题描述] RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in ...

  8. CMD 显示当前时间和日期

    1. 其实还是应该多看 help  要知道 help 比百度还用一百倍 除了 可能东西比较多 C:\Users\Administrator>date /? 显示或设置日期. DATE [/T | ...

  9. 使用render函数渲染组件

    使用render函数渲染组件:https://www.jianshu.com/p/27ec4467a66b

  10. linux-查询某软件的安装的目录

    eg:jenkins\\\ rpm -ql jenkins 安装目录/var/lib/jenkins 配置文件 /etc/sysconfig/jenkins 日志目录 /var/log/jenkins ...