总结:xsi:schemaLocation 即像java中的import命令 其中值为一对一对的 即 xxxx xxxxxx.dtd 即相当于引入类 前者为名称 后者为来源

   xmlns:xsi 该文件语法说明 使用了XMLSchema-instance

   xmlns:即为别名

  像下图使用了xmlns:xsi 才能识别xsi:schemaLocation和xmlns

  在xsi:schemaLocation引入了beans,xmlns创建beans后 才允许在下方使用<bean></bean>标签 否则会报unknowTag

  

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

相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素(比如xmlns,xmlns:xsi,xsi:schemaLocation)的真正含义,不知道哪些元素是多余的,也不知道为什么要加那些元素。这样当有时候网上Copy的XML头有错的时候自己却不知道怎么下手。我也是这样的,于是今天花了点时间好好的理解了一下这些元素及其用法,现整理与此,在此谢谢各位前辈的经验,如有总结的不对或者不好的地方,欢迎留言提出各位的宝贵意见。

话不多说,先来一段Spring的XML样本,相信大家都很眼熟:

这个文档中,根元素<beans/>就不用说了,接下来是xmlns。那么什么是xmlns呢?xmlns其实是XML Namespace的缩写,可译为“XML命名空间”,但个人觉得,翻译后的名字反而不好理解,所以我们就叫它为XML Namespace吧。

为什么需要xmlns?
    考虑这样两个XML文档:表示HTML表格元素的<table/>:

和描述一张桌子的<table/>:

假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。XML 解析器是无法确定如何处理这类冲突。为了解决上述问题,xmlns就产生了。

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

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

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

我们还可以将前缀定义为abc:

这样再使用这个namespaceURI中的元素时,需要以abc为前缀,例如:<abc:xxx/>。再拿上面的例子解释怎么使用xmlns:

和:

后者与前者仅仅使用不同前缀,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。此时再把它们放在一起,XML解析器就不会报错了。

注意:当xmlns被定义在元素的开始标签中(如这里的<f:table/>)时,所有带有相同前缀的子元素都会与同一个Namespace相关联(即<f:table/>里面的<f:name/>和<f:width/>也会使用url2定义的写法)。

xmlns和xmlns:xsi有什么不同?
    xmlns表示默认的Namespace。例如Spring XML文档中的

这一句表示该文档默认的XML Namespace为http://www.springframwork.org/schema/beans。对于默认的Namespace中的元素,可以不使用前缀。例如Spring XML文档中的

xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。

xsi:schemaLocation有何作用?
    xsi:schemaLocation属性其实是Namespace为http://www.w3.org/2001/XMLSchema-instance里的schemaLocation属性,正是因为我们一开始声明了

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

这里表示Namespace为http://www.springframework.org/schema/context的Schema的位置为http://www.springframework.org/schema/context/spring-context.xsd。这里我们可以打开这个Schema的位置,下面是这个文档的开始部分:

有了上面的说明后,再去理解开始的Spring XML文档,一定会有不一样的感觉!

----------------------------------以上均为引用,以本人项目为例对上面的解释补充个人见解,如下---------------------------------------------

从本人项目中,可以看看相应的代码:

又例如,何时名字空间何时可以删除呢,比如下面的情况:

由此可见:一切以  xsi:schemaLocation=“”为准,也就是说xsi:schemaLocation包含的部分一定要出现在名字空间中。而实际上写的只需要>=xsi:schemaLocation中的内容即可,这就是删除的依据。

又例,以maven中的pom.xml文件为例:

再例:

最后,以web service中xml的wsdl文件再一次详细说明:

只不过这里没有 xsi:schemaLocation的说法,所以这里的名字空间就不能随意删除了

其实,看到这,已经领悟很多了。

XML中的文档声明类型:dtd

此处参考易百教程:http://www.yiibai.com/xml/xml_dtds.html

dtd是一种XML的约束,说白了就是我定义了dtd文件,下面的xml编写必须按照我的约束条件来写。分为内部dtd和外部dtd(系统标识符(SYSTEM)和公共标识符(PUBLIC))

内部dtd:

外部dtd:就是这个dtd文件是外部引用的,和css文件的内部,外部一个意思

所以SYSTEM和PUBLIC这种关键字就是引入外部dtd文件的。

以我的项目经历为例,一个例子如下:

---------------------
作者:qq_38724991
来源:CSDN
原文:https://blog.csdn.net/qq_38724991/article/details/76131614
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/UUUz/p/10901047.html

xsi:schemaLocation有何作用相关推荐

  1. XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation

    文章转载自:https://yq.aliyun.com/articles/40353 相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头 ...

  2. 关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation

    相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素(比如xmlns,xmlns:xsi,xsi:schema ...

  3. XML 中的 xmlns、xmlns:xsi、xsi:schemaLocation

      在用 Java 开发项目的过程中,少不了使用 xml 配置文件,比如 web.xml.pom.xml.applicationContext.xml 等等.在这些文件中,都会出现 xmlns.xml ...

  4. xmlns与xmlns:xsi和xsi:schemaLocation详解

    xml文件常用来作为配置文件,但是 xml 文件的头部会让初学者感到困惑, 这里对其进行一个清晰易懂的解释(梳理自网络资料) 先修知识 理解 xml 中的标签含义, 及标签之间树状的嵌套结构 了解 p ...

  5. xmlns, xmlns:xsi, xsi:schemaLocation 解释

    我们在写 xml 文件时,尤其是 spring .mybatis 的配置文件时,经常会用到上 xmlns.xmlns:xsi.xsi:schemaLocation 等元素,但多数时候大家都是直接拷贝, ...

  6. XML文档中的xmlns、xmlns:xsi和xsi:schemaLocation理解

    java开发项目中,经常用到xml配置文件,比如web.xml.applicationContext.xml.pom.xml等.在这些文件中都有xmlns.xmlns:xsi和xsi:schemaLo ...

  7. xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance(xsi:schemaLocation详解)

    http://topic.csdn.net/u/20110117/01/3e3cc322-8f8e-4c2b-8cbb-768bf7319c59.html xmlns:xsi="http:/ ...

  8. 关于xml文件 xsi:schemaLocation

    原文连接:https://www.jianshu.com/p/7f4cbcd9f09f ------------------------------------------------------ 相 ...

  9. UDF函数maven工程出现:Missing artifact javax.jdo:jdo2-api:jar:2.3-ec或xsi:schemaLocation=http://maven.apach

    自定义UDF函数maven工程下,pom.xml文件显示如下错误: xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:// ...

最新文章

  1. 如何将Java源代码文件的编码从GBK转为UTF-8?
  2. 最新发布| Jira官宣中国区本地部署特殊政策,公布Data Center价格
  3. 基于Keras Application和Densenet迁移学习(transfer learning)的乳腺癌图像分类模型(良性、恶性)
  4. css text top,text-align属性(css中文本对齐属性)
  5. 第二章 向量(a)接口与实现
  6. 【Xamarin开发 Android 系列 12】 创建一个Json读取数据应用-添加定位服务
  7. OD debug matlab,OllyDebug基本使用方法
  8. leetcode330. 按要求补齐数组 顶级难度玄学贪心
  9. Hive文件数创建过多的问题
  10. python的框架django_Python框架Django高级内容,python
  11. 计算机桌面小工具软件,win10桌面小工具(Desktop Gadgets Installer)
  12. 基于阿里云产品和开源Hudi结合
  13. 计算机控制plc开机,PLC控制系统与工控计算机控制系统的区别
  14. 使用Cesium创建3dtiles管线(视频)
  15. Linux free 查看内存使用情况 常用命令
  16. java面试题对日开发_【埃森哲Java面试】面试的是对日java的后端开发-看准网
  17. Working Practice-善用酝酿效应
  18. 第一行代码——Android pdf
  19. 简述oracle的日志缓冲区,2.4 重做日志缓冲区
  20. 项目系统设计与数据库设计(那周余嘉熊掌将得队)

热门文章

  1. Pandas知识点-合并操作combine
  2. Visual Studio 2008中的jQuery Intellisense
  3. 强化学习《基于策略价值 - Asynchronous Adventage Actor-Critic》
  4. 2.12 主成分分析(上)
  5. win10家庭版 安装docker并成功使用
  6. DPMM的理解、公式推导及抽样
  7. Knn原理及Python实现、数据展示
  8. 数字图像处理--图像ROI
  9. 用Grafana为Elasticsearch做日志分析
  10. C 创建基本图表 Chart Controls