xmlns:(XML Namespaces的缩写)是一个属性,是XML(标准通用标记语言的子集)命名空间的声明。作用是赋予命名空间一个唯一的名称。

命名空间是什么呢?

由于xml允许你自己定义自己的标识,你定义的标识和其他人定义的标识有可能相同,但表示不同的意义。当文件交换或者共享的时候就容易产生错误。为了避免这种错误发生,XML采用名字空间声明,允许你通过一个网址指向来识别你的标识。比如下面的例子:

<!-- 这里的 table 元素描述的是一个表格-->
<table><tr><td>Apples</td><td>Bananas</td></tr>
</table>
<!-- 这里的 table 元素描述的是一个家居桌子-->
<table><name>African Coffee Table</name><width>80</width><length>120</length>
</table>

第一个<table>表示表格,而第二个<table>表示家居桌子。如果我需要同时处理这两个文档,就会发生名字冲突。为了解决这个问题,我们引进了Namespaces这个概念。Namespaces通过给标识名称加一个很长的可以保证全局唯一性的字符串与该元素关联起来,这样就可以避免命名冲突了。是如何保证那个较长的字符串全局唯一呢?最好的方式莫过于使用 统一资源标识符(Uniform Resource Identifier,URI) 了, 而我们最常见的 URI 就是平时经常访问的网址 URL 了,所以经常用网址(URL)定位的方法来区别这些名称相同的标识,比如:

xmlns:namespace-prefix="namespaceURI"

namespace-prefix:表示命名空间的前缀,即我们自己定义的标识。

namespaceURI:用来唯一标识一个命名空间的网址

应用到我们所举的例子中就是:

<!-- 这里的 table 元素描述的是一个表格-->
<h:table xmlns:h="http://www.w3.org/TR/html4/"><h:tr><h:td>Apples</h:td><h:td>Bananas</h:td></h:tr>
</h:table>
<!-- 这里的 table 元素描述的是一个家居桌子-->
<f:table xmlns:f="http://www.w3school.com.cn/furniture"><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length>
</f:table>

实战举例解析:

<?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:batch="http://www.springframework.org/schema/batch"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd"><!--导入文件--><import resource="classpath:demo1/job/demo1-jobContext.xml"/><!--定义名字为billJob的作业--><batch:job id="billJob"><!--定义名字为billStep的作业步--><batch:step id="billStep"><batch:tasklet transaction-manager="transactionManager"><!--定义读、处理、写操作,规定每处理两条数据,进行一次写入操作,这样可以提高写的效率--><batch:chunk reader="csvItemReader" processor="creditBillProcessor" writer="csvItemWriter"   commit-interval="2"></batch:chunk></batch:tasklet></batch:step></batch:job>
</beans>

 第一部分:

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

定义一个beans标识,采用的是默认命名空间方法,即:

<elementName xmlns="namespaceURI">

第二部分:

<xmlns:batch="http://www.springframework.org/schema/batch">

定义一个batch标识

第三部分:

<?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:batch="http://www.springframework.org/schema/batch"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd">......</beans>

根据之前的知识我们可以理解, xmlns:xsi 定义了一个命名空间前缀 xsi ,对应的唯一字符串 http://www.w3.org/2001/XMLSchema-instance。 但是读者会发现, 这个 xmlns:xsi 在不同的 xml 文档中似乎都会出现。 这是因为, xsi 已经成为了一个业界默认的用于 XSD((XML Schema Definition) 文件的命名空间。 而 XSD 文件(也常常称为 Schema 文件)是用来定义 xml 文档结构的。

注解: XML 解析器可以根据 一个 XSD 文件的内容来解析另一个 XML 文件, 判断该文件的结构是否和 XSD 文件中定义的一致。 XSD 文件 可以理解为 XML 文档可以自定义的语法或格式检查器。
那么, 有了上述的理解, 再来看xsi:schemaLocation这里的语法其实是:

xsi:schemaLocation = "" “

"":用来唯一标识一个命名空间的网址

”:指代 【XSD location URI】 , 这个值指示了前一个命名空间所对应的 XSD 文件的位置, xml parser 可以利用这个信息获取到 XSD 文件, 从而通过 XSD 文件对该自定义标识(即命名空间)的元素结构进行校验, 因此这个值必然是可以访问的, 且访问到的内容是一个 XSD 文件的内容。

比如:

xsi:schemaLocation="http://www.springframework.org/schema/beansbeanshttp://www.springframework.org/schema/beans/spring-beans.xsdbeans
http://www.springframework.org/schema/batchbatchhttp://www.springframework.org/schema/batch/spring-batch.xsdbatch)"

参考:

详解 xml 文件头部的 xmlns:xsi_萧萧的专栏-CSDN博客

HTML xmlns 属性

有关xml中的xmlns - 天~宇~翱~翔 - 博客园

详解 xml 文件头部的 xmlns:xsi相关推荐

  1. 从源码角度解读 xml 文件中的 xmlns、xsi、xsd

    xml 文件中的 xmlns.xsi.xsd xmlns xsi xsd 下面是 spring.xml 中的一段: <beans xmlns="http://www.springfra ...

  2. python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件

    Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 open()函数的主要作用是打开文件并返回相应文件对象,使用文件对象可以对当前文件进行读取.写入.追加等操作,默认情况下&q ...

  3. spring使用中applicationContext.xml文件头部声明

    spring使用中applicationContext.xml文件头部声明 <beans xmlns="http://www.springframework.org/schema/be ...

  4. 43. Systemd的Unit配置详解,unit文件位置,优先级,unit类型,unit文件字段详解,Unit/Service/Install字段,添加mysql服务等例子

    Systemd的Unit配置详解,unit文件位置和优先级,unit文件类型,unit文件字段详解,[Unit]字段,[Service]字段,[Install]字段,添加服务,创建.service 文 ...

  5. ZIP文件格式详解(一)——文件数据格式

    ZIP文件格式详解(一)--文件数据格式 ------------------------------------------------------------------------------- ...

  6. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  7. python获取mysql中的数据供js调用_详解js文件通过python访问数据库方法

    我来教你 js文件怎么通过python访问数据库,希望能够为你带来帮助. 1.如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 里面的 action 填写服务端的处理路由就可以了 ...

  8. android 数据文件存储,实例详解Android文件存储数据方式

    总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.下面通过本文给大家介绍android文件存储数据方式. 1.文件存储数据使用了java中的io操作来进行文件的保存和读取,只不 ...

  9. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

最新文章

  1. linux c 守护进程创建原理及简易方法
  2. 生成器——迭代器工作的工厂
  3. 使用nodejs代码在SAP C4C里创建Individual customer
  4. 【渝粤题库】国家开放大学2021春2223物业管理财税基础题目
  5. latex 基本用法(四)
  6. MediaCoder压缩参数设置
  7. Acrel-2000Z智能电力监控系统解决方案
  8. 如何快速将MOV格式视频转换成MP4格式
  9. python职位要求_python 开发工程师职位描述与岗位职责任职要求
  10. 如何使用python刷博客浏览量---第一种方法
  11. 混沌加密的理解及应用,附代码
  12. “女人~,你在玩火”一个有磁性的声音说道——常用自动化测试工具
  13. 霜降已至,你妈喊你加裤添衣!感恩老妈,就送她智慧云谷新风机
  14. 关于阿里云个人用户选择阿里云服务器配置说明
  15. [DEFCON全球黑客大会] CTF(Capture The Flag)
  16. CSS实现当鼠标移入或者移出时实现动画过渡效果
  17. CocktailSort/ShakerSort(鸡尾酒排序)——C语言实现
  18. 告别黑暗 电脑黑屏故障排除实例一则
  19. coolq使用(一)
  20. msysgit安装及使用教程大全

热门文章

  1. 2019最新csdn修改博客皮肤模板教程
  2. oracle 启动 linux监听,Linux下启动Oracle服务和监听程序
  3. 开包即食的教程带你浅尝最新开源的C# Web引擎Blazor
  4. 分辨率单位、换算及镜头与感光器像素的匹配
  5. 云点播web端上传_Web 播放端 SDK
  6. U盘/硬盘/数码相机RAW格式文件丢失的原因|恢复方法
  7. 开源资产管理软件-GLPI安装
  8. 火车票能不能选座_在购票窗口买火车票可以选座吗?
  9. python 封装函数_python封装函数
  10. Webcamera, Multithreading and VFW