xmlns那两行的意思

原文链接:

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

 

xmlns 出现在没有前缀的元素中的含义

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  • 1
  • 2

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

<elementName xmlns="namespaceURI">
  • 1

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

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

xmlns:xsi 与 xsi:schemaLocation

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

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
  • 1
  • 2
  • 3

根据之前的知识我们可以理解, 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="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
  • 1

上面这行的语法其实是, xsi:schemaLocation = "键" “值”
即 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 文件的内容

猜你喜欢

转载自blog.csdn.net/swq463/article/details/81941605