基本的

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

='[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

语法的标准地

在上面的代码中,目标名字空间(

targetNamespace

)包含了名字订单号码、商品编号、商品编号类型。而名字

schema,element,simpleType,pattern,string

positiveInteger

是属于标准名字空间

http://www.w3.org/2000/08/xmlSchema

的。也就是说,它们的意义是在

http://www.w3.org/2000/08/xmlSchema

中进行定义的。实际上,所有标准的

XML Schmea

语法、语义和数据结构都在

http://www.w3.org/2000/08/xmlSchema

中进行定义。这样解析器碰到一个名称

(

schema,element

等等

)

的时候,就知道应该在哪里去得到关于它的正确的语义的使用方法。

对于标准名字空间和目标名字空间,我们不需要指定它的

SchemaLocation

。因为对于目标名字空间来讲,

SchemaLocation

就是文档自己。对于标准名字空间来讲,它是众所周知的,也不需要指定。而对于源目标空间来讲,就需要指定它的

SchemaLocation

。见下面的例子:

schema targetNamespace='http://www.SampleStore.com/Account'

xmlns

='http://www.w3.org/1999/xmlSchema'

xmlns:ACC

= 'http://www.SampleStore.com/Account'

xmlns:PART

= 'http://www.PartnerStore.com/PartsCatalog'

import namespace='http://www.PartnerStore.com/PartsCatalog'

schemaLocation='http://www.ProductStandards.org/repository/alpha.xsd'/

element name='

订单号码

' type='positiveInteger'/

element name='

商品编号

' type='ACC:

商品编号类型

'/

simpleType

name='

商品编号类型

' base='string'

pattern ='[A-Z]{1}d{6}'/

/simpleType

element name='

手表

' type='PART:

手表类型

'/

在谈关于源目标空间的

schemaLocation

之前,我们先看一下这行代码:

xmlns='http://www.w3.org/1999/xmlSchema'

它表示什么呢?它表示在文档中所有的名字前面如果没有前缀的,就是由

http://www.w3.org/1999/xmlSchema

进行定义和解析的。这样无疑是很合理的。因为事实上,我们

XML Schema

中的很多名称

(

比如

schema,element,simpleType,pattern

等等

)

都是来自这个标准名字空间的,反复往前面加前缀,你烦不烦呀?所以干脆把它定义成默认的,所以如果一个名称前面没有前缀,就认定它是由

http://www.w3.org/1999/xmlSchema

进行处理的。

好,接下来我们来注意

import namespace='http://www.PartnerStore.com/PartsCatalog'

schemaLocation='http://www.ProductStandards.org/repository/alpha.xsd'/

这段代码,因为

http://www.PartnerStore.com/PartsCatalog

是一个源名字空间,所以必须指定它的

schemaLocation

,采用关键字

import

来引入这个

schemaLocation

注意到下面这行代码

element name='

手表

' type='PART:

手表类型

'/

它表示元素手表的类型(

type

)手表类型是在

http://www.PartnerStore.com/PartsCatalog

中进行定义的。解析器如果要寻找关于手表类型的定义,需要在名字空间

http://www.PartnerStore.com/PartsCatalog

下进行寻找。

到此为止,你应该对名字空间有了一个比较感性的理解。

posted on 2007-01-19 00:11 苦笑枯 阅读(160) 评论(0)  编辑  收藏 所属分类: Xml

java schema名_关于Schema的名字空间相关推荐

  1. mysql schema 定义_数据库 schema含义

    数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的Schema,指的是数据库中的一个名字空间,它包含一组表.视图和存 ...

  2. cmd运行java语名_怎么用cmd运行java文件

    [怎么用cmd运行java文件]怎么在cmd里面执行java文件 找到存放要执行的JAVA的文件目录,然后在目录中运行CMD,运行JAVA程序之前要先编译,1.javac 文件名.java回车2.ja ...

  3. java 群名_网名丨沙雕又可爱的网名/群名

    立刻设置我为星标/置顶每天第一时间推送给你 每天都有不一样的精彩,喜欢就多多分享哦 搞笑的英文谐音梗网名 藏龙wolf 冰糖Shirley 东Nancy北 添砖java 地狱women 真的Dior丝 ...

  4. javac的java扩展名_通过命令行方式运行Java程序时,使用的命令是javac,而且要求必须写出该文件的完整文件名,包括扩展名.java。 ( )...

    通过大戟科植物都有乳汁. 在启动Excel之初,命令名该应用程序自动为用户建立一个工作簿,名为 ( ). 默认状态下,行方行J序时须写在启动Excel之初,应用程序为用户建立的 book1 中,包含 ...

  5. C++ 语言学习 day01 (linux ),基本输入输出错误输出函数,名字空间的含义,内联函数,缺省参数,引用 ,、new操作符

    1.介绍c++ C++头文件风格 c++ 老风格:以.h结尾 是c语言风格  stdio.h  (尽量不) c++的转换风格: 去掉.h 在文件名前加c 例如#include <cstdio&g ...

  6. C++ 名字空间(namespace)

    C++支持多种作用域:全局域.局部域.块域.类域,还有名字空间域等. 作用域:规定变量能够被访问的范围,离开这个范围的变量不能被访问. 作用域是一个独立的地盘,让变量不会暴露出去,也就是说作用域最大的 ...

  7. python输入名字配对情侣网名_定制情侣网名输入名字

    5字经典情侣网名大全一对:感情的倔强 |执着的梦想 时光恋人i ♥ 时光爱人i毕竟你是光 ♥ 我无法独享祖国小嫩草 ♥ 祖国小花朵流年,残颜 &heartqq情侣网名 06-02|查看全文 在 ...

  8. python输入名字配对情侣网名_输入名字得情侣网名

    设计是 把一种设想 通过合理的规划 周密的计划 通过各种感觉形式传达出来的过程.人类通过劳动改造世界,创造文明,创造物质财富和精神财富,而最基础.最主要的创造活动是造物.设计便是造物活动进行预先的计划 ...

  9. mysql scheme是什么意思_数据库Schema两种含义~~

    1.数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表.视 ...

最新文章

  1. data-参数说明(模态弹出窗的使用)
  2. 使用python xmodem 模块下载及上传文件
  3. VTK:Filtering之GaussianSplat
  4. 财政指标是什么意思_in the black是“在黑暗中”吗?那in the dark是什么意思?
  5. 1,2,2,3,3,4,4,4,......
  6. 设计资源类的网站有哪些?
  7. 【年终总结】可圈可点的2018年
  8. python处理pcap文件_[转载]Python读取pcap文件
  9. web安全day32:人人都要懂的LAMP--mysql-server服务安装及安防配置
  10. 提高专业技能之 “专利申请”
  11. Treejs+EasyUI+Vuejs实操
  12. IDEA修改Jsp模板
  13. delphi多线程TThread详解
  14. php命令行生成文件,php命令行生成与读取配置文件
  15. 分形之——谢尔宾斯基三角形
  16. 儿童节html5小游戏,六一儿童节游戏大全,六一儿童节游戏有哪些
  17. 《深入理解java虚拟机》学习-第三章-内存分配策略
  18. java guardedby_JAVA多线程(五)模式-Guarded Suspension
  19. java : word,excel,img,ppt各种文档转换pdf格式以流方式
  20. 极客日报:恶意软件感染超1000万台安卓设备;淘宝App已支持“云闪付”付款;OpenSSH 8.8发布

热门文章

  1. P4719 【模板】“动态 DP“动态树分治(矩阵/轻重链剖分/ddp)
  2. 【SHOI2017】相逢是问候【扩展欧拉定理】【复杂度分析】【线段树】
  3. 【CF1349D】Slime and Biscuits【概率期望】【解方程】
  4. CF1146F - Leaf Partition(树形dp)
  5. ICPC网络赛第二场G Limit
  6. P2870 [USACO07DEC]Best Cow Line G
  7. Acwing 309. 装饰围栏
  8. 欢乐纪中某A组赛【2019.7.10】
  9. 欢乐纪中某A组赛【2019.7.6】
  10. P2680-运输计划【LCA,树上差分,二分答案】