schema语法学习


schema语法学习_第1张图片
XML Schema 学习总结  

简单类型    
  
1、简单元素:指只能包含文本内容,不能够包含子元素,也没有属性的元素。    
格式:    
例子:    
   
   
   
  


2、属性:所有的元素属性均被声明为简单类型。只有复杂类型的元素才可以拥  
有属性。    
格式:    
例子:    
  
所有的属性默认都是可选的,我们可以通过使用use 关键字明确的指出是可选  
或是必需:    
   
 


我们可以通过使用default 或fixed 为简单类型(简单元素、属性)指定默认值  
或固定值,    
如下:    
   
   
  
对简单类型值的约束    
  
约束                                       含义   
enumeration                          定义允许值的枚举   
fractionDigits                         指定最多允许的小数位数(必须大 于或等于零)   
length                                    精确指定允许的最大字符长度   
maxExclusive                        指定允许的最大数值,必须小于该值   
maxInclusive                         指定允许的最大数值,必须小于或等于该值   
maxLength                            指定允许的最大字符长度(必须大于等于零)   
minExclusive                         指定允许的最小数值,必须大于该值   
minInclusive                          指定允许的最小数值,必须大于或
等于该值   
minLength                             指定允许的最小字符长度   
pattern                                   指定允许值的模式,类似正则表达式   
totalDigits                              精确指定数字个数   
whiteSpace                           处理空白(保留:preserve;替换: replace;合并:collapse)   


复杂类型    
  
复杂类型指包含其他元素/属性的元素类型。    
  
   
rose    
alex    
Hi,My Girl!    
   
  
  


在上面的例子中,元素message 就是一个复杂类型的元素,我们在Schema  
中这样描述:    
   
   
   
   
   
   
   
   
注意元素to,from,body 包含在 中,表明  这些元素必须按照定义的顺序出现在你的XML 文件中。 

当然,message 元素也可以包含一个type 属性,指向我们定义的复杂类型,  
象这样:    
   
   
   
   
   
   
   
 

复杂类型和简单类型之间最根本的区别就是:复杂类型的内容中可以包含其他元素,也可以带有属性(Attribute ),但简单类型既不能包含子元素,也不能带有任何属性。


 Schema 综述

1、如何描述空元素,比如: ?    
因为是空元素,所以不包含子元素,同时由于包含属性,用attribute 定义,象这样:    
   
   
   
   
 

也可以这样:    
   
   
   
 

2、如何描述只含有简单内容(文本/属性)的元素,比如:    
Hi,My Girl! ?    
由于只包含简单内容,所以我们在元素内容定义的外面用simpleContent  指出,当描述简单内容的时候,我们需要在简单内容里使用extension 或者restriction 来描述内容的数据类型。象这样:    
   
   
   
   
   
   
   
   
   
其中message 的属性date 的数据类型为日期(xs:date ).顺便提一下:XML Schema  中常用的数据类型有:    
xs:string   、xs:decimal   、xs:integer   、xs:boolean   、xs:date   、xs:time 等。


3、如何定义混合类型,比如:    
   
  This message comes from Alex    
 
message 元素除了包含子元素from 之外,还直接包含文本“This message comes from”。对于这种情况,我们需要在complexType  中使用属性  
mixed="true"指出。以下是Schema:    
  
   
   
   
   
   
  
当然,如果包含更多的子元素,我们可以需要使用来限定那些子元素的顺序。    
  
在XML Schema  中,有3 类共7 种指示器(Indicator): 

一、定义元素如何出现:包括all,sequence,choice  这三个。    

1、all:默认值。不限制子元素的出现顺序,每个子元素必须出现且只能出现一次。例如:    
  
   
   
   
   
   
   
   


2、sequence:子元素在XML 文件中按照XML Schema 定义的顺序出现。    
  
3、choice:两个或多个子元素中仅出现一个。例如:    
  
   
   
   
   
   
   
   

 

二、次数限定类,包括minOccurs 和maxOccurs,前者指定最少出现次数,



后者指定最多出现次数。例如:    
  
   
   
   
   
maxOccurs="10" minOccurs="0"/>    
   
   
   
  
如果元素出现的最大次数无限制,可以使用maxOccurs="unbounded"。    
  
三、组限定:包括Group 和attributeGroup,用来定义一组相关的元素。比如:    
  
   
   
   
   
   
   
 

   
   
   
   
   
  


补充:   ,在XML Schema  中使用这两个元素可以放宽Schema 对XML 文件内容的限制。容许我们在XML 文件中使用没有在 Schema  中定义的元素和属性。(很少使用)    
  
元素属性substitutionGroup 可以让元素b 替换元素a 在XML 文件中出现。 比如:    
  
   
   
  
这种情形类似choice:    

   
   
   
 


你可能感兴趣的:(xml)