[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目录下 ...
随机推荐
- c#三层架构登陆实例
很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面 跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI, ...
- nyoj744(位运算)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=744 思路:a^b可以得到a~b间任意两个数异或运算的长度的最大值,设为n,答案为:pow(2 ...
- JDBC之SqlHelper
SqlHelper工具类如下: import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.Resul ...
- Ionic环境搭建
stepts npm install -g ionic@beta Make sure you have NodeJS installed. Download the installer here or ...
- hdu 1249 三角形
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1249 part=3*s*(s-1)+2 #include<stdio.h> #includ ...
- jq 轮播图
<style> #focus{width:500px;height:200px;overflow:hidden;/*用一个div把图片包含设置超出范围隐藏*/} </style> ...
- windows 下的tcping 小插件
如果把插件放在根目录 就要能过cmd切换到根目录 cd \ c:\>tcping -d -t -i 0.06 www.baidu.com 将文件放在c:\WINDOWS\system32目录下, ...
- C#的索引器
using System; using System.Collections; using System.Collections.Generic; using System.IO; namespace ...
- 攻城狮在路上(叁)Linux(二十一)--- linux磁盘检查 fsck \ badblocks
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查.这一步是可选的,尽量少用. 使用前的建议:使用fsck命令时,被检查的分区务必不要挂载在系统上. 一.fsck: 命令格式:fsck [ ...
- 企业QQ 增加在线交谈链接
企业QQ的在线交流链接跟普通QQ的在线交流不一样,普通QQ的在线交流,可以在http://shang.qq.com/v3/widget.html生成:企业qq的链接可以按以下步骤添加: 第一步:引入企 ...