Schema 介绍:
有人会问,DTD和Schema都是对XML文档的一种约束,为什么不就选其中之一,而又有Sche
ma呢。因为DTD安全度太低了,也就是说它的约束定义能力不足,无法对XML实例文档做出
更细致的语义限制。其实细心的人会发现,在DTD中,只有一个数据类型,就是PCDATA(用
在元素中)和CDATA(用在属性中),在里面写日期也行,数字还行,字符更是没问题。而
Schema正是针对这些DTD的缺点而设计的,Schema是完全使用XML作为描述手段,具有很强
的描述能力,扩展能力和处理维护能力等。下面让我们看一个简单的例子吧:
hello.xml
-------------------
<?xml version="1.0"?>
Hello World!!

说明:
一个根元素:greeting;且这个元素不含属性,无子元素,内容是字符串。

hello.xsd
----------
<?xml version="1.0"?>
http://www.w3.org/2001/XMLSchema">

说明:
XML Schema文档后缀名是.xsd,完全符合XML语法,根元素是schema,命名空间xmlns:xsd
="http://www.w3.org/2001/XMLSchema,用元素定义实例文档中的元素,如gre
eting。xsd:string就是定义的数据类型了,其中的数据类型有很多,比如:int,double,
dateTime,Boolean,long,integer,float,等,总之Java等语言里有的数据类型它都有,但
要以“xsd:”开头。
让我们再看一个里面有子无素的例子:
customer.xml
-----------

teiki

No.237, Road Waitan, Shanghai

则可以写出以下的XML Schema文档:
customer.xsd
----------------
1: <?xml version="1.0"?>
2: http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10:
11:
说明:
实例文档customer.xml中,元素含有两个子元素,在Schema中凡是有两个以上
的子元素,就认为是复杂类型的,所以我们在Schema文档中采用ComplexType来定义该元素
。表示有多个XML子元素。
sequence表示子元素依次出现的顺序。
如果有多层子元素怎么办呢,同样的道理,有几层写几层,一直往下嵌就OK了,这里我要
说的是另一种方法,结构看上去会清晰一些。
address.xml
---------------

Teiki


<!-- address

追加一个地址子元素 --&gt
Zhejiang
Hangzhou
Xilu Road, No.121, 7F

下面就是采用ref元素来编写的这个Schema文档:
address2.xsd
----------------------
1: <?xm l version="1.0"?>
2: http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
说明:
如果按正常的写法,应该把13-21行的内容替换到每8行去,但这里使用ref元素可以直接
将其指向另一个模块,使文档更加具有可读性。
如果元素中包含属性怎么办呢?一样简单,只要在定义完子元素的后面再着定义属性就行
了。定义属性用“attribute”,还是举个例子吧
customer2.xml
---------------

Teiki

No.237, Road Waitan, Shanghai

这个例子和上面的一个例子差不多,只是在元素customer中设了一个属性id。
customer2.xsd
------------------
1: <?xml version="1.0"?>
2: http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10: <!-- 增加属性定义 --&gt
11:
12:
13:
14:
15:
说明:
需要注意的一点是,属性和元素不是一家的,所以要把它放在sequence外面写,但它们都
在customer的孩子,所以要写在complexType的里面。
下面再看一个例子:
order4-1.xsd
----------------------
1:<?xml version="1.0"?>
2:http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
上面的例子中,maxOccurs代表:相同元素最多出现的次数,与些相反的是minOccurs代表:
出现的最少次数。默认情况下两个都为“1”,如果把minOccurs设为“0”,表示该元素可
有可无。choice代表:可选的元素,也就是在这里面写的元素只能选其中之一,不能全写
。simpleType代表自定义数据类型,也就是name里的并不是真正的数据类型,而是根据自
己的意愿定制的。restriction代表对某一数据类型做约束,也就是只能取其中范围之内符
合要求的,比如第25-29行中,里面又有个元素enumeration代表枚举,也就是只能在枚举
的那几个中选一个,而下在的36-36行,里面又有一对元素minInclusive和maxInclusive
代表类型的取值范围,也就是只能取大于等于minInclusive并且小于等于maxInclusive的
数。
把这个Schema用在XML中是这样的:
<?xml version="1.0" encoding="UTF-8"?>
http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSc
hemaLocation="D:\ProgramCode\Year2\XML\practice\temp.xsd">

7-5005-6450-3
3

xyb
3

<!-- 注意下面这个是错的,因为超出了规定的范围 --&gt

7-5005-6450-3
13

从上面的注释到此,是错误的 --&gt

说明:
红色的部分是导入Schema的命令,绿色的是Schema文件的路径,如果用XMLSPY写时,会自
动加上。
对属性的设置,基本上和元素的差不多。比如:

这里我们讲id属性类型作为一种自定义数据类型idType。它的格式就是上面用到的也就是
类似于“7-5005-6450-3”样的。
而且,用attribute元素的use属性来定义是否是必须的属性。
required是必须值,optional是可选值,prohibited是无属性值。default属性是默认值。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12476590/viewspace-504261/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12476590/viewspace-504261/

XML DTD Schema 学习-Schema 介绍相关推荐

  1. XML DTD 语言学习笔记

    -XML DTD 全称:Document Type Definition 简介:用于定义文档的合法性.它定义了文档应该有哪些元素及其属性,还有其他一些约束性规则. 注意:DTD语言定义的文档类型是SG ...

  2. XML Schema学习札记(1)——基础总览

    内容整理自:www.w3school.com.cn 转载自:http://www.xgezhang.com/xml_schema_1.html 什么是XML Schema? XML Schema 是基 ...

  3. XML的DTD约束和Schema约束

    ajax是什么? 如图: XML是什么? 可扩展标记语言,标记数据,定义数据类型 允许用户对自己的标记语言进行定义的源语言 xml详细介绍:(http://www.w3school.com.cn/xm ...

  4. 【XML和Schema】Schema简介+简单定义和创建+连接到XML使用

    Schema的简单介绍 和DTD一样,是对XML的约束.不一样的是,Schema是基于XML语言规范的,并且相比于DTD,它包括了所有DTD能实现的功能,而且大大扩充了数据类型,扩展性强.可对整个XM ...

  5. xml教程之约束schema

    1.简介 XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: XML Schema符合XML语法结 ...

  6. XML —— DTD介绍

    一.DTD介绍 Document Type Definition: DTD是一种XML的约束方式,除了此种约束方式外,还有XSchema,XSchema比DTD的约束能力还要强,因此DTD正在逐渐淘汰 ...

  7. 关于Spring配置文件xml文档的schema约束

    最开始使用Spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version=&q ...

  8. XML:体验学习的乐趣之XML总结

    [前言] XML学习的资料是刘伟老师讲的视频,总共三个小时:利用半天的时间学习完了,趁热打铁,在网上查了些资料并针对着笔记进行一下总结. [宏观把控] 本来刘老师是讲了六章,但是本阶段学习只需学习前三 ...

  9. 什么是XML?如何学习XML?

    1.什么是XML? XML是一种类似于HTML的标记语言 XML是用来描述数据的 XML的标记不是在XML中预定义的,你必须定义自己的标记 XML使用文档类型定义(DTD)或者模式(Schema)来描 ...

最新文章

  1. VMware Workstations三种网卡模式
  2. pb mysql odbc_PB 连接Mysql ODBC/JDBC
  3. expect工具使用
  4. JavaScript打包与解包工具
  5. SAP UI5 sap.ui.vk 命名空间内的控件介绍
  6. 中英文标点符号切换的组合键_易混标点符号:一字线(—)、短横线(-)、浪纹线(~)...
  7. 【Ubuntu14】Nginx+PHP5+Mysql记录
  8. 如何通过Git GUI将自己本地的项目上传至Github
  9. Emacs设置侧边栏目录neotree
  10. Unity 获得某个物体的主贴图
  11. linux嵌入式学习
  12. python 超像素分割
  13. 画图软件gliffy
  14. 《Total Commander:万能文件管理器》——第7.2节.比较和同步文件夹
  15. Python+Excel法力无穷
  16. 质量管理-----解决问题A3报告写法
  17. C/C++浮点数的存储方式 IEEE-754标准,以及实现一个ftoa函数将浮点数转换为字符串
  18. 《游戏开发基础》课程论文丨基于Unity与Bolt的抗美援朝主题3D游戏设计
  19. 实时读取屏幕识别指定颜色
  20. PDF去除水印(4)-根据颜色移除对象

热门文章

  1. [Delaunay Triangle] [图形学] 优化方案
  2. 没有实习经验,没有项目经验,简历怎么写?
  3. netty对http协议解析原理解析
  4. Qt的.pro工程文件语法学习
  5. OMIM 表型和基因如何关联
  6. 再谈目前QQ空间主流的赚钱方法
  7. Linux文件和目录管理(2)
  8. 车联网用到了哪些关键技术,未来的趋势是什么
  9. SQLServer 2012 Always on配置全过程
  10. v-html加过滤器