[xsd学习]xsd实例
以下为一个表示学校的xml文件,学校内有若干学生,每个学生都有基本信息,电脑信息,选课信息
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 表示一个学校的xml --> <school
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com school.xsd"> <!-- 表示学校学生,可以有一个或者多个 -->
<students>
<!-- 每个学生都有学号、姓名、年龄,
每个学生都有选课,有些选多门功课
有些学生有电脑 -->
<student>
<id address="北京">101</id>
<name>张三</name><!-- 姓名不能为空 -->
<age>20</age><!--年龄要求必须是20-30之间 -->
<class>语文</class>
</student>
<student>
<id address="上海">201</id>
<name>张三</name><!-- 姓名不能为空 -->
<age>20</age><!--年龄要求必须是20-30之间 -->
<computer>IBM</computer>
<class>语文</class>
<class>语文</class>
</student>
</students>
</school>
xml引入school.xsd文件作文校验,目前主要的xsd写法有两种:
1、使用元素为基本对象,基于首先对所有元素和属性的定义,然后再使用 ref 属性来引用它们。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified"> <xs:element name="id">
<xs:complexType ><!--定义学号为数字型,且只能为3位数字-->
<xs:simpleContent>
<xs:extension base="xs:integer" >
<xs:attribute name="address" type="xs:string"></xs:attribute><!--定义属性-->
</xs:extension>
</xs:simpleContent>
</xs:complexType >
</xs:element>
<xs:element name="name">
<xs:simpleType><!--定义姓名-->
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:element>
<xs:element name="sex">
<xs:simpleType ><!--定义性别,只能为男或者女-->
<xs:restriction base="xs:string" >
<xs:pattern value="男|女"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="age">
<xs:simpleType><!--定义年龄,只能为20-30的整数-->
<xs:restriction base="xs:integer" >
<xs:minInclusive value="20" />
<xs:maxInclusive value="30" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="computer">
<xs:simpleType ><!--定义电脑,只能包含字母-->
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]+"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="class">
<xs:simpleType><!--定义课程,只能为选定值-->
<xs:restriction base="xs:string">
<xs:enumeration value="语文" />
<xs:enumeration value="数学" />
<xs:enumeration value="政治" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:group name="studentGroup">
<xs:sequence><!--表明元素可以按任意属性出现,且只能出现一次-->
<xs:element ref="id" />
<xs:element ref="name" />
<xs:element ref="age" />
<xs:element ref="sex"/>
</xs:sequence>
</xs:group>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:group ref="studentGroup"></xs:group><!--引用学生基本属性-->
<xs:element name="computer" type="computerType"></xs:element><!--学生拥有电脑-->
<xs:any></xs:any><!--其他属性-->
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="students">
<xs:complexType>
<xs:sequence>
<xs:element ref="student" minOccurs="1" maxOccurs="10">
</xs:element>
</xs:sequence>
<xs:attribute name="address" type="xs:string"></xs:attribute><!--定义属性-->
</xs:complexType>
</xs:element> <xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element ref="students" />
</xs:sequence>
</xs:complexType>
</xs:element> </xs:schema>
2、使用类型为基本对象,定义了类或者类型,这样使我们有能力重复使用元素的定义。具体的方式是:首先对简易元素和复合元素进行命名,然后通过元素的 type 属性来指向它们
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified"> <xs:simpleType name="addressType"><!--地址属性-->
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType> <xs:complexType name="idType"><!--定义学号为数字型,且只能为3位数字-->
<xs:simpleContent>
<xs:extension base="xs:integer" >
<xs:attribute name="address" type="addressType"></xs:attribute><!--定义属性-->
</xs:extension>
</xs:simpleContent>
</xs:complexType >
<xs:simpleType name="nameType"><!--定义姓名-->
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="sexType"><!--定义性别,只能为男或者女-->
<xs:restriction base="xs:string" >
<xs:pattern value="男|女"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ageType"><!--定义年龄,只能为20-30的整数-->
<xs:restriction base="xs:integer" >
<xs:minInclusive value="20" />
<xs:maxInclusive value="30" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="computerType"><!--定义电脑,只能包含字母-->
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]+"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="classType"><!--定义课程,只能为选定值-->
<xs:restriction base="xs:string">
<xs:enumeration value="语文" />
<xs:enumeration value="数学" />
<xs:enumeration value="政治" />
</xs:restriction>
</xs:simpleType>
<xs:group name="studentGroup">
<xs:sequence><!--表明元素可以按任意属性出现,且只能出现一次-->
<xs:element name="id" type="idType" />
<xs:element name="name" type="nameType" />
<xs:element name="age" type="ageType" />
<xs:element name="sex" type="sexType" />
</xs:sequence>
</xs:group>
<xs:complexType name="studentType">
<xs:sequence>
<xs:group ref="studentGroup"></xs:group><!--引用学生基本属性-->
<xs:element name="computer" type="computerType"></xs:element><!--学生拥有电脑-->
<xs:any></xs:any><!--其他属性-->
</xs:sequence>
</xs:complexType> <xs:complexType name="studentsType">
<xs:sequence>
<xs:element name="student" type="studentType" minOccurs="1" maxOccurs="10">
</xs:element>
</xs:sequence>
<xs:attribute name="address" type="addressType"></xs:attribute><!--定义属性-->
</xs:complexType> <xs:complexType name="schoolType">
<xs:sequence>
<xs:element name="students" type="studentsType"/>
</xs:sequence>
</xs:complexType> <xs:element name="school" type="schoolType">
</xs:element> </xs:schema>
当然针对简单的xml文件,还可以使用直接嵌套方式进行定义,但开发中不常用,这里不做叙述。
[xsd学习]xsd实例的更多相关文章
- [xsd学习]xsd介绍
一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料 ...
- [xsd学习]xsd元素限定
限定(restriction)用于为 XML 元素或者属性定义可接受的值 一.xsd中主要限定格式如下: <xs:element name="xxx"><!--元 ...
- [xsd学习]xsd基本要素
一.xsd常用数据格式 xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 二.简易元素 <xs:element name=&q ...
- SQL语句学习手册实例版
SQL语句学习手册实例版 表操作 例1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, ...
- TCP/IP协议学习之实例ping命令学习笔记
TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...
- [xsd学习]复合元素
对于xsd,复合元素的定义有两种方式: 一.在元素内部直接声明,此种方法只能此元素使用 <xs:element name="employee"> <xs:comp ...
- XSD 学习
1.新建文件 Rhythmk.xsd <?xml version="1.0" encoding="utf-8"?> <xs:schema id ...
- Thymeleaf 学习笔记-实例demo(中文教程)
项目demo http://pan.baidu.com/s/1wg6PC 学习资料网址 http://www.blogjava.net/bjwulin/archive/2013/02/07/ ...
- 学习springMVC实例1——配置和跳转到HelloWorld
本文让大家迅速掌握springMVC的使用方法,以最简单的方式理解此框架 一.用eclipse新建一个web项目,命名为springMVC1,tomcat的端口号为9090 二.在WEB-INF目录下 ...
随机推荐
- 【QT】C++ GUI Qt4 学习笔记1
Find对话框实现 平台 Qt5.3.2 MinGW4.8.2 注意创建时用QDialog finddialog.h #ifndef FINDDIALOG_H #define FINDDIALOG_H ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- eclipse的使用一
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files ...
- 一分钟可知css3版大白源码
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- oracle TIMESTAMP日期相减
select extract(day from inter) * 24 * 60 * 60 + extract(hour from inter) * 60 * 60 + extract(minute ...
- 类模板的static成员
下列代码可以通过编译吗?如何修改使其通过编译? template <class T> struct sum { static void foo(T op1 , T op2){ c ...
- myeclipse 8.5 注册码
刚才启动突然发现MyEclipse原来是收费的...汗一把,到弹出注册框我才知道.....老天啊我活的该有多窝囊.. 弹框很烦人,我一个穷书生既想继续学习又囊中羞涩无力购买,只好用盗版了(找个理由辩解 ...
- codevs 1702素数判定2
Miller-Rabin算法实现,但是一直被判题程序搞,输入9999999999得到的结果分明是正确的但是一直说我错 #include <cstdio> #include <cmat ...
- stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间
[root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...
- 数据结构和算法 – 12.高级查找算法(下)
哈希(散列)技术既是一种存储方法,也是一种查找方法.然而它与线性表.树.图等结构不同的是,前面几种结构,数据元素之间都存在某种逻辑关系,可以用连线图示表示出来,而哈希技术的记录之间不存在什么逻辑关系, ...