Schema概述

XML Schema20015月正式发布的W3C(万维网联盟)的推荐标准

DTD存在一些缺陷:

    一是它是用不同于XML的语言编写的

    二是DTD不支持名称空间

    三是DTD存在支持继承和子类方面的局限性

XML Schema不仅可以定义XML文档的结构而且还允许约束文档的内容

一个 XML Schema自身就是一个XML文档

XML Schema正是针对这些DTD的缺点而设计的,具有很强的描述能力、扩展能力和处理维护能力。

XML Schema用一套预先规定的XML元素和属性创建的,这些元素和属性定义了文档的结构和内容模式。

XML Schema也是Web Services技术中需要使用的一个基本工具

目前主要有两种重要的模式Microsoft XML SchemaW3C XML Schema,本章主要讨论W3C XML Schema

在下面的例子中,使用出现在schema元素中的名称空间声明xmlns:xsd= http://www.w3.org/2001/XMLSchema

使得模式文档中的每一个元素都有一个与XML Schema名称空间相关联的名称空间前缀xsd

Schema的格式和使用

一个XSDLXML Schema Definition Language)文档由元素属性名称空间XML文档中的其它节点构成的

至少要包含:schema根元素XML模式名称空间的定义、元素定义。

简单实例

<?xml version="1.0" encoding="utf-8"?>
<book isbn="0-764-58007-8"><title>三国演义</title><author>罗贯中</author><price>80.00 </price><resume>滚滚长江东逝水,浪花淘尽英雄。是非成败转头空:青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢:古今多少事,都付笑谈中。
</resume><recommendation>经典好书</recommendation><publish><publisher>文艺出版社</publisher><pubdate>1998.10</pubdate></publish>
</book>

Schema的使用

1. Schema作用

Schema文档就是用来验证XML文档的正确性,用来判断实例是否符合模式中所描述的所有约束。

Schema主要检验如下内容:

    验证数据的显示格式正确及是否超出值的范围

验证所有必需的信息都存在

确保不同使用者对文档理解的方式相同

Schema文档还在一定程度上扩充实例:

为元素和属性添加默认值和固定值

使具有简单类型的元素和属性值中的空白符规范化

2. Schema引用

一个模式可能由多个模式文档构成。

验证XML文档,必须指定Schema文档的位置

<?xml version="1.0" encoding="utf-8" ?><book  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="books.xsd"isbn="0-764-58007-8"><!--...--></book>

通过schemaLocation属性引用schema文档

<?xml version="1.0" encoding="utf-8" ?>
<book  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=" http://tempuri.org/book book.xsd" <!--***-->xmlns=" http://tempuri.org/book"isbn="0-764-58007-8"><!--...--></book>

Schema元素声明

Schema根元素

根元素表明文档类型,还包括模式的约束、XML模式名称空间的定义,其他名称空间的定义、版本信息、语言信息和其他一些属性。

<xsd: schema name="mySchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">…</xsd: schema>

element元素

XSD中的元素是利用element标识符来声明的

<xsd: element name=author type=xsd:string />

name是元素类型的名称

type属性是必要的,说明元素的数据类型。

minOccurs定义了该元素在父元素中出现的最少次数(默认为1,值为大于等于0的整数)

maxOccurs定义了该元素在父元素中出现的最多次数(默认为1,值为大于等于0的整数)

<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema><xsd:element name=“author” type=“xsd:string” minOccurs=“0” maxOccurs=“unbounded” />
</xsd:schema>

设置默认值和固定值

默认值和固定值通过给空元素增加值的方式来扩展实例

如果元素为空,就填入默认值。

<xsd:element name=author type=xsd:string default=佚名 />

注意:元素声明中的定义根据数据类型不同而有所不同

固定值与默认值在相同的情况下添加,它们的差别仅在于如果元素拥有一个值,则该值必须和固定值相等

引用元素和替代

引用是利用element标记符的ref属性实现的

主要适用于避免在文档中多次定义同一个元素

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:element name="author" type=“xsd:string” /><xsd:element name="book"><xsd:complexType><xsd:sequence><xsd:element ref="author" /></xsd:sequence></xsd:complexType>
</xsd:element>

Schema属性声明

创建属性

定义属性方法如下:

<xsd:attribute name=isbn type=xsd:string />

复杂类型的元素,使用ref属性通过名称来引用属性

use属性用于指示属性是必需的还是可选的

<xsd:attribute ref=isbn use=required />

为属性指派类型

属性声明有三种方式:

1. 在属性声明中通过用type属性指定命名简单类型

2. 通过指定simpleType子属性来指定匿名简单类型

3. 既没有type属性,又没有simpleType子属性,从而不指定特定类型

<xsd:attribute name=“amount” type=“xsd:integer” />
<xsd:attribute name=“grade” type=“gradeType” />
<xsd:attribute name=“ bookcategory”>
<xsd:simpleType><xsd:restriction base=“xsd:string”><xsd:enumeration value=“文艺”/><xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name=“anything”>

实例

schema

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns="http://www.hncu.cn/book"xmlns:xsd="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.hncu.cn/book"elementFormDefault="qualified"
><!-- 从原子类型中扩展出自定义类型。 因为定义成schema的直接孩子,所以是全局的 --><xsd:simpleType name="myInteger"><xsd:restriction base="xsd:integer"><xsd:minExclusive value="0" /><xsd:maxInclusive value="100"></xsd:maxInclusive></xsd:restriction></xsd:simpleType><xsd:element name="book"><xsd:complexType><xsd:sequence><xsd:element name="title" type="xsd:string"></xsd:element><xsd:element name="author" type="xsd:string" minOccurs="2" maxOccurs="4"></xsd:element><xsd:element name="price" type="xsd:double"></xsd:element><xsd:element name="resume" type="xsd:string"></xsd:element><xsd:element name="recommendation" type="xsd:string"></xsd:element><xsd:element name="publish"><xsd:complexType><xsd:sequence><xsd:element name="publisher" type="xsd:string"></xsd:element><xsd:element name="pubdate" type="xsd:date"></xsd:element></xsd:sequence></xsd:complexType></xsd:element><xsd:element name="age" type="myInteger"></xsd:element></xsd:sequence><xsd:attribute name="isbn" type="xsd:string"></xsd:attribute></xsd:complexType></xsd:element>
</xsd:schema>

xml

<?xml version="1.0" encoding="utf-8"?>
<book isbn="0-764-58007-8"xmlns="http://www.hncu.cn/book"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.hncu.cn/book demo.xsd"><title>三国演义</title><author>罗贯中</author><author>罗贯中2</author><price>80.00</price><resume>滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。</resume><recommendation>经典好书</recommendation><publish><publisher>文艺出版社</publisher><pubdate>1998-10-01</pubdate></publish><age>19</age>
</book>

Web---XML---②Schema相关推荐

  1. web.xml 常用标签配置(转)

    2019独角兽企业重金招聘Python工程师标准>>> 1.Web.xml作用: 每一个javaWeb工程都有一个web.xml配置文件,web.xml文件是用来初始化工程配置信息的 ...

  2. javaweb web.xml文件详解

    web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...

  3. jsp到java xml配置,JSP中web配置:web.xml

    # re: JSP中web配置:web.xml 2007-07-02 12:24 和田雨 - http://java.sun.com/xml/ns/j2ee" xmlns:j2ee=&quo ...

  4. 160329(二)、web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  5. 基于注解的Spring MVC(所需jar包,web.xml配置,Spring文件配置,@Controller,@RequestMapping,@RequestParam,model填参,EL取值)

    1.添加jar 2.web.xml配置: <?xml version="1.0" encoding="UTF-8"?> <web-app ve ...

  6. 基于XML配置的Spring MVC(所需jar包,web.xml配置,处理器配置,视图解析器配置)

    1.添加jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...

  7. XML Schema介绍之namespace

    http://www.cnblogs.com/gzhnan/articles/1108442.html http://blog.csdn.net/zhch152/article/details/819 ...

  8. 使用JAXB将XML Schema绑定到Java类

    http://blog.csdn.net/zsyspace/article/details/1786079 Java Architecture for XML Binding (JAXB) 是一项可以 ...

  9. web.xml文件中可以配置哪些内容?

    web.xml用于配置Web应用的相关信息,如:监听器(listener).过滤器(filter).Servlet.相关参数. 会话超时时间.错误页面等①配置Spring上下文加载监听器,加载Spri ...

  10. web.xml加载顺序

    2019独角兽企业重金招聘Python工程师标准>>> 一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和< ...

最新文章

  1. 计算机网络基础常考面试题总结
  2. javascript设计模式-组合模式
  3. ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH
  4. Spring Boot 实战 —— MyBatis(注解版)使用方法
  5. Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
  6. 深入探讨JS中的数组排序函数sort()和reverse()
  7. 组件的v-model Mixin extends
  8. C++——《算法分析》实验肆——单源最短路径问题
  9. JavaFX加载界面报错:fxcontroller can only be applied to root element?
  10. Nginx 下部署 HTTPS 与安全调优
  11. vmware eth0网卡无ip
  12. 重心(质量对位置的加权平均)与转动惯量(使物体甩动的难易程度与质量m和到轴的距离r的平方有关)
  13. xml--json代码大全
  14. 加不了buff的BuffX,还能让年轻人买单多久?
  15. Stata制作限制立方样条(RCS)(2)
  16. 红帽子linux2017安装,Firefox 49发布 - 在RedHat和Debian系统上安装
  17. vue-i18n的入门使用
  18. 计算机网络生存时间单位,TTL(生存时间值)_百度百科
  19. SolidWorks工装 焊接 夹具 治具 检具 3D图档-350套(9.2G)
  20. 《Python编程快速上手——让繁琐的工作自动化》读书笔记3

热门文章

  1. win10有备忘录吗?Win10电脑桌面添加备忘录便签方法
  2. Python人工智能识别文字内容(OCR)
  3. ISAR Imaging of a Windmill-- Mesurement and Simulation
  4. 北京大学801计算机基础综合,盛世清北2021北京大学869计算机基础综合考研参考书目...
  5. 微软JobHack两天面试经验CSS (Winter Intern Job Hack)
  6. AI软件中的斑点画笔与橡皮擦
  7. 15kw充电桩模块设计,源代码,原理图
  8. Github推荐:超好用的全开源协同OA项目
  9. Windows10中出现‘adb’ 不是内部或外部命令,也不是可运行的程序或批处理文件
  10. python代码电影人物关系_自动更新高清电影文件中文名python代码