Web---XML---②Schema
Schema概述
XML Schema是2001年5月正式发布的W3C(万维网联盟)的推荐标准
DTD存在一些缺陷:
一是它是用不同于XML的语言编写的
二是DTD不支持名称空间
三是DTD存在支持继承和子类方面的局限性
XML Schema不仅可以定义XML文档的结构而且还允许约束文档的内容
一个 XML Schema自身就是一个XML文档
XML Schema正是针对这些DTD的缺点而设计的,具有很强的描述能力、扩展能力和处理维护能力。
XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了文档的结构和内容模式。
XML Schema也是Web Services技术中需要使用的一个基本工具
目前主要有两种重要的模式:Microsoft XML Schema和W3C XML Schema,本章主要讨论W3C XML Schema
在下面的例子中,使用出现在schema元素中的名称空间声明xmlns:xsd= “http://www.w3.org/2001/XMLSchema”
使得模式文档中的每一个元素都有一个与XML Schema名称空间相关联的名称空间前缀xsd。
Schema的格式和使用
一个XSDL(XML 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相关推荐
- web.xml 常用标签配置(转)
2019独角兽企业重金招聘Python工程师标准>>> 1.Web.xml作用: 每一个javaWeb工程都有一个web.xml配置文件,web.xml文件是用来初始化工程配置信息的 ...
- javaweb web.xml文件详解
web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...
- 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 ...
- 160329(二)、web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- 基于注解的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 ...
- 基于XML配置的Spring MVC(所需jar包,web.xml配置,处理器配置,视图解析器配置)
1.添加jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...
- XML Schema介绍之namespace
http://www.cnblogs.com/gzhnan/articles/1108442.html http://blog.csdn.net/zhch152/article/details/819 ...
- 使用JAXB将XML Schema绑定到Java类
http://blog.csdn.net/zsyspace/article/details/1786079 Java Architecture for XML Binding (JAXB) 是一项可以 ...
- web.xml文件中可以配置哪些内容?
web.xml用于配置Web应用的相关信息,如:监听器(listener).过滤器(filter).Servlet.相关参数. 会话超时时间.错误页面等①配置Spring上下文加载监听器,加载Spri ...
- web.xml加载顺序
2019独角兽企业重金招聘Python工程师标准>>> 一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和< ...
最新文章
- 计算机网络基础常考面试题总结
- javascript设计模式-组合模式
- ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH
- Spring Boot 实战 —— MyBatis(注解版)使用方法
- Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
- 深入探讨JS中的数组排序函数sort()和reverse()
- 组件的v-model Mixin extends
- C++——《算法分析》实验肆——单源最短路径问题
- JavaFX加载界面报错:fxcontroller can only be applied to root element?
- Nginx 下部署 HTTPS 与安全调优
- vmware eth0网卡无ip
- 重心(质量对位置的加权平均)与转动惯量(使物体甩动的难易程度与质量m和到轴的距离r的平方有关)
- xml--json代码大全
- 加不了buff的BuffX,还能让年轻人买单多久?
- Stata制作限制立方样条(RCS)(2)
- 红帽子linux2017安装,Firefox 49发布 - 在RedHat和Debian系统上安装
- vue-i18n的入门使用
- 计算机网络生存时间单位,TTL(生存时间值)_百度百科
- SolidWorks工装 焊接 夹具 治具 检具 3D图档-350套(9.2G)
- 《Python编程快速上手——让繁琐的工作自动化》读书笔记3
热门文章
- win10有备忘录吗?Win10电脑桌面添加备忘录便签方法
- Python人工智能识别文字内容(OCR)
- ISAR Imaging of a Windmill-- Mesurement and Simulation
- 北京大学801计算机基础综合,盛世清北2021北京大学869计算机基础综合考研参考书目...
- 微软JobHack两天面试经验CSS (Winter Intern Job Hack)
- AI软件中的斑点画笔与橡皮擦
- 15kw充电桩模块设计,源代码,原理图
- Github推荐:超好用的全开源协同OA项目
- Windows10中出现‘adb’ 不是内部或外部命令,也不是可运行的程序或批处理文件
- python代码电影人物关系_自动更新高清电影文件中文名python代码