XML第十一讲:XML与Schema深度剖析
来源:互联网 发布:管家婆软件不能打印 编辑:程序博客网 时间:2024/04/29 20:32
上一讲我们讲解了Schema与XML的几种常用用法,现在我们来针对前面所学,做一下练习:
1. 分析XML实例,写出它的对应的Schema文件,先根据下面的框架写好XML文档,再根据对应的XML文档写Schema文件。
<学生名册>
<学生 学号="1">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>20</年龄>
</学生>
<学生 学号="2">
<姓名>李四</姓名>
<性别>女</性别>
<年龄>19</年龄>
</学生>
<学生 学号="3">
<姓名>王五</姓名>
<性别>男</性别>
<年龄>21</年龄>
</学生>
</学生名册>
1)根据上面内容,对应的XML文档如下所示:
<?xml version="1.0" encoding="UTF-8"?><学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd"><学生 学号="1"><姓名>张三</姓名><性别>男</性别><年龄>20</年龄></学生><学生 学号="2"><姓名>李四</姓名><性别>女</性别><年龄>19</年龄></学生><学生 学号="3"><姓名>王五</姓名><性别>男</性别><年龄>21</年龄></学生></学生名册>2) 在写对应的Schema文档,我们先来剖析一下整个结构,并且理清一下如何书写的思路。先从大树着手,从宏观角度来分析
(1)根元素为学生名册,它包含了若干个学生,所以学生名册一定是一个complexType,一定是个复杂类型
(2)现在分析学生,它有属性,所以也一定是一个compleType,学生有一个学号属性attribute,学号用一个int来表示即可。所以学号写成xs:int 或者 xs:integer 都是可以的。
(3)学生下面有三个子元素,它们都是simpleType,简单类型
姓名:字符串
性别:男或者女,可以用 enumeration 枚举
年龄:介于 0 - 150 之间,所以可以用restriction base 加上一个范围(4)以上就是整个文档结构,定义的时候可以先定义好类型,再去指定好元素,元素的Type等等定义的类型,第二种方式是一下子直接定义完,也就是compleType定义在element里面,像内部类一样,我们采取第二种方式,第二种方式会更加简洁一点。
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:element name="学生名册"><!--学生名册是个复合类型,学生名册里面有多个学生--><xs:complexType><!--学生名册里面有多个学生,所以可以用sequence--><!--每个sequence里面就一个元素:学生,而且它可以不断重复,0次或者多次--><xs:sequence minOccurs="0" maxOccurs="unbounded"><xs:element name="学生"><xs:complexType><!--学生下面是姓名、性别、年龄而且不是重复出现的,所以我们sequence后面就不添加属性了,它这样就表示下面的元素是各出现一次--><xs:sequence><!--姓名可以直接使用schema给我们提供的内置数据类型了--><xs:element name="姓名" type="xs:string"/><!--性别只能用simpleType定义了,男和女是基于字符串,二者选一个--><xs:element name="性别"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="男"/><xs:enumeration value="女"/></xs:restriction></xs:simpleType></xs:element><xs:element name="年龄"><xs:simpleType><xs:restriction base="xs:integer"><xs:minInclusive value="1"/><xs:maxInclusive value="150"/></xs:restriction></xs:simpleType></xs:element></xs:sequence><!--定义学生的属性:学号,注意是在学生的类型complexType里面定义--><xs:attribute name="学号" type="xs:integer"/></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>
2. 总结一下:
1) Schema是另一种文档类型定义,它遵循XML的语言规范。
2) Schema是可扩展的,支持命名空间;
3) Schema支持更多的数据类型与元素类型;
4) Schema用element声明元素,用attribute声明元素的属性;
5) Schema用simpleType定义简单类型(不包含子元素,不包含属性),用complexType定义复杂类型(包含子元素或者包含属性,或者即包含子元素又包含属性的)。学好XML还得多联系啊!!
- XML第十一讲:XML与Schema深度剖析
- XML精讲之Schema
- XML第七讲:Schema详解
- web.xml深度剖析
- schema与xml
- XML第十七讲:根据Schema生成XML文档
- XML , DTD 与 XML Schema简述
- XML DTD与Schema约束
- XML Schema与DTD比较
- XML中的Schema与DTD
- XML DTD与Schema约束
- 【XML】标准化DTD与Schema
- XML Schema
- XML Schema
- XML Schema
- xml schema
- XML Schema
- XML Schema
- 10个有用的第三方iOS开源库
- 基于VTK&ITK的Qt应用程序开发
- 小米手机刷机失败补救方法详解
- 关于生活
- ffmpeg和SDL教程(二)输出到屏幕
- XML第十一讲:XML与Schema深度剖析
- 小米将推出智能电视
- latex中使用minted宏包格式化编程语言代码和支持语法高亮的测试文件
- 解决修改jsp文件后,浏览器内容未更新
- 金山的第三次创业:“用玩儿的方式做广告”
- RMAN删除过期的归档日志
- 由对称性解2-SAT问题 (by 伍昱,03年IOI国家集训队论)
- 孕妈咪性日常生活留意的问题
- 性日常生活与淋浴的奥秘