XML Schema和名域(命名空间)

XML Schema和名域 Schema 是一些规则的集合(也称为语法或者语汇),其中包括了类型定义(简单和复杂类型)以及元素和属性声明。由于XML中可能存在不同的语汇来描述不同的元素和属性,因此需要使用名域(namespace)和前缀来避免元素和属性声明之间的模糊性。当你使用来自多个名域的schema时,分清元素和属性名称是最基础性的工作。 一个名域通常有一串字符串来相互区别,如 "urn:www.microsoft.com", " http://www.xml.org.cn ", " http://www.w3c.org/2001/XMLSchema "以及 "uuid:1234567890"等。 XML Schema的序言 XML schema的开头时是一些导言,之后才是正式的声明。在schema 元素的导言中可能包含三个可选的属性。 例如,下面的语法使用的schema元素引用了三个最常使用的名域: <schema xmlns=" http://www.w3c.org/2001/XMLSchema " xmlns:xsd=" http://www.w3c.org/2001/XMLSchema-datatypes " xmlns:xsi=" http://www.w3c.org/2001/XMLSchema-instances " version"1.0"> </schema> 前两个属性用XML名域来标识W3C中的两个XML schema规范。第一个 xmlns属性包含了基本的XML schema元素,比如element, attribute, complexType, group, simpleType等。第二个xmlns属性定义了标准的XML schema属性类型例如string, float, integer, 等。 缺省名域 对于任何一个XML Schema定义文档(XSD)都有一个最顶层的schema (XSD)元素。而且该schema (XSD)元素定义必须包含下面的名域: http://www.w3.org/2001/XMLSchema 作为名域的标识符(在声明中作为元素或属性的前缀),你也可以不使用xsd或xsi。 我们分别来观察XSD和XML实例文档中相关的名域。比如前面介绍student.xsd的序言是这样的: <schema xmlns=" http://www.w3.org/2001/XMLSchema " xmlns:sl=" http://www.xml.org.cn/namespaces/StudentList " targetNamespace=" http://www.xml.org.cn/namespaces/StudentList "> 这里的targetNamespace属性表示了该shema所对应的名域的URI。也就是说在引用该Schema的其它文档中要声明名域,其URI应该是 targetNamespace的属性值。例如在这里因为要用到student.xsd自己定义的扩展数据类型,所以也声明的名域xmlns:sl= " http://www.xml.org.cn/namespaces/StudentList "。 我们再来看由该schema规定的XML文档的开头将是什么样子: <studentlst xmlns=" http://www.xml.org.cn/namespaces/StudentList " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation=" http://www.xml.org.cn/namespaces/StudentList student.xsd"> 其中缺省名域声明xmlns=" http://www.xml.org.cn/namespaces/StudentList "就是和刚刚声明的XML Schema的名域相结合来规定该XML文档。xmlns:xsi=" http://www.w3.org/2001/XMLSchema - instance" 是任何XML实例文档固有的名域,当然按照前面所说的名域名称xsi是可以自己规定的。而xsi:schemaLocation="http: //www.xml.org.cn/namespaces/StudentList student.xsd"则规定了该名域所对象的schema的位置,即在相同路径的student.xsd文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值