奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> XML >> XML Schema学习笔记 (一)
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • .Net的精髓XML和SOAP简

  • 使用XMLHTTP制作域名查

  • 什么是XML

  • XML for Analysis 规范

  • XML for Analysis 规范

  • XML for Analysis 规范

  • 修改大型 XML 文件的有

  • 通过xalan实现关系型数

  • XML Schema学习笔记 (一)
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-20

    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类型中的空格和列表类型的分割符空格会造成部分混淆。

    9、对元素的定义可以采用通过指定其type属性为已定义的属性的方式,也可一采用匿名定义类型的方式,如:

    采用类型定义:

    <xsd:element name=”comment” type=”xsd:string”>

    采用匿名定义:

    <xsd:element name=”quantity”>

    <xsd:simpleType>

    <xsd:restriction base=”xsd:positiveInteger”>

    <xsd:maxExclusive value=”100” />

    </xsd:restriction>

    </xsd:simpleType>

    </xsd:element>

    10、union(联合)类型表示在XML实例文档中的元素实例符合union类型定义的成员类型中的一种就可以了(合法),这一点和C++中的联合类型有类似的概念,如:

    <xsd:simpleType name="addrUnion">

    <xsd:union memberTypes="xsd:string integer"/>

    </xsd:simpleType>

    11、复杂类型一般可以分为三类:第一类是包含字符内容和属性但不包含子元素;第二类是包含属性和子元素但不包含字符数据(字符数据包含在子元素中);第三类是即包含属性和字符内容又包含子元素的;那么如何来定义这三类类型呢?针对第一类可以通过simpleContent来实现,第二类可以通过complexContent来做到,第三类只需要将complexType的属性mixed设为true就可以了。具体的例子如下:

    第一种类型(从一个简单类型扩展而来,增加了属性):

    <xsd:element name="internationalPrice">

    <xsd:complexType>

    <xsd:simpleContent>

    <xsd:extension base="xsd:decimal">

    <xsd:attribute name="currency" type="xsd:string"/>

    </xsd:extension>

    </xsd:simpleContent>

    </xsd:complexType>

    </xsd:element>

    第二种类型(有一个element和两个attribute构成):

    <xsd:element name="internationalPrice">

    <xsd:complexType>

    <xsd:complexContent>

    <xsd:element name=”Country” ?type=”xsd:string” />

    <xsd:attribute name="currency" type="xsd:string"/>

    <xsd:attribute name="value"?type="xsd:decimal"/>

    </xsd:complexContent>

    </xsd:complexType>

    </xsd:element>

    注意:在这里由于默认情况下缺省是complexContent,所以在这里简略的写法是:

    <xsd:element name="internationalPrice">

    <xsd:complexType>

    <xsd:element name=”Country”type=”xsd:string” />

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.