1、复杂类型和简单类型之间最根本的区别就是:复杂类型的内容中可以包含其他元素,也可以带有属性(attribute),但简单类型既不能包含子元素,也不能带有任何属性。
<xsd:complextype name="cnaddress" >
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city"type="xsd:string"/>
<xsd:element name="zip"type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:nmtoken" fixed="us"/>
</xsd:complextype>
2、element存在约束:element可以通过其minoccurs和maxoccurs两个属性来约束元素实例存在的个数,这两个属性的缺省值都是1,表示默认情况下此元素在xml实例文档中必须出现一次。
3、attribute存在约束:元素属性也可以通过attribute的use属性来约束出现一次或根本不出现;use属性的取值可以是required,optional,prohibited三个值,缺省(默认)值是optional.
4、element和attribute都有一个default和fixed属性,针对element来书,只有当element实例为空时才采用此default值,而attribute是当实例不提供此attribute时才采用此default值,因此对attribute而言,只有其use值是optional时default值才有意义,而且对element和attribute来说fixed和default两个属性不能同时存在,否则会出现错误。
5、直接定义在schema元素下,即schema元素的顶级子元素的element和attribute都是全局的,称之为全局元素和全局属性,你在其他类型定义中可以直接引用。
6、派生新类型有两种方式:第一种就是直接从其他类型中扩展(继承)而来,另外一种就是通过对已有类型进行限定性约束而来。
如:以下有三种通过限定性约束定义的新类型:
通过值范围限定:
<xsd:simpletype name="myinteger">
<xsd:restriction base="xsd:integer">
<xsd:mininclusive value="10000"/>
<xsd:maxinclusive value="99999"/>
</xsd:restriction>
</xsd:simpletype>
使用模式匹配限定:
<xsd:simpletype name="sku">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[a-z]{2}"/>
</xsd:restriction>
</xsd:simpletype>
使用枚举方式限定:
<xsd:simpletype name="cncity">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="beijing"/>
<xsd:enumeration value="nanchang"/>
<xsd:enumeration value="shanghai"/>
</xsd:restriction>
</xsd:simpletype>
7、原子类型(不可分割的类型,象string,integer等系统内建的类型)、列表类型、联合类型合起来统一称为简单类型。在schema中有nmtokens、idrefs、entities三种内建的列表类型,你也可以从已有的简单类型来创建list(列表)类型,但你不能从已有的list类型和复杂类型来创建列表(list)类型。
如:
<xsd:simpletype name="listofmyinttype">
<xsd:list itemtype="myinteger"/>
</xsd:simpletype>
在xml实例文档中列表类型的值是通过空格来进行分隔的,如果声明了一个listofmyinttype元素,其值可能是:
<listofmyint>20003 15037 95977 95945</listofmyint>
8、有几个方面的元素可以应用于list类型来进行约束,它们是:length、minlength、maxlength和enumeration,如:
<xsd:simpletype name="usstatelist">
<xsd:list itemtype="usstate"/>
</xsd:simpletype>
<xsd:simpletype name="sixusstates">
<xsd:restriction base="usstatelist">
<xsd:length value="6"/>
</xsd:restriction>
</xsd:simpletype>
注:针对列表类型要千万注意成员是string类型的,因为string类型中的空格和列表类型的分割符空格会造成部分混淆。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器