一个XML文件如下:
Schema的一个简单实例<?xml version = "1.0" encoding="GB2312" standalone = "no"?>
Schema的一个简单实例
<!DOCTYPE 联系人列表  SYSTEM "fclml.dtd">
Schema的一个简单实例
Schema的一个简单实例
<联系人列表 公司=“大地公司”>
Schema的一个简单实例    
<联系人>
Schema的一个简单实例        
<姓名>张三</姓名>
Schema的一个简单实例        
<ID>001</ID>
Schema的一个简单实例        
<公司>A公司</公司>
Schema的一个简单实例        
<EMAIL>zhang@aaa.com</EMAIL>
Schema的一个简单实例        
<电话>(010)62345678</电话>
Schema的一个简单实例        
<地址>
Schema的一个简单实例            
<街道>五街1234号</街道>
Schema的一个简单实例            
<城市>北京市</城市>
Schema的一个简单实例            
<省份>北京</省份>
Schema的一个简单实例            
<ZIP>100001</ZIP>
Schema的一个简单实例        
</地址>
Schema的一个简单实例    
</联系人>
Schema的一个简单实例
Schema的一个简单实例    
<联系人>
Schema的一个简单实例        
<姓名>李四</姓名>
Schema的一个简单实例        
<ID>002</ID>
Schema的一个简单实例        
<公司>B公司</公司>
Schema的一个简单实例        
<EMAIL>li@bbb.org</EMAIL>
Schema的一个简单实例        
<电话>(021)87654321</电话>
Schema的一个简单实例        
<地址>
Schema的一个简单实例            
<街道>南京路9876号</街道>
Schema的一个简单实例            
<城市>上海</城市>
Schema的一个简单实例            
<省份>上海</省份>
Schema的一个简单实例            
<ZIP>200002</ZIP>
Schema的一个简单实例        
</地址>
Schema的一个简单实例    
</联系人>
Schema的一个简单实例
</联系人列表>

它的DTD文件fclml.dtd如下:
Schema的一个简单实例<?xml version="1.0" encoding="GB2312"?>
Schema的一个简单实例
Schema的一个简单实例
<!ELEMENT 联系人列表 (联系人)*>
Schema的一个简单实例
<!ELEMENT 联系人 (姓名,ID,公司,EMAIL,电话,地址)>
Schema的一个简单实例
<!ELEMENT 地址 (街道,城市,省份)>
Schema的一个简单实例
<!ELEMENT 姓名 (#PCDATA)>
Schema的一个简单实例
<!ELEMENT ID (#PCDATA)>
Schema的一个简单实例
<!ELEMENT 公司 (#PCDATA)>
Schema的一个简单实例
<!ELEMENT EMAIL (#PCDATA)>
Schema的一个简单实例
<!ELEMENT 电话 (#PCDATA)>
Schema的一个简单实例
<!ELEMENT 街道 (#PCDATA)>
Schema的一个简单实例
<!ELEMENT 城市 (#PCDATA)>
Schema的一个简单实例
<!ELEMENT 省份 (#PCDATA)>
Schema的一个简单实例
<!ATTLIST 联系人列表 
Schema的一个简单实例    公司 CDATA #REQUIRED
Schema的一个简单实例
>

同样的文档结构要用Schema来描述的话,可写做下面的样子。我们给这个文件取名fclmlschema.xml。也许你要问:"为什么以.xml作为扩展名,而不象DTD那样有个特殊的名字?"答案很明确,因为Schema本身就是XML文档实例,以.xml作为扩展名正是为了强调这一点。不过,这并不是说,就只能以.xml作为扩展名。如果你愿意,你完全可以给它取一个全新的名字,比如:.aaa、.schema、...,只要你的文件系统支持就行。

Schema的一个简单实例[1]<?xml version="1.0" encoding="GB2312" ?>
Schema的一个简单实例[2]
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
Schema的一个简单实例               xmlns:dt
="urn:schemas-microsoft-com:datatypes">
Schema的一个简单实例[3]    
<AttributeType name="公司"/>
Schema的一个简单实例[4]    
<ElementType name= "姓名"/>
Schema的一个简单实例[5]    
<ElementType name= "ID"/>
Schema的一个简单实例[6]    
<ElementType name= "公司"/> 
Schema的一个简单实例[7]    
<ElementType name= "EMAIL"/>
Schema的一个简单实例[8]    
<ElementType name= "电话" dt:type="fixed.14.4"/>
Schema的一个简单实例[9]    
<ElementType name= "街道"/> 
Schema的一个简单实例[10]  
<ElementType name= "城市"/>
Schema的一个简单实例[11]  
<ElementType name= "省份"/>
Schema的一个简单实例[12]  
<ElementType name= "地址" content="eltOnly"> 
Schema的一个简单实例[13]       
<element type= "街道" /> 
Schema的一个简单实例[14]       
<element type= "省份" /> 
Schema的一个简单实例[15]       
<element type= "城市" />
Schema的一个简单实例[16]  
</ElementType>
Schema的一个简单实例[17]  
<ElementType name= "联系人" content="eltOnly">
Schema的一个简单实例[18]       
<element type= "姓名" />
Schema的一个简单实例[19]       
<element type= "ID" />
Schema的一个简单实例[20]       
<element type= "公司" />
Schema的一个简单实例[21]       
<element type= "EMAIL" />
Schema的一个简单实例[22]       
<element type= "电话" />
Schema的一个简单实例[23]       
<element type= "地址" />
Schema的一个简单实例[24]  
</ElementType>
Schema的一个简单实例[25]  
<ElementType name= "联系人列表" content="eltOnly">
Schema的一个简单实例[26]       
<element type= "联系人" />
Schema的一个简单实例[27]       
<attribute type="公司"/>
Schema的一个简单实例[28]  
</ElementType>
Schema的一个简单实例[29]
</Schema>

逐字逐句地分析一下这个fclmlschema.xml: 
 
        [1]是XML类型声明语句,指明该文档是一个XML文档,并且符合版本1.0规范。另外,该文档采用GB2312编码。
        [2]是Schema声明语句,它包含了Schema命名空间的声明。本例中用到了两个命名空间:一是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文档是一个XML Schema文档;另一个是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定义了在本文档中可用的数据类型URI
        [3]是属性定义语句,它定义了属性“公司”。
        [4]-[11]是元素定义语句,这里共定义了8个元素:姓名、ID、公司、EMAIL、电话、街道、城市、省份。其中为"电话"元素定义了数据类型:fixed.14.4。
       [12]-[16]定义了本Schema的二级元素:地址,指明该元素包含三个子元素:街道、城市、省份。
[17]-[24]定义了本Schema的三级元素:联系人,它指明该元素包含六个子元素:姓名、ID、公司、EMAIL、电话、地址。
[25]-[28]定义了本Schema的顶级元素:联系人列表,指明该元素包含一个子元素:联系人,以及一个属性:公司。
[29]是结束标记语句,它指明该Schema的描述到此为止。

相关文章: