<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.beokwithanything.springboot</groupId>
<artifactId>springboot_start</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
xmlns 是 xml (name space) 的缩写,意思是 xml命名空间
xmlns 是<project></project> 的一个属性
xmlns 类似于java里的包名,用于区分 同名而不同来源的标签
假如在一个xml文件里写了多个同名的标签,可用xmlns属性来区分此标签不同于其他的同名标签
例如我这里有两个<table>标签:
<!-- 这里的 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>
一个 xml 文档中如果包含如上两种定义不同 但是名称相同的元素, xml 解析器是无法解析的,
因为它不能确定当你调用时应该返回哪个元素。
显然, 如果给他们的名字添加一个前缀, 则命名冲突的问题就可以解决:
<!-- 这里的 table 元素描述的是一个表格-->
<t:table> <!-- 添加了前缀 t -->
<t:tr>
<t:td>Apples</t:td>
<t:td>Bananas</t:td>
</t:tr>
</t:table>
<!-- 这里的 table 元素描述的是一个家居桌子-->
<h:table> <!-- 添加了前缀 h -->
<h:name>African Coffee Table</h:name>
<h:width>80</h:width>
<h:length>120</h:length>
</h:table>
但是, 在一个拥有众多元素的文档中, 仅仅拥有前缀, 也不能完全避免命名冲突的问题。
此时, 命名空间就诞生了, 我们可以为元素定义一个命名空间, 将一个很长的, 可以保证全局唯一性的字符串与该元素关联起来。这样就可以避免命名冲突了。
但是如何保证那个较长的字符串全局唯一呢, 最好的方式莫过于使用 统一资源标识符(Uniform Resource Identifier,URI) 了, 而我们最常见的 URI 就是平时经常访问的网址 URL 了。
<t:table xmlns:t="http://www.w3school.com.cn/furniture">
<t:tr>
<t:td>Apples</t:td>
<t:td>Bananas</t:td>
</t:tr>
</t:table>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:name>African Coffee Table</h:name>
<h:width>80</h:width>
<h:length>120</h:length>
</h:table>
所以, 对于命名空间的标识符, URI 的作用仅仅是 保证唯一性, 它并不需要对应一个可以访问的资源或文件 !
但是, 有很多公司都会让 namespace 的 URI 指向一个包含该命名空间信息的网页
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.beokwithanything.springboot</groupId>
<artifactId>springboot_start</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
细心的童鞋会注意到,project 元素前面并没有前缀。 这里实际上使用的是 默认命名空间(default naming space)。
它的语法如下:
<elementName xmlns="namespaceURI">
使用默认命名空间的作用是, 该元素内部的子元素都会默认属于该命名空间下, 我们不需要为他们一一添加命名空间前缀。
xmlns:xsi 定义了一个命名空间前缀 xsi 对应的唯一字符串 http://www.w3.org/2001/XMLSchema-instance。
但是读者会发现, 这个 xmlns:xsi 在不同的 xml 文档中似乎都会出现。
这是因为, xsi 已经成为了一个业界默认的用于 XSD((XML Schema Definition) 文件的命名空间。
XSD 文件 可以理解为 XML 文档可以自定义的语法或格式检查器:
XML 解析器可以根据 一个 XSD 文件的内容来解析另一个 XML 文件, 判断该文件的结构是否和 XSD 文件中定义的一致。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xsi 命名空间下 schemaLocation 元素的值为 一个由空格分开的键值对。
前一个 键 :
http://maven.apache.org/POM/4.0.0 指代 【命名空间】, 只是一个全局唯一字符串而已
后一个 值 :
指代 【XSD location URI】 , 这个值 指示了前一个命名空间所对应的 XSD 文件的位置, xml parser 可以利用这个信息获取到 XSD 文件, 从而通过 XSD 文件对
所有属于 命名空间 http://maven.apache.org/POM/4.0.0 的元素结构进行校验,
因此这个值必然是可以访问的, 且访问到的内容是一个 XSD 文件的内容
---------------------
作者:萧萧冷
来源:CSDN
原文:https://blog.csdn.net/lengxiao1993/article/details/77914155
版权声明:本文为博主原创文章,转载请附上博文链接!