三、 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可