xmlns, xmlns:xsi, xsi:schemaLocation 解释
xmlns, xmlns:xsi, xsi:schemaLocation 解释
我们在写 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 解释的更多相关文章
- xml schema xmlns xmlns:xsi xsi:schemaLocation targetnamespace
先上一段xml文档 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...
- xmlns和xsi之schemaLocation
appplicationContex.xml文件报错:元素 "util:constant" 的前缀 "util" 未绑定 在根节点添加了“xmlns:util= ...
- xml文件中 xmlns xmlns:xsi 等解释
http://bbs.csdn.NET/topics/390751819 maven 的 pom.xml 开头是下面这样的 <project xmlns="http://maven.a ...
- 我来说说XML文件中的xmlns、xmlns:xsi和xsi:schemaLocation、dtd文件的具体含义
文章摘自:https://yq.aliyun.com/articles/40353 http://www.cnblogs.com/zhao1949/p/5652167.ht ...
- 【转载】关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation
原文在: https://yq.aliyun.com/articles/40353 这里有转载:http://www.cnblogs.com/zhao1949/p/5652167.html 先来一段S ...
- Android 编程下的自定义 xmlns
什么是 xmlns xmlns是 XML Namespaces 的缩写,中文名称是 XML命名空间. xmlns 使用规则 xmlns:namespace-prefix="namespace ...
- 有关xml中的xmlns
1. xmlns "xmlns"是XHTML namespace的缩写,叫做"名字空间"声明.名字空间是什么作用呢?我的理解是:由于xml允许你自己定义自己的标 ...
- xmlns:android="http://schemas.android.com/apk/res/android 这句话的作用
xmlns:android="http://schemas.android.com/apk/res/android 有了这句话,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么 ...
- xml中的xmlns,xmlns:xsi,xsi:schemaLocation有什么作用,如果没有会怎么样呢
如 maven 的 pom.xml 开头是下面这样的谁能解释下,这东西有社么用,不写这东西又会怎么样的,官方拷贝来的说明文档就算了,我想要简明扼要的说明.不胜感激---------<projec ...
随机推荐
- UniEAP Platform V5.0建库
create tablespace platform datafile 'platform.dbf' size 100M reuse autoextend on next 50M; . . drop ...
- 龙芯软硬件培训个人总结-day1
第一天主要针对的硬件设计,推他们年底要量产的3A4000+7A1000.这里我只记录下自己关注的几个点. 1,3A4000/3B4000处理器 支持256位向量指令: 对处理器封装进行了优化,不 ...
- Java锁机制ReentrantLock
ReentrantLock 锁常用于保证程序的人为顺序执行. 写一个类模拟ReentrantLock类的功能 class MyLock{ private boolean lock = false; p ...
- TIOBE11月份编程语言排行榜:C非常接近Java,分析下中美的就业情况
TIOBE公布11月份编程语言排行榜:C非常接近Java Swift挤进前10,分析下中美的就业情况. 我们先看看他们官方对数据的解读 本月TIOBE指数前20位出现了一些有趣的变动.首先,C语言现在 ...
- 【VS开发】【智能语音处理】特定人语音识别算法—DTW算法
DTW(动态时间弯折)算法原理:基于动态规划(DP)的思想,解决发音长短不一的模板匹配问题.相比HMM模型算法,DTW算法的训练几乎不需要额外的计算.所以在孤立词语音识别中,DTW算法仍得到广泛的应用 ...
- selenium获取微博用户粉丝数
selenum的安装 selenium文档 获取微博用户粉丝数 from selenium import webdriver from time import sleep wd = webdriver ...
- phpstorm配合xdebug进行本地调试代码
笔者在使用的环境是wamp3.1.6和phpstorm2018 ,php选择的环境是php7.2 1. 在php.ini中添加xdebug的配置信息 首先建议是先找对php.ini的位置,可以在php ...
- kafka 教程(一)-初识kafka
消息队列 MQ 消息队列就是 消息 message 加 队列 queue,是一种消息传输的容器,提供生产和消费 API 来存储和获取消息. 消息队列分两种:点对点(p2p).发布订阅(pub/sub) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- php常用header状态
<?php //200 正常状态 header('HTTP/1.1 200 OK'); // 301 永久重定向,记得在后面要加重定向地址 Location:$url header('HTTP/ ...