Schema的基本语法.docx
- 文档编号:9968503
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:18
- 大小:19.96KB
Schema的基本语法.docx
《Schema的基本语法.docx》由会员分享,可在线阅读,更多相关《Schema的基本语法.docx(18页珍藏版)》请在冰点文库上搜索。
Schema的基本语法
Schema的基本语法
XSDL(XMLSchema定义语言)由元素、属性、命名空间和XML文档种的其他节点构成的。
一、XSD中的元素
XSD文档至少要包含:
schema根元素和XML模式命名空间的定义、元素定义。
1、schema根元素语法如下:
schemaxmlns: xsd=“http: //www.w3.org/2001/XMLSchema”> …
schema>
在XSD中必须定义一个且只能定义一个schema根元素。
根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些属性。
2、元素
语法如下:
elementname=”user”type=”xsd: string”/> XSD中的元素是利用element标识符来声明的。 其中name属性是元素的名字,type属性是元素值的类型,在这里可以是XMLSchema中内置的数据类型或其他类型。 例子: schemaxmlns: xsd=“http: //www.w3.org/2001/XMLSchema”> elementname=”user”type=”xsd: string”/> schema> 以上文档对应的有效XML文档如下: xmlversion=”1.0”? > 在元素的定义中还有2个属性: minOccurs和maxOccurs。 其中minOccurs定义了该元素在父元素中出现的最少次数(默认为1,值为大于等于0的整数),maxOccurs定义了该元素在父元素中出现的最多次数(默认为1,值为大于等于0的整数)。 在maxOccurs中可以把值设置为unbounded,表示对元素出现的最多次数没有限制。 例子: schemaxmlns: xsd=http: //www.w3.org/2001/XMLSchema> elementname=”user”type=”xsd: string”minOccurs=”0”maxOccurs=”unbounded”/> schema> 表示为元素user的类型为string,出现的次数最少为0(也就是可选),最多不限制。 3、引用元素和替代 语法如下: schemaxmlns: xsd=”http: //www.w3.org/2001/XMLSchema”> elementname=”user”type=”xsd: string”/> elementname=”name”> complexType> sequence> elementref=”user”/> sequence> complexType> element> schema> 引用是利用element标记符的ref属性实现的。 主要适用于避免在文档中多次定义同一个元素,应当将经常使用的元素定义为根元素的子元素,以便在文档的任何地方引用它。 在这里还可以为某个定义的元素起一个别名,方法如下: schemaxmlns: xsd=”http: //www.w3.org/2001/XMLSchema”> elementname=”yonghu”type=”xsd: string”substitutionGroup=”user”/> elementname=”user”type=”xsd: string”/> elementname=”name”> complexType> sequence> elementref=”user”/> sequence> complexType> element> schema> 以上文档对应的有效XML文档如下: xmlversion=”1.0”? > 或者: xmlversion=”1.0”? > 主要是利用element标识符中的属性substitutionGroup实现的。 4、设置默认值和固定值 语法如下: elementname=”city”type=”xsd: string”default=”xian”/> elementname=”country”type=”xsd: string”fixed=”china”/> 通过default属性的设置,可以在XML文档中没有对city元素定义时赋予默认值。 而使用fixed属性,可以给元素country设定一个固定的值china,并且不允许改变! 5、利用组合器控制结构 sequence组合器,定义了一列元素必须按照模式中指定的顺序显示(如果是可选的,也可以不显示)。 语法如下: schemaxmlns: xsd=”http: //www.w3.org/2001/XMLSchema”> elementname=”name”> complexType> sequence> elementname=”first”type=”xsd: string”/> elementname=”middle”type=”xsd: string”/> elementname=”last”type=”xsd: string”/> sequence> complexType> element> schema> all组合器,允许所定义的元素可以按照任意顺序显示,all元素的子元素在默认情况下是必须的,而且每次最多显示一次。 语法如下: schemaxmlns: xsd=”http: //www.w3.org/2001/XMLSchema”> elementname=”name”> complexType> allminOccurs=”0”> elementname=”first”type=”xsd: string”/> elementname=”middle”type=”xsd: string”/> elementname=”last”type=”xsd: string”/> all> complexType> element> schema> choice组合器,允许指定多组声明中的一个,用于互斥情况。 语法如下: schemaxmlns: xsd=”http: //www.w3.org/2001/XMLSchema”> elementname=”name”> complexType> choice> elementname=”first”type=”xsd: string”/> elementname=”middle”type=”xsd: string”/> elementname=”last”type=”xsd: string”/> choice> complexType> element> schema> 二、定义属性 在XMLSchema文档中可以按照定义元素的方法定义属性,但受限制的程度较高。 它们只能是简单类型,只能包含文本,且没有子属性。 可以应用在attribute元素定义中的属性如下: default初始默认值 fixed不能修改和覆盖的属性固定值 name属性的名称 ref对前一个属性定义的引用 type该属性的XSD类型或者简单类型 use如何使用属性 form确定attributeFormDefault的本地值 id模式文档中属性唯一的ID Default、fixed、name、ref和type属性与在element标记中定义的对应属性相同,但type只能是简单类型。 Use属性的值可以是: optional(属性不是必须的,此为默认属性)、prohibited或者required(属性是强制的)。 1、创建属性 语法如下: attributename=”age”type=”xsd: integer”/> 该语句定义了一个名为age的属性,它的值必须是一个整数。 把它添加到模式中时,它必须时schema元素、complexType元素或者attributeGroup元素的子元素。 例子: schemaxmlns: xsd=”http: //www.w3.org/2001/XMLSchema”> elementname=”name”> complexType> sequence> elementname=”first”type=”xsd: string”/> sequence> attributename=”age”type=”xsd: integer”use=”optional”/> complexType> element> schema> 以上文档对应有效的XML文档如下: xmlversion=”1.0”? > 如上所示,要把属性附加在元素上,属性应该在complexType定义中的组合器之后定义或引用。 三、XMLSchema数据类型 XMLSchema提供了一组丰富的内置数据类型,用于定义元素中允许的类型。 下面将介绍一些完全符合C#标准的通用类型。 1、基本数据类型 基本数据类型是在XMLSchema中使用的每种数据类型的最基本构成块。 可以根据这些类型构造自定义的类型。 这些类型包括: boolean可以是1(true)或者0(false)。 dateTime表示时间的部分可选,格式: CCYY-MM-DDThh: mm: ss 例如: 2005-3-18T14: 48: 12 decimal表示任意精度的十进制数字。 string字符数据。 int表示从-2,147,483,648到2,147,483,648之间一个整数。 nonNegativeInteger表示大于或者等于0的一个整数。 nonPositiveInteger表示小于或者等于0的一个整数。 short表示从-32768到32767之间的一个整数。 例如: schemaxmlns: xsd=http: //www.w3.org/2001/XMLSchema> elementname=”ContactDetails”> complexType> sequence> elementref=”name”/> elementname=”rate”type=”xsd: decimal”/> sequence> attributename=”lastUpdated”type=”xsd: dateTime”/> complexType> element> elementname=”name”> complexType> sequence> elementname=”first”type=”xsd: string”/> elementname=”middle”type=”xsd: string”/> elementname=”last”type=”xsd: string”/> sequence> attributename=”local”type=”xsd: boolean”/> complexType> element> schema> 以上文档对应有效的XML文档如下: xmlversion=”1.0”? > 48: 12”> 2、简单类型 虽然从内置数据类型中得到了许多的功能,但是在许多情况下,只有数据类型来限制数据的值是远远不够的。 这里在学习简单类型之前,先看看关于约束。 约束方面 enumeration用空格分开的一组指定的数值。 它把数据类型约束为指定的值。 fractionDigit指定小数点后的最大位数。 length长度单位。 minExclusive下限值,所有的值都必须大于该值。 maxExclusive上限值,所有的值都应该小于该值。 minLength长度单位的最小个数。 maxLength长度单位的最大数。 minInclusive最小值,所有的值都应该大于或者等于该值。 maxInclusive最大值,所有的值都应该小于或者等于该值。 pattern数据类型的值必须匹配的指定模式,pattern值必须是一个正则表达式。 totalDigits指定小数最大位数的值。 whiteSpace其值为: preserve(值中的空格不能改变),replace(所有的制表 符、换行符和回车符都用空格代替),collapse(执行replace,删 除相邻的、结尾处和开头处的空格)。 要应用上述的约束,就要利用元素restriction。 这个元素中有2个属性: id属性是模式文档中restriction元素的唯一标识符,base属性设置为一个内置的XSD数据类型或者现有的简单类型定义,他是一种被限制的类型。 例如: restrictionbase=”xsd: string”> minLengthvalue=”4”/> maxLengthvalue=”10”/> restriction> 如上,将字符串最小长度限定为4个字符,将最大长度限定为10个字符。 restrictionbase=”xsd: int”> minInclusivevalue=”1”/> maxInclusivevalue=”100”/> restriction> 如上,将一个整数的取值范围设置为1到100之间。 restrictionbase=”xsd: string”> enumerationvalue=”FistValue”/> enumerationvalue=”SecondValue”/> enumerationvalue=”ThirdValue”/> restriction> 如上,字符串只能为枚举出的三种值。 简单类型 简单类型是对一个节点的可能值进一步限制的自定义数据类型。 创建简单类型需要利用simpleType元素,其定义如下: id属性应唯一的标明文档内的simpleType元素,name不能使用冒号字符。 simpleType不能包含元素,也不能有属性,根据在simpleType中定义的规则,它基本上是一个值,或者是一个值的集合。 例如: simpleTypename=”personsName”> restrictionbase=”xsd: string”> minLengthvalue=”4”/> maxLengthvalue=”8”/> restriction> simpleType> elementname=”first”type=”personsName”/> 以上文档对应有效的XML文档如下: 以下就是无效的XML文档: 再举个例子: simpleTypename=”personsTitle”> restrictionbase=”xsd: string”> enumerationvalue=”Mr.”/> enumerationvalue=”Mrs.”/> enumerationvalue=”Miss.”/> restriction> simpleType> elementname=”title”type=”personsTitle”/> 上面定义的类型personsTitle是一个字符串类型,但它的值只能是Mr.、Mrs.或者Miss.其中的一个。 复杂类型 复杂类型的定义必须使用complexType元素,在这里可以包含属性和元素。 在复杂类型的使用中,主要是complexType和simpleType配合使用。 格式如下: complexTypename=”name”/> 例如: elementname=”name”type=”FullName”/> complexTypename=”FullName”> sequence> elementname=”first”type=”PersonsFirstname”minOccurs=”0”maxOccurs=”1” default=”John”/> elementname=”middle”type=”xsd: string”minOccurs=”0” maxOccurs=”unbounded”nillable=”true”/> elementname=”last”type=”xsd: string”minOccurs=”1”maxOccurs=”1” default=”Doe”/> sequence> attributename=”title”type=”PersonsTitle”default=”Mr.”/> complexType> simpleTypename=”PersonsFirstname”> restrictionbase=”xsd: string”> minLengthvalue=”4”/> maxLengthvalue=”10”/> restriction> simpleType> simpleTypename=”PersonsTitle”> restrictionbase=”xsd: string”> enumerationvalue=”Mr.”/> enumerationvalue=”Mrs.”/> enumerationvalue=”Miss.”/> restriction> simpleType> 如上就实现了一个复杂类型,该例子实现了一个复杂类型FullName,其中包含了两个简单类型PersonsFirstname和PersonsTitle。 分组和属性 在为定义XML文档而创建的一些更为复杂的定义中,会有一些元素集、属性集的组合,这是我们就使用了分组的概念。 分组定义中使用的是group元素。 例如: groupname=”CityChoice”> choice> elementname=”Beijing”type=”xsd: string”/> elementname=”Shanghai”type=”xsd: string”/> elementname=”Xian”type=”xsd: string”/> choice> group> elementname=”City”> element> 对属性的分组,应该使用attributeGroup元素,例如: attributeGroupname=”contactAttribs”> attributename=”city”type=”xsd: string”/> attributename=”country”type=”xsd: string”/> attributename=”age”type=”xsd: string”/> attributeGroup> elementname=”contact”> complexType> attributeGroupref=”contactAttribs”/> complexType> element> 以上文档对应有效的XML文档如下: 内容模型 内容模型可以对在XML文档内使用的元素、属性和类型进行限制,确定用户可以在XML实例的哪些等级添加自己的元素和属性。 any 当在XML中声明元素时any是默认的内容模型,该模型可以包含文本、元素和空格。 如果允许添加元素的内容,且无需屋里修改模式文件,就可以使用该模型。 例如: xchemaxmlns: xsd=”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Schema 基本 语法