分享
 
 
 

XML简明教程(三)

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

三、 CHEMA简介 (一) Schema的引入

通过上几章介绍,相信大家对XML的基本语法已经有了一个基本了解。 XML本身的语法很严谨,也就是要求格式必须严整,包

括区分大小写、整个文档有且只有一个根、需要序言等等。在符合格式化良好的要求以后,就可以写出规则整齐、可以通过内置XML解

析器的浏览器解析XML文档了。但XML本身也相当的灵活,在符合基本语法的前提下,可以任意的编写各种符合XML语法要求的文档,这

也正是XML可扩展的灵活性所在,但同时也产生了问题,比如要写一个说明个人信息的XML文档,可以这样写:

<?xml version = “1.0” encoding=”GB2312” ?>

<resume>

<name>张立东</name>

<sex>男</sex>

<age>28</age>

<birthday>1974-8-10</birthday>

<address>北京市 海淀区</address>

</resume>

也可以这么写:

<?xml version = “1.0” encoding=”GB2312”?>

<resume>

<name>张立东</name>

<sex>男</sex>

<age>28</age>

<birthday>

<year>1974</year>

<month>8</month>

<day>10</day>

</birthday>

<address>北京市 海淀区</address>

</resume>

上面的两个文档对于人来说是很容易看懂的,但对于机器来说,它们就无法判断

<birthday>1974-8-10</birthday>和

<birthday>

<year>1974</year>

<month>8</month>

<day>10</day>

</birthday>

中的内容是否相同了。这就需要一个相应的“约束”,来规定一个固定的格式,这样机器才可以正确的识别、比较和处理。正如

没有规矩难以成方圆一样, XML这么强大的语言自然也有这方面的考虑,这也就是DTD和Schema所要完成的功能。

(二)DTD和Schema

提到Schema就必须提到DTD。最早建立对SGML约束的是DTD,而XML又是SGML的超集,所以DTD由于历史的原因也可以对XML本身

进行约束,比如:每个节点可以含有的元素、元素的个数等等。但它也有很多的局限性,如不能定义元素值的范围、学习起来有一定

的难度(要学习一种新的语法)等等。而最新的XML约束标准就可以轻松的满足要求,这就是Schema。Schema与DTD不同,DTD本身有自

己的语法和要求,而Schema是完全符合XML语法的,只要对XML有初步的了解,就很容易对Schema上手。说了这么多,还是首先让我们

通过一个例子来看看Schema是如何定义XML结构的吧:

[1]<?xml version="1.0" encoding="GB2312" ?>

[2]<Schema xmlns="urn:schemas-microsoft-com:xml-data"

[3] xmlns:dt="urn:schemas-microsoft-com:datatypes">

[4] <ElementType name= "name"/>

[5] <ElementType name= "sex"/>

[6] <ElementType name= "age"/>

[7]

[8] <ElementType name= "address" />

[9] <ElementType name= "month"/>

[10] <ElementType name= "year"/>

[11] <ElementType name= "day"/>

[12] <ElementType name= "birthday" content="eltOnly">

[13] <element type= "year" />

[14] <element type= "month" />

[15] <element type= "day" />

[16] </ElementType>

[17] <ElementType name= "resume" content="eltOnly">

[18] <element type= "name" />

[19] <element type="sex"/>

[20] <element type="age"/>

[21] <element type="birthday"/>

[22] <element type="address"/>

[23] </ElementType>

[24]</Schema>

下面对上面的例子做一个简单的讲解:

[1]行是一个XML序言,从这行也可以看出Schema是符合XML基本语法要求的。

[2]-[3]是对Schema名域的一个定义。(由于我们这里是一个XML的入门文章,有关XML的名域问题可以参考相应的XML文档。)

[4]定义一个名字为name的元素。

[5]-[11]分别是对sex、age、address、month、year、day元素的定义。

[12]-[16]是对birthday元素的一个定义,但birthday这个元素比较特殊,它其中又包含了year、month和day三个元素。

其中content这个属性是对元素中的数据进行说明的。根据content中的数据eltOnly可以知道这个birthday元素的数据只能够由元素构

成。

[17]-[23]是对resume这个元素的定义,resume这个元素是由name、sex、age、birthday、address这几个元素构成的。

从上面的例子可以知道如何对一个简单的元素进行定义,也可以知道一个由其他元素组成的元素如何定义。通过由元素组成的元

素的这种定义,就可以定义一个嵌套结构的XML树的基本结构。

到这里读者对Schema已经就有了一个基本的了解,也该是我们给Schame下一个简单定义的时候了:

XML Schema是用来描述XML元素和属性的。它包括属性和元素类型说明,是可以为XML元素和属性提供数据的类型校验模块。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有