java xml schema验证_XML Schema验证

一、什么事Schema(XSD)

XML Schema是微软定义的一套用来验证XML技术。是一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。

DTD的局限性:

1、DTD不遵循XML语法。

2、DTD的数据类型有限,与数据库类型不一致。

3、DTD不可以扩展。

4、DTD是不支持命名空间的。

Schema的优势:

1、Schema是一种XML语法结构,编写更加方便。

2、Schema可以支持数据类型。

3、Schema是可以扩展的。

4、Schema支持命名空间。

二、Schema文档结构

Schema文档本身是一个XML文档,所以必须满足XML文档结构。在每个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://mynamespace/myschema" :显示被此 schema 定义的元素验证的XML来自的命名空间。

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

elementFormDefault="qualified" :指目标XML是否遵循本Schema,qualified表示遵循,unqualified表示不遵循。

三、在XML中引用Schema文档

George

John

Reminder

说明:

xmlns="http://www.w3school.com.cn" :规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素都被声明于 "http://www.w3school.com.cn" 这个命名空间。

xsi:schemaLocation="http://www.w3school.com.cn note.xsd":指定文件路径。

四、Schema数据类型:

Schema中支持丰富的数据类型,可以简单分为简单类型和复合类型。

1、简单类型包括:

1)内置的数据类型。

a、基本的数据类型

基本的数据类型

数据类型

描述

string

字符串

boolean

布尔类型

decimal

特定精度的数字

float

单精度浮点数

double

双精度浮点数

duration

表示持续时间/日期格式

dateTime

完整日期格式

time

代表时分秒

date

代表日期

b、扩展的数据类型

扩展的数据类型

数据类型

描述

ID

用于唯一表示元素

IDREF

应用ID元素的属性或属性

ENTITY

实体类型

long

表示长整型:-9223372036854775808~9223372036854775807

int

表示整型:-2147483648~--2147483647

short

表示短整型:-32768~32767

byte

整型:-128~127

2)用户自定义的简单类型(通过simpleType定义)

2、复合类型(通过complexType定义)

五、Schema中的元素类型

1、根元素:schema。

包含已经定义的schema。

属性:

xmlns:schema的命名空间。

targetNamespace:要验证的XML文件的命名空间。

elementFormDefault:要验证的XML是否遵循当前的验证命名空间。

2、用于定义元素和属性的元素:element、attribute、group、attributeGroup。

1)element:声明一个元素

属性:

name:需要限定XML文档元素的名称。

type:需要限定XML文档元素的类型。

ref:引用外部定义的元素

minOccurs:元素最小出现的次数。

maxOccurs:元素最大出现的次数。

例:声明student节点,类型为string类型,最小出现1次,最多出现3次。

2)group:声明一个分组

将多个元素声明放到一个分组中,然后在其他元素中通过group引用。

属性:name分组的名称

例:将name和age定义为一个分组,然后在student中引用这个分组。

3)attribute元素:

用于声明一个属性:

属性:

name:属性名称

type:属性类型

user:是否必选,required必选,optional可选,默认可选

default:默认值

fixed:固定值

注意:默认值和固定值不能同时出现。

示例:属性的用法

Schema文档:

XML文档:

4)attributeGroup属性组

和前面的元素组类型,在外部定义属性组,然后在元素中引用属性组。

示例:

Schema文档:

3、用于定义简单类型:simpleType。

它决定了元素和属性值得约束和相关信息。

属性:name

常用的两种方式:

1)restriction:约束

对现有类型进行扩充

示例:设置年龄必须在18-100之间

2)list:列表

从一个特定的数据类型的集合中选择定义一个简单类型元素。

Schema文档:

10 20 300

4、用于定义复杂类型:complexType。

需要使用在节点下包含子节点的情况。

Schema文档:

XML文档:

张三

20

李四

20

5、用于进行约束:choice、list、sequence、restriction。

1)choice

把一组属性声明组合到一起,一边被复合类型所应用,XML中只能出现限定选项中的一个元素。

例:

Schema文档:

XML文档:

自行车>

交通工具>

2)sequence

表示元素必须按照规定的序列进行显示。


版权声明:本文为weixin_30693337原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。