XML Schema

一.Schema的概述

Schema,即XML Schema,XSD (XML Schema Definition, 可扩展标记语言 )是W3C于2001年5月发布的推荐标准,指出如何形式描述XML文档的元素。XSD是许多XML Schema 语言中的一支。XSD是首先分离于XML本身的schema语言,故获取W3C的推荐地位。而其一个重要的特点就是:可拓展。而可拓展就是通过XML Schema实现的。Schema就是架构、结构的意思。所以,XML Schema就是描述XML结构的语言。

DTD存在的缺陷(Scherma的优势)
          (I) DTD不是用XML语言编写的,需要不同的分析器技术。

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

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

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

二.schema的基本使用

1.定义没有命名空间

下面这个例子是名为 “books.xsd” 的schema文件,没有指定命名空间。不指定命名空间,该schema所申明的所有元素会默认归于无命名空间

<?xml version='1.0' encoding='UTF-8'?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="books">
        <xsd:complexType>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
                <xsd:element name="book" >
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="name" type="xsd:string"></xsd:element>
                            <xsd:element name="price" type="xsd:decimal"></xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:choice>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

代码解释

xmlns:xsd=“http://www.w3.org/2001/XMLSchema”

显示 schema 中用到的元素和数据类型来自命名空间 “http://www.w3.org/2001/XMLSchema”。同时它还规定了来自命名空间 “http://www.w3.org/2001/XMLSchema” 的元素和数据类型应该使用前缀 xsd,当然这个前缀可以自定义,xsd就是代表XML Schema Definition,所以很多框架会使用这个前缀。另外对于任何一个XML Schema架构文档(XSD)都有一个最顶层的schema 元素。而且该schema元素定义必须包含这个名称空间:http://www.w3.org/2001/XMLSchema。即此名称空间是由XML模式规范定义的标准名称空间-所有XML模式元素必须属于该名称空间。

2.引用没有名称空间

下面的xml文件会引入上面"books.xsd" 的schema约束,引入没有目标名称空间的模式文档需要用noNamespaceSchemaLocation属性指定文件位置,另外该模式文档的元素都是无命名空间的,所有使用不需要xmlns申明名称空间,直接使用:

<?xml version="1.0" encoding="UTF-8" ?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="books.xsd">
    <book>
        <name>java编程思想</name>
        <price>11.22</price>
    </book>
    <book>
        <name>head first设计模式</name>
        <price>22.44</price>
    </book>
</books>

代码解释

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” 是任何XML实例文档固有的XML模式实例名称空间,它由XML模式规范定义。

三.XML Schema的数据类型

XML文档元素分为两大类:简单元素和复杂元素。      

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

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

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


四.简单元素的声明

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

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

在DTD中,定义元素的方式为:

<!ELEMENT 元素名称 (#PCDATA)>

1.Schema简单类型声明

XML Schema中,使用<xs: simpleType>元素定义符合用户需要的简单类型元素,为XML文档元素和属性值自定义简单数据类型的语法格式为:

<xs:simpleType >
               <xs:restriction base=" xs:数据类型">
                     <xs:数据类型细节描述value=' value' />
                        ……
              </xs:restriction>
     </xs: simpleType>

2.Schema复杂类型声明

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

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

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

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

五、XML有效性的验证   

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

     ●XML文档的有效性验证方法有两种,一种是使用开发工具进行验证,另一种是编程进程验证。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值