xml schema是用一套预先规定的xml元素和属性创建的,这些元素和属性定义了xml文档的结构和内容模式,规定了xml文档实例的结构和每个元素的数据类型.
DTD不遵守xml语法,DTD数据类型有限,DTD不可扩展,DTD不支持命名空间.
schema基于xml语法,其实就是xml文档,扩充了数据类型,可以自定义数据类型,支持元素继承,支持属性组.
所有的schema文档都是用schema作为根元素.
用于构造schema元素和数据类型全部来自http://www.w3.org/2001/XMLSchema命名空间.
本schema定义的元素和数据类型属于http://mynamespace/myschema命名空间.
schema的基本数据类型:
string,boolean,decimal,float,double,duration(表示持续时间),dateTime(表示特定的时间),
time(表示特定的时间,但是是每天重复的),date(表示日期),hexBinary(表示16进制),
anyURL(表示一个url),NOTATION(表示符号),ID(表示唯一的标识),IDREF(参考ID类型的元素或属性),
ENTITY(实体类型),NMTOKEN,NMTOKENS,long,int,short,byte,enumeration(枚举),
factionDigital(限定最大的小数位,用于控制精度),length,maxExclusive(最大值,不包括该值),
maxInclusive(最大值,包括该值),maxLength,minExclusive,minInclusive,minLength,
pattern(指定数据的现实规范).
schema的元素类型:
schema元素,<xs:schema>,有xmlns,targetNamespace属性.
element元素<xs:element> 的属性:name,type,ref,minOccurs(最小显示次数),
maxOccurs(最大显示次数),substitutionGroup(替换,取代),fixed,default.
group元素<xs:group>的属性有name,ref.
attribute元素<xs:attribute>有name,type,ref,use属性.
attributeGroup元素有name,ref属性.
simpleType元素:定义一个简单类型,决定了元素和属性值的约束和相关信息.有name属性.
内容有三种方式:restrict(约束限定一个范围),list(列表进行选择),union(结合).
<xs:restrict>定义一个约束条件.
<xs:restriction base="xs:integer"> ---代表内容为integer类型,并且为0到100闭区间.
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
<xs:list>从一个特定数据类型的集合中选择定义一个简单类型元素.
<xs:list itemType = "xs:date"/>
simpleType类型的元素中不能包含元素和属性.
当需要声明一个元素的子元素或属性时,用complexType.
当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType.
simpleContent元素,应用于complexType,对它的内容进行约束和扩展.该元素下不包含子元素.
<xs:choice>元素,允许唯一的一个元素从一个组中被选择.
sequence,特定的序列.