XSD 小结

XSD 小结

在实际开发中,常会遇到一些 XML 类型的配置文件,那么如何去理解其所含的标签,以及正确的进行配置呢!

追本溯源,如果想明确 XML 文件中的每一个标签的含义,最好的办法是找到定义这个文档的人问道问道。

当然,这是不现实的,好在,XML 文档中提供了一个 XSD 文档地址供我们查阅。

XSD,XML Schema Definition,是定义 XML 文档的文档。

以 Maven 的 Settings.xml 文件为例:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
          	http://maven.apache.org/xsd/settings-1.0.0.xsd">

<settings>

实际上,几乎每一个 XML 文档的根标签中都有诸如上面的属性,那么他们有啥含义呢!

简单来说,就是声明该标签中的默认命名空间,并指明了解析该文档的所需的 XSD 文档的地址。

xmlns, xml name space 默认的命名空间,其后的值通常是一个链接,其实只要确保唯一即可,XML 解析器并不会去访问该链接。

xmlns:xsi 前缀为 xsi 的命名空间,xsi, xml schema instance 表示一个 xml schema 实例,实际上,这个前缀是什么并不重要,只要在当前文档中唯一即可,重要的是其后赋的 http://www.w3.org/2001/XMLSchema-instance 值。引入该命名空间,实际是为了使用 schemaLocation 来指明当前 XML 文档的 XSD 定义文档的地址。

xsi:schemaLocation=<要使用的命名空间> <针对前面的命名空间进行定义的 XSD 地址>

访问 http://maven.apache.org/xsd/settings-1.0.0.xsd 查询 XML Shema 定义。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
	elementFormDefault="qualified" 
	targetNamespace="http://maven.apache.org/SETTINGS/1.0.0">

</xs:schema>

xmlns:xs="http://www.w3.org/2001/XMLSchema" 指明了当前文档中使用 xs 前缀的标签的命名空间。

xmlns="http://maven.apache.org/SETTINGS/1.0.0" 默认命名空间。

elementFormDefault="qualified" 表示该文档中定义的标签在被使用时,必须有命名空间的限定。

targetNamespace="http://maven.apache.org/SETTINGS/1.0.0" 表示文档中定义的标签是限定在该命名空间中的。

Settings.xmlsettings-1.0.0.xsd 的根标签的属性联系起来,可知,前者使用默认的命名空间、指定 XSD 位置时使用的命名空间,都需要同后者的 xmlnstargetNamespace 保持一致。

XSD 文档中是如何定义 XML 文档的,可以参见 XML Schema

实际上,XSD 和 XML 的格式很像,那么 XSD 中使用的标签又是从何而来,凭什么决定的呢!

寻其本源,最终是大家约定的结果,W3C 制定规则,而软件商则根据该规则来编写 XML 解析器。

网络世界就是规则的世界,我们身处的世界的本质或许也是一条条规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值