schema规范中:
    1. namespace : schema文件的标识属性,相当于id,每个schema文件需要有一个唯一的namespace值;
    2. targetNameSpace :指定当前schema文件的namespace值,它的值是一个url(很有可能不存在);
    3. xmlns :引入一个schema约束,它的值为一个schema的namespace值
            属性? : 用xmlns属性
            属性值: 对应的schema文件的id(namespace值)
    4.schemaLocation:如果引入的schema不是w3c组织定义,必须指定schema文件的位置;
    5.element :定义标签(常用类型:string,decimal,integer,boolean,date,time)

    6.elementFormDefault:控制元素。有两个取值:"qualified"-在XML文档中使用局部元素时,必须使用限定短名作为前缀;unqualified-在XML文档中使用局部元素时,可以省略限定短名;

    7.attributeFormDefault:控制属性的。用法与elementFormDefault一样;

    8.如果引入了N个约束, 需要给n-1个取别名(如下:xsd为w3c约束的别名);

复杂类型:一个元素如有属性或者包含子元素,那么这个元素就是复杂类型。复杂类型使xsd:complexType定义。复杂类型要么具有简单内容,要么具有复杂内容。内容是指在开始标签和结束标签之间的字符数据和子元素。简单内容是指内容只具有字符数据没有子元素,简单内容是用xsd:simpleContent元素来定义(简单内容要有属性,否则等同于简单类型)。除此之外的就是复杂内容,使用xsd:complexContent来定义。

      xsd:attribute元素的use、default、fixed属性

     use属性指示xsd:attribute元素是否需要出现,其有效值为:optional(可选的,use属性的默认值)、prohibited(禁止使用属性)、required(属性是必须的)。对全局声明的属性不能使用use属性。

 例子:book.xsd



   
      
         
            
            
               
               
                  
                  
                     
                     
                        
                           
                              
                              
                           
                        
                     
                     
                        
                        
                           
                           
                              
                              
                              
                              
                           
                        
                     
                     
                  
               
            
         
      
   
   
   
   
      
      
         
            
            
            
            
         
      
   

  book.xml




   
   
      
      JavaScript开发
      
      
         John
         Smith
      
      
      100
      
      EN
   

派生复杂类型--扩展

      当从简单类型或具有简单内容的复杂类型派生复杂类型时(注意:简单内容直接或间接派生出来的复杂类型也必须是简单内容,简单内容不能派生复杂内容),使用xs:simpleContent元素,如果是扩展派生,使用xs:extension元素,如果是限制派生,使用xs:restriction元素。

 1.扩展简单内容

        扩展简单内容可以从简单类型或具有简单内容的复杂类型扩展。由于不能通过扩展简单内容来得到复杂内容,因此对简单内容的扩展只能是添加新的属性

 employee.xsd (标签employee属性number扩展了属性birthdate)

 (1).从具有简单内容的复杂类型扩展



   
   
      
         
            
         
      
   
   
      
         
            
         
      
   

  (2).从简单类型扩展



   
   
      
         
            
            
         
      
   

  employee.xml


2.扩展纯元素内容

       从纯元素内容的复杂类型扩展,我们可以在基类型的内容模型最后添加新的与元素或属性。模式处理器会把基类型的内容模型和新增的内容模型合并到一个sequence中。注意不能对一个all组的基类型进行扩展添加新的元素(添加属性是可以的)。

 fruit.xsd



   
   
      
         
            
               
               
            
         
      
   
   
      
         
            
               
            
         
      
   

  fruit.xml



   apple
   banane
   pear

3.扩展混合内容

     混合内容的扩展跟纯元素的扩展类似,唯一的要求是派生类型也必须具有混合内容,也就是mixed=true。

 employee.xsd



   
   
      
         
         
      
   
   
      
         
            
               
            
         
      
   

  employee.xml



   Jon
   28
   15

4.扩展空内容

   从空内容类型扩展,派生类型可以具有纯元素内容,也可以就混合内容。

  employee.xsd



   
   
      
   
   
      
         
            
               
               
            
            
         
      
   

  employee.xml



   Tom
   27

restriction数据类型的限定:


 参考:http://blog.csdn.net/tuolingss/article/details/8541687