XML之定义 xmlns, xmlns:xsi, xsi:schemaLocation

在 MAVEN 的 POM.xml 中,有这样的标签定义:

问题:

    1、project 标签的 属性: xmlns, xmlns:xsi, and xsi:schemaLocation 各是什么意思? 
    2、它们又有怎样的联系? 
    3、: 是什么意思? 
    4、在 xsi:schemaLocation 中有两个 URL, 
          第一个URL访问不到,第二个URL是 XSD 格式的文档。 
          如果第一个访问不到,它是用来干啥的?
          
一、xmlns

xmlns(XML Name Space)是 W3C Namespaces in XML Recommendation 的一部分。

首先介绍一下 XML 中标签的命名空间的概念。
命名空间就是标签的前缀,没有前缀的标签,使用的是默认的命名空间。
命名空间是用来解决标签命名冲突的。
指定一个标签的命名空间:命名空间 + 冒号(:) + 标签名

另外:
每一个命名空间都需要有一个 xsd (XML Schema Definition)文件与之对应,xsd 文件规定了 XML 中使用的标签的名字,以及各种标签的嵌套关系 —— 标签的书写规则 —— 语法

1、默认命名空间
xmlns 这个属性用来定义【默认命名空间】。

直接使用标签名的标签,使用【默认命名空间】进行解析。
如果默认命令空间未声明时,默认值为: http://www.w3.org/2000/xmlns/
在上例中,指定默认命名空间为: http://maven.apache.org/POM/4...

2、具有前缀的命名空间
xmlns:xyz 用来定义具有前缀(xyz)的命名空间。

为了使命名空间不发生命名上的冲突,一般都采用网址的形式,作为命名空间的值。
使用前缀作为命名空间的简写。

二、xmlns:xsi
xmlns:xsi定义了以 xsi 开头的命名空间。

如果值为 http://www.w3.org/2001/XMLSch...,该命名空间就可以在任何XML文件中直接使用,而无需指定 xsd 文件。
xmlns:xsi是标准核心命名空间之一。

引用:

1.3.1.2 The Schema Instance Namespace (xsi)

This specification defines several attributes for direct use in any XML documents,
These attributes are in the namespace whose name is http://www.w3.org/2001/XMLSch...
For brevity, the text and examples in this specification use the prefix xsi: to stand for this namespace; in practice, any prefix can be used.

https://www.w3.org/TR/xmlsche...

实际上,如果命名空间的值为:http://www.w3.org/2001/XMLSch...
则可以使用任何前缀,而使用 xsi 前缀只是为了简洁而已。
使用该命名空间时,无需指定 xsd 文件。

三、http://www.w3.org/2001/XMLSch...:schemaLocation
如上例,使用 xsi 作为 http://www.w3.org/2001/XMLSch... 命名空间的前缀:

xsi:schemaLocation

该命名空间下的 schemaLocation 属性定义了:非 http://www.w3.org/2001/XMLSch... 命名空间外的其它命名空间与其 xsd 文件的位置。
格式为(如果存在多个命名空间,可以有多行):命名空间 命名空间的xsd文件

举例:

1. 

原文出处:http://lixh1986.iteye.com/blo...

你可能感兴趣的