java schema名_关于Schema的名字空间
基本的
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的名字空间相关推荐
- mysql schema 定义_数据库 schema含义
数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的Schema,指的是数据库中的一个名字空间,它包含一组表.视图和存 ...
- cmd运行java语名_怎么用cmd运行java文件
[怎么用cmd运行java文件]怎么在cmd里面执行java文件 找到存放要执行的JAVA的文件目录,然后在目录中运行CMD,运行JAVA程序之前要先编译,1.javac 文件名.java回车2.ja ...
- java 群名_网名丨沙雕又可爱的网名/群名
立刻设置我为星标/置顶每天第一时间推送给你 每天都有不一样的精彩,喜欢就多多分享哦 搞笑的英文谐音梗网名 藏龙wolf 冰糖Shirley 东Nancy北 添砖java 地狱women 真的Dior丝 ...
- javac的java扩展名_通过命令行方式运行Java程序时,使用的命令是javac,而且要求必须写出该文件的完整文件名,包括扩展名.java。 ( )...
通过大戟科植物都有乳汁. 在启动Excel之初,命令名该应用程序自动为用户建立一个工作簿,名为 ( ). 默认状态下,行方行J序时须写在启动Excel之初,应用程序为用户建立的 book1 中,包含 ...
- C++ 语言学习 day01 (linux ),基本输入输出错误输出函数,名字空间的含义,内联函数,缺省参数,引用 ,、new操作符
1.介绍c++ C++头文件风格 c++ 老风格:以.h结尾 是c语言风格 stdio.h (尽量不) c++的转换风格: 去掉.h 在文件名前加c 例如#include <cstdio&g ...
- C++ 名字空间(namespace)
C++支持多种作用域:全局域.局部域.块域.类域,还有名字空间域等. 作用域:规定变量能够被访问的范围,离开这个范围的变量不能被访问. 作用域是一个独立的地盘,让变量不会暴露出去,也就是说作用域最大的 ...
- python输入名字配对情侣网名_定制情侣网名输入名字
5字经典情侣网名大全一对:感情的倔强 |执着的梦想 时光恋人i ♥ 时光爱人i毕竟你是光 ♥ 我无法独享祖国小嫩草 ♥ 祖国小花朵流年,残颜 &heartqq情侣网名 06-02|查看全文 在 ...
- python输入名字配对情侣网名_输入名字得情侣网名
设计是 把一种设想 通过合理的规划 周密的计划 通过各种感觉形式传达出来的过程.人类通过劳动改造世界,创造文明,创造物质财富和精神财富,而最基础.最主要的创造活动是造物.设计便是造物活动进行预先的计划 ...
- mysql scheme是什么意思_数据库Schema两种含义~~
1.数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表.视 ...
最新文章
- data-参数说明(模态弹出窗的使用)
- 使用python xmodem 模块下载及上传文件
- VTK:Filtering之GaussianSplat
- 财政指标是什么意思_in the black是“在黑暗中”吗?那in the dark是什么意思?
- 1,2,2,3,3,4,4,4,......
- 设计资源类的网站有哪些?
- 【年终总结】可圈可点的2018年
- python处理pcap文件_[转载]Python读取pcap文件
- web安全day32:人人都要懂的LAMP--mysql-server服务安装及安防配置
- 提高专业技能之 “专利申请”
- Treejs+EasyUI+Vuejs实操
- IDEA修改Jsp模板
- delphi多线程TThread详解
- php命令行生成文件,php命令行生成与读取配置文件
- 分形之——谢尔宾斯基三角形
- 儿童节html5小游戏,六一儿童节游戏大全,六一儿童节游戏有哪些
- 《深入理解java虚拟机》学习-第三章-内存分配策略
- java guardedby_JAVA多线程(五)模式-Guarded Suspension
- java : word,excel,img,ppt各种文档转换pdf格式以流方式
- 极客日报:恶意软件感染超1000万台安卓设备;淘宝App已支持“云闪付”付款;OpenSSH 8.8发布
热门文章
- P4719 【模板】“动态 DP“动态树分治(矩阵/轻重链剖分/ddp)
- 【SHOI2017】相逢是问候【扩展欧拉定理】【复杂度分析】【线段树】
- 【CF1349D】Slime and Biscuits【概率期望】【解方程】
- CF1146F - Leaf Partition(树形dp)
- ICPC网络赛第二场G Limit
- P2870 [USACO07DEC]Best Cow Line G
- Acwing 309. 装饰围栏
- 欢乐纪中某A组赛【2019.7.10】
- 欢乐纪中某A组赛【2019.7.6】
- P2680-运输计划【LCA,树上差分,二分答案】