基本的XML Schema的使用就是这样,下面我们要介绍XML Schema的另外一个核心的部分也是Schema最关键的一个部分,就是关于Schema的名字空间(namespace)的问题。在上面关于XML Schema的介绍中,为了把读者集中到对XML Schema的语法理解上,特意省略了关于名字空间(namespace)的介绍。 首先我们还是从简单的例子着手,见下面的一段代码: <xsd:schema targetNamespace='http://www.SampleStore.com/Account' xmlns:xsd='http://www.w3.org/2000/08/xmlSchema' xmlns:ACC= 'http://www.SampleStore.com/Account'> <xsd:element name='订单号码' type='xsd:positiveInteger'/> <xsd:element name='商品编号' type='ACC:商品编号类型'/> <xsd:simpleType name='商品编号类型' base='xsd:string'> <xsd:pattern value='[A-Z]{1}d{6}'/> <!-上面的一行代码表示商品编码的第一个字符应该为字母,后面跟六个阿拉伯数字 --> </xsd:simpleType> 现在大家需要把注意力集中到开头几行的代码上来,如下: <xsd:schema targetNamespace='http://www.SampleStore.com/Account' xmlns:xsd='http://www.w3.org/2000/08/xmlSchema' xmlns:ACC= 'http://www.SampleStore.com/Account'> 实际上,一个给定的XML Schema定义了一系列的元素名称,类型名称,属性名称和属性组名称。比如上面的代码中的订单号码、商品编号、商品编号类型等。而这些名称都有它一定的作用范围,类似于C++中的局部变量的概念。而它们的作用范围是什么呢?就是在他们的目标名字空间(target namespace)中是有效的,在上面的代码中,我们可以看到它的目标名字空间为http://www.SampleStore.com/Account。 需要注意的是,目标名字空间的命名必须遵守URL的语义。同时需要注意的是,该目标名字空间并不是指一个具体的文件,仅仅是给它一个名字而已。实际上,在Schema中的定义和声明也可以引用其他的名字空间,我们可以把这种名字空间取名为源名字空间(source namespaces)。每一个Schema必须有一个目标名字空间,但是可以有多个源名字空间。 实际上,在一个给定的Schema中,每一个名称都是属于一个特定的名字空间的。名字空间的名称可能会很长(比如http://www.SampleStore.com/Account),但是它们可以用在XML Schema中的语义xmlns来进行简化。在上面的例子中,我们用xsd(取名为xsd是任意的,比如你可以取名为kkk,tt,ppp,gh都可以)来表示名字空间'http://www.w3.org/2000/08/xmlSchema',用ACC来表示名字空间http://www.SampleStore.com/Account。同时我们把http://www.w3.org/2000/08/xmlSchema这个名字空间称为标准名字空间(standard namespace),因为它是定义Schema语法的标准地 |
正在阅读:关于Schema的名字空间(namespace)关于Schema的名字空间(namespace)
2009-03-12 23:34
出处:PConline
责任编辑:ycx