什么是XSD
XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。 XML Schema 是基于 XML 的 DTD 替代者。 XML Schema 描述 XML 文档的结构。 XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 XML Schema:
定义可出现在文档中的元素定义可出现在文档中的属性定义哪个元素是子元素定义子元素的次序定义子元素的数目定义元素是否为空,或者是否可包含文本定义元素和属性的数据类型定义元素和属性的默认值以及固定值
Xml Schema的用途
定义一个Xml文档中都有什么元素定义一个Xml文档中都会有什么属性定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序定义元素或者属性的数据类型定义元素或者属性的默认值或者固定值
根元素
schema 声明:
elementFormDefault="qualified" targetNamespace="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0"> ... ...
xmlns:xs=“http://www.w3.org/2001/XMLSchema” 表示元素和数据类型等定义来自w3,同时它还规定了来自命名空间 w3 的元素和数据类型应该使用前缀 xs: targetNamespace=“http://maven.apache.org/POM/4.0.0” 显示被此 schema 定义的元素 来自命名空间 xmlns=“http://maven.apache.org/POM/4.0.0” 表示此文档的默认命名空间 elementFormDefault=“qualified” 任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定
在 XML 文档中引用 Schema
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素都被声明于"http://maven.apache.org/POM/4.0.0" 这个命名空间。 schemaLocation 属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置
XSD简易元素
简易元素定义
name="tag"表示要定义元素的名称 ,type=”xs:string” 表示要定义元素的数据类型,default=”HEAD” 表示定义元素的默认值,minOccurs=“0” 表示XML文档中某个[元素节点] 是否可以不出现,默认值为1,表示必须出现。 除此之外,简易元素还有几个属性,nillable:表示XML文档中某个[元素取值] 是否可以为空,默认值为false,表示不能为空,fixed: 表示要定义元素的固定值,此元素只可以取这些值简易元素属性
限定描述enumeration定义可接受值的一个列表fractionDigits定义所允许的最大的小数位数。必须大于等于0。length定义所允许的字符或者列表项目的精确数目。必须大于或等于0。maxExclusive定义数值的上限。所允许的值必须小于此值。maxInclusive定义数值的上限。所允许的值必须小于或等于此值。maxLength定义所允许的字符或者列表项目的最大数目。必须大于或等于0。minExclusive定义数值的下限。所允许的值必需大于此值。minInclusive定义数值的下限。所允许的值必需大于或等于此值。minLength定义所允许的字符或者列表项目的最小数目。必须大于或等于0。pattern定义可接受的字符的精确序列。totalDigits定义所允许的阿拉伯数字的精确位数。必须大于0。whiteSpace定义空白字符(换行、回车、空格以及制表符)的处理方式。
最大最小值限定
枚举限定
模式约束
空白字符限定
长度限定
XSD复合类型
定义复合元素有两种方法 1、 通过命名此元素,可直接对元素进行声明
2、元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称
空元素
仅含元素
仅含文本 此类型仅包含简易的内容(文本和属性),因此我们要向此内容添加 simpleContent 元素。当使用简易内容时,我们就必须在 simpleContent 元素内定义扩展或限定,就像这样:
混合元素 为了使字符数据可以出现在 “letter” 的子元素之间,mixed 属性必须被设置为 “true”
指示器
通过指示器,我们可以控制在文档中使用元素的方式。在XSD中有七种指示器: Order 指示器:All,Choice,Sequence ;用于定义元素的顺序 Occurrence 指示器:maxOccurs,minOccurs;Occurrence 指示器用于定义某个元素出现的频率。maxOccurs 以及 minOccurs 的默认值均为 1。 Group 指示器:Group name, attributeGroup name;Group 指示器用于定义相关的数批元素。
All 指示器
Choice 指示器
Sequence 指示器
maxOccurs 指示器 指示器可规定某个元素可出现的最大次数,如需使某个元素的出现次数不受限制,请使用 maxOccurs=“unbounded” 这个声明
minOccurs 指示器 指示器可规定某个元素能够出现的最小次数:
maxOccurs="10" minOccurs="0"/>
元素组指示器 用来定义相关的一组元素。
属性组指示器 用来定义相关的一组属性。
any元素
通过使用
anyAttribute元素
元素使我们有能力通过未被 schema 规定的属性来扩展 XML 文档!
substitutionGroup元素替换
XSD数据类型
1、XSD字符串 字符串数据类型用于可包含字符串的值,可包含字符、换行、回车以及制表符。 可与字符串数据类型一同使用的限定:enumeration、length、maxLength、minLength、pattern (NMTOKENS、IDREFS 以及 ENTITIES 无法使用此约束)、whiteSpace
名称描述ENTITIESENTITYID在 XML 中提交 ID 属性的字符串 (仅与 schema 属性一同使用)IDREF在 XML 中提交 IDREF 属性的字符串(仅与 schema 属性一同使用)IDREFSlanguage 包含合法的语言 id 的字符串Name包含合法 XML 名称的字符串NCNameNMTOKEN在 XML 中提交 NMTOKEN 属性的字符串 (仅与 schema 属性一同使用)NMTOKENSnormalizedString不包含换行符、回车或制表符的字符串QNamestring字符串token不包含换行符、回车或制表符、开头或结尾空格或者多个连续空格的字符串
2、日期和时间类型
名称描述date定义一个日期值dateTime定义一个日期和时间值duration定义一个时间间隔gDay定义日期的一个部分 - 天 (DD)gMonth定义日期的一个部分 - 月 (MM)gMonthDay定义日期的一个部分 - 月和天 (MM-DD)gYear定义日期的一个部分 - 年 (YYYY)gYearMonth定义日期的一个部分 - 年和月 (YYYY-MM)time定义一个时间值
3、数值数据类型 可与数值数据类型一同使用的限定:enumeration、fractionDigits、maxExclusive、maxInclusive、minExclusive、minInclusive、pattern、totalDigits、whiteSpace
名字秒数byte有正负的 8 位整数decimal十进制数int有正负的 32 位整数integer整数值long有正负的 64 位整数negativeInteger仅包含负值的整数 ( …, -2, -1.)nonNegativeInteger仅包含非负值的整数 (0, 1, 2, …)nonPositiveInteger仅包含非正值的整数 (…, -2, -1, 0)positiveInteger仅包含正值的整数 (1, 2, …)short有正负的 16 位整数unsignedLong无正负的 64 位整数unsignedInt无正负的 32 位整数unsignedShort无正负的 16 位整数unsignedByte无正负的 8 位整数
4、杂项数据类型 可与杂项数据类型一同使用的限定:enumeration (布尔数据类型无法使用此约束*)、length (布尔数据类型无法使用此约束)、maxLength (布尔数据类型无法使用此约束)、minLength (布尔数据类型无法使用此约束)、pattern、whiteSpace
名称描述anyURIbase64BinarybooleandoublefloathexBinaryNOTATIONQName