为什么 在xml节点处 都会有 xmlns=""

为什么 在xml节点处 都会有 xmlns="",第1张

因为xml与html有些不同,html中的标签都有预定义的意义,使用哪个标签会有什么效果都是确定的。但是xml非常灵活,标签都是根据公司,组织或个人不同而不同,但是其他人怎么才能懂你所定义的标签是什么意义呢?就是使用xmlns指定使用哪个文件来解析这个xml文件,xmlns的意识就是xml namaspace,即命名空间,一般其会指定一个.dtd文件或者schema文件,xml文件使用这两种方式进行解析,而dtd文件和schema有统一的标准,这样就可以解析多种多样的xml文件了。

在用spring开发时经常会遇到引用spring的schema空间的格式文件,比如用到aop时需要在xml文件中引入spring-aop-4.1.xsd位置。

1、spring的schema空间的格式文件

2、各个版本的xsd文件

对于myeclipse自动引入spring的schema空间的格式文件,还是很方便的,具体说下 *** 作步骤:

一、在xml编辑页面用alt+/ 提示找需要的元素作为测试

二、切换xml的编辑窗口到namespaces

注意:在此之前一定确保已引入相关Jar包,比如aop编程,应先引入aop相关jar

三、在namespaces窗口,勾选配置文件中需要的xsd的命名空间,然后切换到source窗口

原文在此,写的比较通俗易懂,特转发一下,向原作者致敬~

https://blog.csdn.net/lengxiao1993/article/details/77914155

一套Xml中元素的定义规范;

指定xml文档中元素所隶属的命名空间;

一个XSD的实例,就好比new了一个object 出来;

上面这行的语法其实是, xsi:schemaLocation = "键" “值”,用来说明XSD的命名空间和定义文件;

初学者看到如上的内容应当有如下困惑点:

一个 xml 文档中如果包含如下两种定义不同, 但是名称相同的元素, xml 解析器是无法解析的, 因为它不能确定当你调用 document.getElementsByTagName("book") 时应该返回哪个元素。

显然, 如果给他们的名字添加一个前缀, 则命名冲突的问题就可以解决。

但是, 在一个拥有众多元素的文档中, 仅仅拥有前缀, 也不能完全避免命名冲突的问题。

此时, 命名空间就诞生了, 我们可以为元素定义一个命名空间, 将一个很长的, 可以保证 全局唯一性的字符串 与该元素关联起来。这样就可以避免命名冲突了。

但是如何保证那个较长的字符串全局唯一呢, 最好的方式莫过于使用 统一资源标识符(Uniform Resource Identifier,URI) 了, 而我们最常见的 URI 就是平时经常访问的网址 URL 了。

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

回到我们的 POM 文档头中,你会发现 project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 中的 http://www.w3.org/2001/XMLSchema-instance 可以访问到一个正常的页面, 但是如果访问 xmlns="http://maven.apache.org/POM/4.0.0" 中的 http://maven.apache.org/POM/4.0.0 就会得到一个 PAGE NOT FOUND 错误, 页面未获取到。

细心的童鞋会注意到, project 元素前面并没有前缀。 这里实际上使用的是 默认命名空间(default naming space) 。 它的语法如下:

例如我们的 project 元素定义 和下面的例子

使用默认命名空间的作用是, 该元素内部的子元素都会默认属于该命名空间下, 我们不需要为他们一一添加命名空间前缀。

现在来看文件头中剩下的, 看上去更为复杂的部分。

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

那么, 有了上述的理解, 再来看

上面这行的语法其实是, xsi:schemaLocation = "键" “值”

即 xsi 命名空间下 schemaLocation 元素的值为一个由空格分开的键值对。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11480689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存