什么是 XML Schema?

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

优势:

  • XML Schema 可针对未来的需求进行扩展
  • XML Schema 更完善,功能更强大
  • XML Schema 基于 XML 编写
  • XML Schema 支持数据类型
  • XML Schema 支持命名空间

由 XML 编写 XML Schema 有很多好处:

  • 不必学习新的语言
  • 可使用 XML 编辑器来编辑 Schema 文件
  • 可使用 XML 解析器来解析 Schema 文件
  • 可通过 XML DOM 来处理 Schema
  • 可通过 XSLT 来转换 Schema

<schema> 元素是每一个 XML Schema 的根元素

  

  <schema> 元素可包含属性。一个 schema 声明往往看上去类似这样:

  <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"     schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs

  targetNamespace="http://www.w3school.com.cn" 显示被此 schema 定义的元素来自命名空间: "http://www.w3school.com.cn"。

  xmlns="http://www.w3school.com.cn" 默认的命名空间是 "http://www.w3school.com.cn"

  elementFormDefault="qualified"> 任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定
  ...

  ...

  </xs:schema>


什么是简易元素?

简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。

定义简易元素的语法:<xs:element name="xxx" type="yyy"/>

常用类型

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

简易元素可拥有指定的默认值或固定值。

当没有其他的值被规定时,默认值就会自动分配给元素,在下面的例子中,缺省值是 "red":<xs:element name="color" type="xs:string" default="red"/>

固定值同样会自动分配给元素,并且您无法规定另外一个值。在下面的例子中,固定值是 "red":<xs:element name="color" type="xs:string" fixed="red"/>

定义属性的语法是:<xs:attribute name="xxx" type="yyy"/>简易元素无法拥有属性,属性本身总是作为简易类型被声明的

常用类型

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

属性可拥有指定的默认值或固定值。

当没有其他的值被规定时,默认值就会自动分配给元素。在下面的例子中,缺省值是 "EN":<xs:attribute name="lang" type="xs:string" default="EN"/>

固定值同样会自动分配给元素,并且您无法规定另外的值。在下面的例子中,固定值是 "EN":<xs:attribute name="lang" type="xs:string" fixed="EN"/>

在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:<xs:attribute name="lang" type="xs:string" use="required"/>

限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet。

数据类型的限定

  • enumeration,定义可接受值的一个列表
  • fractionDigits,定义所允许的最大的小数位数。必须大于等于0
  • length,定义所允许的字符或者列表项目的精确数目。必须大于或等于0
  • maxExclusive,定义数值的上限。所允许的值必须小于此值
  • maxInclusive,定义数值的上限。所允许的值必须小于或等于此值
  • maxLength,定义所允许的字符或者列表项目的最大数目。必须大于或等于0
  • minExclusive,定义数值的下限。所允许的值必需大于此值
  • minInclusive,定义数值的下限。所允许的值必需大于或等于此值
  • minLength,定义所允许的字符或者列表项目的最小数目。必须大于或等于0
  • pattern,定义可接受的字符的精确序列
  • totalDigits,定义所允许的阿拉伯数字的精确位数。必须大于0
  • whiteSpace,定义空白字符(换行、回车、空格以及制表符)的处理方式

复合元素包含了其他的元素及/或属性

有四种类型的复合元素:

  • 空元素
  • 包含其他元素的元素
  • 仅包含文本的元素
  • 包含元素和文本的元素

注释:上述元素均可包含属性!

例一:复合元素,"product",是空的:<product pid="1345"/>

例二:复合元素,"employee",仅包含其他元素:<employee><firstname>John</firstname><lastname>Smith</lastname></employee>

例三:复合元素,"food",仅包含文本,<food type="dessert">Ice cream</food>

例四:复合元素,"description",包含元素和文本<description>It happened on <date lang="norwegian">03.03.99</date> ....</description>

在 XML Schema 中,我们有两种方式来定义复合元素

1. 通过命名此元素,可直接对"employee"元素进行声明,就像这样:

2. "employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:

如果您使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型,比如这样:

您也可以在已有的复合元素之上以某个复合元素为基础,然后添加一些元素,就像这样:

XML Schema——笔记整理的更多相关文章

  1. XML Schema笔记

    XML Schema是为了弥补DTD的不足而开发的一种新的用于约束和规范XML文档的标准 XML Schema作用: 定义可出现在文档中的元素定义可出现在文档中的属性定义哪些元素是子元素定义子元素的次 ...

  2. XML学习笔记(三) -- Schema

    标签(空格分隔): 学习笔记 Schema的格式 XML Schema文档是由元素.属性.命名空间和XML文档中的其他节点构成的. XML Schema有两种重要的Schema模型:Microsoft ...

  3. XSD(XML Schema Definition)学习笔记

    今天学习了XSD相关的知识,为了以后查找的方便,写一些笔记. 一.什么是XSD? 1.XSD全称:XML Schema Definition.XML Schema 的作用是定义 XML 文档的合法构建 ...

  4. W3C XML Schema 教程

    转自:http://www.blogjava.net/sham2k/articles/179825.html W3C XML Schema 教程 XML SCHEMA教程 本教程是笔者学习W3C的&l ...

  5. Spring:笔记整理(1)——HelloWorld

    Spring:笔记整理(1)——HelloWorld 导入JAR包: 核心Jar包 Jar包解释 Spring-core 这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件 ...

  6. XML学习笔记3——XSD简述

    现在的语言,如果不有那么一点OO的影子,都不好意思称之为语言了.在XML的语义约束方面,DTD虽然简单,但是功能不够强大,完全是直白的描述,于是又有了替代DTD的XSD(XML Schema Defi ...

  7. applicationContext.xml简单笔记

    applicationContext.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <bean ...

  8. XML学习笔记(二)-- DTD格式规范

    标签(空格分隔): 学习笔记 XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构.业务逻辑和规则.可以定义一种模式来定义XML文档的结构,并借此验证XML文档 ...

  9. day0203 XML 学习笔记

    day02, 03 1. xml语言和作用 2. xml语法详解 2.1 xml 语法声明 2.1.1 encoding 属性 2.1.2 standalone 属性 2.2 xml 元素(Eleme ...

随机推荐

  1. leetcode-algorithms-36 Valid Sudoku

    leetcode-algorithms-36 Valid Sudoku Determine if a 9x9 Sudoku board is valid. Only the filled cells ...

  2. c# 线程的生命周期

    对于线程而言有两种类型:前台线程,后台线程.前台与后台线程性质相同,但终止条件不同. 后台线程:在运行过程中如果宿主进程结束,线程将直接终止执行:在强制终止时,线程即终止执行不论线程代码是否执行完毕. ...

  3. Leetcode 1013. 总持续时间可被 60 整除的歌曲

    1013. 总持续时间可被 60 整除的歌曲  显示英文描述 我的提交返回竞赛   用户通过次数450 用户尝试次数595 通过次数456 提交次数1236 题目难度Easy 在歌曲列表中,第 i 首 ...

  4. git 连接github的配置

    这段时间要先在git上开发,上传代码到github上,所以首先需配置本地的git和github. 这几篇文章都不错,可以参考一下,大体的配置都很清楚. 1:https://blog.csdn.net/ ...

  5. 二十五、过滤器Filter,监听器Listener,拦截器Interceptor的区别

    1.Servlet:运行在服务器上可以动态生成web页面.servlet的声明周期从被装入到web服务器内存,到服务器关闭结束.一般启动web服务器时会加载servelt的实例进行装入,然后初始化工作 ...

  6. AvalonJS+MVVM实战部分源码

    轻量级前端MVVM框架avalon,它兼容到 IE6 (其他MVVM框架,KnockoutJS(IE6), AngularJS(IE9), EmberJS(IE8), WinJS(IE9) ),它可以 ...

  7. forget suffix word aby able ability out 1

      1★ aby 2★ ability 3★ able   有`~ 能力 的,具有 这样的能力 的人或物  

  8. Java Web(十二) JavaMail发送邮件

    发送邮件的原理 概叙 邮件服务器: 要在 Internet 上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在 Internet 很多 提供邮件服务的厂商:sina.sohu.163 等等他们都 ...

  9. 0-MAVEN SETTING

    localRepository : 表示本地库的保存位置,也就是maven主要的jar包保存位置,默认在${user.dir}/.m2/repository,如果需要另外设置,就换成其他的路径 Ser ...

  10. Win10系列:VC++ Direct3D开发基础1

    在介绍如何使用Direct3D项目模版来绘制立体图形之前,首先为读者介绍在Direct3D应用程序开发过程中涉及到的一些常用概念. (1)资源 资源是指可以被Direct3D图形管线所访问的内存空间, ...