xml配置
转载地址:http://jackma.cnblogs.com/ 详细学习资料:http://www.w3schools.com/schema/default.asp
Preface:本文是W3Schools上《Schema指南》的学习笔记。其中大部分内容是对指南的翻译总结。由于原文的例子更详尽生动,如果各位想阅读原文可以到这个网址http://www.w3schools.com/schema/default.asp。同时,W3Schools提供了测试,大家可以测试一下自己的理解程度。 所谓的复杂类型Complex Type其实就是指ComplexElement。概括的说,包含有属性或其他元素的Element,就称为ComplexElement。ComplexElement可分为四种:
一、概览ComplexElement定义一个ComplexElement
<
employee
>
< firstname > John </ firstname > < lastname > Smith </ lastname > </ employee > 使用Schema定义就是
<
xs:element
name
="employee"
>
< xs:complexType > < xs:sequence > < xs:element name ="firstname" type ="xs:string" /> < xs:element name ="lastname" type ="xs:string" /> </ xs:sequence > </ xs:complexType > </ xs:element > 注意这里的ComplexType不能被其他元素使用,所以如果要考虑重用,可以使用下面的方式。
<
xs:element
name
="employee"
type
="personinfo"
/>
< xs:complexType name ="personinfo" > < xs:sequence > < xs:element name ="firstname" type ="xs:string" /> < xs:element name ="lastname" type ="xs:string" /> </ xs:sequence > </ xs:complexType > 这里的格式与之前定义约束的时候很相似。不过约束是使用<xs:simpleType>定义的。 重用已定义的ComplexElement
<
xs:element
name
="employee"
type
="fullpersoninfo"
/>
< xs:complexType name ="personinfo" > < xs:sequence > < xs:element name ="firstname" type ="xs:string" /> < xs:element name ="lastname" type ="xs:string" /> </ xs:sequence > </ xs:complexType > < xs:complexType name ="fullpersoninfo" > < xs:complexContent > < xs:extension base ="personinfo" > < xs:sequence > < xs:element name ="address" type ="xs:string" /> < xs:element name ="city" type ="xs:string" /> < xs:element name ="country" type ="xs:string" /> </ xs:sequence > </ xs:extension > </ xs:complexContent > </ xs:complexType > 注意关键的是用“base”属性指出是对哪个元素进行扩展。这里fullpersioninfo将包含firstname,lastname,address,city,country的信息。 二、Empty Element有一个EmptyElement如下
<
product
prodid
="1345"
/>
那么使用定义应为
<
xs:element
name
="product"
>
< xs:complexType > < xs:attribute name ="prodid" type ="xs:positiveInteger" /> </ xs:complexType > </ xs:element > 注意,你仍然可以使用“name”属性为complexType指定名称,然后在element中使用“type”属性指定类型。从而能够在多个element中使用这个类型定义。 三、Elements Only以下的ComplexType是只包含其他元素的。
<
person
>
< firstname > John </ firstname > < lastname > Smith </ lastname > </ person > 在Schema中定义如下
<
xs:element
name
="person"
>
< xs:complexType > < xs:sequence > < xs:element name ="firstname" type ="xs:string" /> < xs:element name ="lastname" type ="xs:string" /> </ xs:sequence > </ xs:complexType > </ xs:element > 这里要注意的是<xs:sequence>的意义,是指里面包含的元素(firstname,lastname)在XML中(person)必须按照定义的顺序出现。 四、Complex Text-Only Elements<shoesize country="france">35</shoesize>
<
xs:element
name
="shoesize"
>
< xs:complexType > < xs:simpleContent > < xs:extension base ="xs:integer" > < xs:attribute name ="country" type ="xs:string" /> </ xs:extension > </ xs:simpleContent > </ xs:complexType > </ xs:element > 这里要注意的是由于Element包含简单的内容和属性,所以要使用<xs:simpleContent>将其括住。同时,因为使用了<xs:simpleContent>就必须定义一个扩展(extension)或约束(restriction)。 五、同时包含有其他Element和Text的元素(mix属性)
<
letter
>
DearMr. < name > JohnSmith </ name > . Yourorder < orderid > 1032 </ orderid > willbeshippedon < shipdate > 2001-07-13 </ shipdate > . </ letter > < xs:element name ="letter" > < xs:complexType mixed ="true" > < xs:sequence > < xs:element name ="name" type ="xs:string" /> < xs:element name ="orderid" type ="xs:positiveInteger" /> < xs:element name ="shipdate" type ="xs:date" /> </ xs:sequence > </ xs:complexType > </ xs:element > 注意,由于有字符出现在元素之间,所以要设定complexType的mixed属性为true。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |