对于很多xml
文件的开头,通常都会有类似如下的:
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" |
可以这样理解:
首先这个文件是一个xml
文件,那么文件里面的所有内容都符合xml
语法规范,
开头的<project></project>
这最外层同样也是一个xml
文件的标签,后面那一长串也就是所谓的属性,其中xmlns表示命名空间,xmlns="http://maven.apache.org/POM/4.0.0"
这表示默认命名空间(如果你的xml
标签没有带任何前缀,则默认认定标签来自默认命名空间),而下面xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
这个命名空间里面的元素或者属性就必须要以xsi:
这种方式来写,比如schemaLocation
就是他的一个属性,所以写成xsi:schemaLocation
,而默认命名空间不带类似xsi
这种,其实xml标签名称有个专业叫法叫做QName
,而如果没有前面的xsi:
这种一般叫做NCName
。
你会发现, 这个 xmlns:xsi
在不同的 xml 文档中似乎都会出现。 这是因为, xsi
已经成为了一个业界默认的用于 XSD(XML Schema Definition)
文件的命名空间。
所以像mvn
里面的<dependency>
这种就是默认命名空间下面的元素,最后那一行就表示把定义这个命名空间的schema
文件给引用进来,好让eclipse
这类型工具能够解析和验证你的xml文件是否符合语法规范。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
上面这行的语法其实是, xsi:schemaLocation = "键" "值"
。即 xsi
命名空间下 schemaLocation
元素的值为一个由空格分开的键值对。等同于<import namespace="xxx" schemaLocation="xxx.xsd"/>
。