XML中schema的知识总结

一、Schema的概述

      1、schema的含义

           XML Scherma是用来描述和约来XML文档的一种XML语言,从功能上看,它和DTD非常类  似,用于定义和描述XML文档的结构和内容模式。但是它比DTD更强大。XML Schema负责定义和描述XML文档的结构和内容模式,不仅可以定义XML文档中元素之间的关系,还可以定义元素和属性的数据类型。XML Scherma具有强制文档内容和结构的能力,它是XML世界中一一种重要且强大的新标准。

      2、DTD存在的缺陷(Scherma的优势)

          (I) DTD不是用XML语言编写的,需要不同的分析器技术。

          (2) DITD不支持名称空间。

          (3) DTD在支持继承和子类方面存在局限性。

          (4) DTD没有数据类型的概念,无法对特定元素施加数据类型。


     3、Scherna的特征

          (1)一致性:利用XML 的基本语法规则来定义其文档结构,从而使XML的模式和实例定义达到了统一;继承了XML的自描述性和可扩展性,使其更具有可读性和灵活性。

          (2)完备性:对DTD进行了扩充,引入了数据类型、名称空间。

          (3)规范性和准确性:提供了更加规范和完备的机制来约束XML文档,XML Scherma的语义更加准确,可以完成些DTD不能完成的定义,如对元素出现次数的约束等。

          (4)面向对象特征:引入了许多成熟的面向对象机制(如继承性和多态性,函数调用声明等)。

          (5)扩展性: 允许在事先无法准确描述数据模式的情况下,在XML实例数据中根据需要添加相关的数据。

二、XML Schema的基本结构             

       XSD是英文XML Schema Definition的缩写,通常也被称为XML Schema。XML Schema文档是扩展名为“.xsd”的一个文本文件,遵循XML的语法规则。W3C规定,一个XML Schema文档的根元素必须是“schema”,名称空间必须是“https://www.w3.org/2001/XMLSchema”。

     所有内容都添加在根标记<schema>中,“xsd”是名称空间的前缀,可以任意定义,一般设置为“xsd”或“xs”。在<schema>声明中有两个属性:name属性和xmlns属性。name属性指定schma的名称,可以省略。xmlns属性指定schema文档的名称空间(Namespace)

      XSD文档可以定义XML的以下内容:定义可出现在文档中的元素;定义可出现在文档中的属性;定义哪个元素是子元素;定义子元素的次序;定义子元素的数目;定义元素是否为空,或者是否可包含文本;定义元素和属性的数据类型;定义元素和属性的默认值以及固定值。

XML Schema的主要组件

     1)   类型

          简单类型:不包含任何子元素和属性,只包含文本内容的元素。

           复杂类型:包含子元素或属性的元素。

     2)元素

         <element  name="元素名称"   type="数据类型"  minOccurs="int"   maxOccurs="int" />

         name属性指明XML元素的名称。

         type属性指明XML元素的数据类型,可以选取XML内置的数据类型或用户自定义数据类型。

         minOccurs属性指明XML元素的最少出现次数,最小值为0,可选属性。

         maxOccurs属性指明XML元素的最多出现次数,最小值为1,最大值为unbounded,表示无限次,是可选属性。

     3)属性

          注意:只有复杂类型的元素才能拥有属性;元素可以有简单类型或复杂类型,而属性只能有简单类型。

          <element  name="element_name"   type="dataType"  />

          <xsd:complexType name="dataType">

               <xsd:attribute  name="attribute_name"  type="simple_type"   use="use_method" 

                 default="value"  fixed="value">

               </xsd:attribute>

           </xsd:complexType>

        element_name指对应XML文件中元素的名称。
        attribute_name指属性的名称。
        simple_type 指属性的数据类型,可以是内置的数据类型,也可以是由simple type 元素所定义的自定义数据类型。
        use_method指明XMD 元素中属性的实际取值要求,可以是optional、required、prohibited。其中,optional 表示该属性值可有可无,是默认值:;required 表示该属性值必须存在,此属性值至少出现一次; prohibited表示该属性值不可出现,用于在restriction元素中限制属性的使用
        default 指属性的默认值。
        fixed 指如果属性存在,则其内容只能是由本属性指定的值,不可更改。

     4)组定义

         元素组是把若干元素组成一组。

        元素组必须是schema根元素的直接子元素。

        若其他类型的元素需将元素组作为子元素时,必须通过引用ref的形式来实现。

     5)注释

        为了便于阅读和理解XML Schema文档,需要添加注释语句以说明相关内容,XML Schema支持使用<!-- -->注释方式。 此外,还提供了另一个专门的<annotation/>元素来添加注释,具有更好的可读性,还可供其他应用程序读取。
<annotation/>元素含有两个子元素:
    <documentation/>: 该元素里主要存放适合阅读的信息。
    <appinfo/>: 该元素里主要存放针对其他应用程序的信息。

<annotation/> 元素里可出现任意多个<documentation/>和<appinfo/>子元素,且没有任何顺序要求。

三、XML Schema的数据类型 

      XML文档元素分为两大类:简单元素和复杂元素。      简单元素:只包含文本的元素,分为XML Schema内置的简单数据类型(44种),自定义的简单数据类型(simpleType)。

      复杂元素:是指包含子元素和属性,或文本子元素的混合形式。用户自定义复杂数据类型,用关键字complexType。

XML Schema的数据类型分为:

      简单数据类型:内置数据类型(44种),自定义的简单数据类型(simpleType定义)。

      复杂数据类型:通过complexType定义。

1、简单元素的声明

     定义简单元素可以通过<element>元素来完成。格式为:

     <xsd:element  name="元素名称"  type="数据类型" />

     在DTD中,定义元素的方式为:<!ELEMENT 元素名称 (#PCDATA)>

2、Schema简单类型声明

      XML Schema中,使用<xs: simpleType>元素定义符合用户需要的简单类型元素,为XML文档元素和属性值自定义简单数据类型的语法格式为:
      <xs:simpleType >
               <xs:restriction base=" xs:数据类型">
                     <xs:数据类型细节描述value=' value' />
                        ……
              </xs:restriction>
     </xs: simpleType>

3、自定义数据类型

        自定义数据类型是指以一个XMLSchema类型为基础,添加一些限制条件,使用<simpleType>元素。常用的有以下6中类型:
        1).限定数值范围
        2).限定数值位数
        3).限定字符串范围
        4).枚举类型
        5).列表类型
        6).联合类型

4、XML Schema引用

      xsi : noNamespaceSchemaLocation表示没有定义目标命名空间,xsd文档是从本地文件。
      外联Schema:
          <根元素    xmlns:xsi= ...instance  xsi:noNamespaceSchemaLocation =" xxx.xsd">

     外联DTD :
           <!DOCTYPE 根元素  SYSTEM  "xxx.dtd">
 

5、Schema复杂类型声明

     顺序问题:Schema提供了all(任意顺序)、sequence(先后顺序)和choice(选择顺序)三种指示符来解决这个问题。

     Schema中,<complexType>定义复杂类型元素,语法格式为:

          < xsd:element name= "元素名称"   type= "数据类型" / >
              <xsd:complexType name= "数据类型">
                     <!--子元素描述部分-->
                     <xsd:sequence>

                      ......
                     </xsd:sequence>
         </xsd:complexType>

四、XML Schema的命名空间

      W3C颁布的命名空间(NameSpace)标准中对命名空间的定义是: XML命名空间提供了一套简单的方法,将XML文档和URI引用标记的名称相结合,来限定其中的元素和属性名。即命名空间给XML名称添加前缀,使其能够区分所属的领域,从而为元素和属性提供唯一的名称, 其最重要的用途是用于融合不同词汇集的XML文档。

命名空间的声明

       1)命名空间一般用xmIns来声明,语法如下:
         <元素名  xmlns:prefix="URI">

         声明时若前缀名省略,则声明的是缺省的空间,引用缺省命名空间中的元素、属性可不加前缀名。
        2)默认的命名空间的声明语法格式为:<元素名  xmlns="URI">

          xmIns:命名空间属性名,是声明命名空间必需的属性。

         prefix:指明命名空间的前缀名,它的值不能为XML。在引用此命名空间中的名称时,需要在名称前加该前缀名。

         URI:统一资源标识符(Uniform Resource Identifier),是一个标识网络资源的字符串。最普通的URI应该是统一资源定位符(Uniform ResourceLocator,URL),URL用于标识网络主机的地址。另一个不常用的URI是通用资源名字(Universal Resource Name,URN),这是-一个相对固定的地址。

五、XML有效性的验证   

     结构良好的XML文档指符合XML语法规范的XML文档。有效的XML文档是指通过了DTD/Schema的验证,具有良好结构的XML。
     格式良好的XML文档要遵守以下语法规则:
       ●XML文档必须有根元素
       ●XML文档必须有关闭标签
       ●XML标签对大小写敏感
       ●XML元素必须被正确的嵌套
       ●XML属性必须加引号
      一个格式良好的XML文档,不一定是一个有效的XML文档,只有符合下面的要求时,一个格式良好的XML文档,才是一个有效的XML文档:
     ●必须遵守与之相关联的DTD中定义的规则;
     ●必须遵守与之相关联的XML Schema中定义的规则。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值