以下为一个表示学校的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实例的更多相关文章

  1. [xsd学习]xsd介绍

    一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料 ...

  2. [xsd学习]xsd元素限定

    限定(restriction)用于为 XML 元素或者属性定义可接受的值 一.xsd中主要限定格式如下: <xs:element name="xxx"><!--元 ...

  3. [xsd学习]xsd基本要素

    一.xsd常用数据格式 xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 二.简易元素 <xs:element name=&q ...

  4. SQL语句学习手册实例版

    SQL语句学习手册实例版 表操作 例1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  5. TCP/IP协议学习之实例ping命令学习笔记

    TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...

  6. [xsd学习]复合元素

    对于xsd,复合元素的定义有两种方式: 一.在元素内部直接声明,此种方法只能此元素使用 <xs:element name="employee"> <xs:comp ...

  7. XSD 学习

    1.新建文件 Rhythmk.xsd <?xml version="1.0" encoding="utf-8"?> <xs:schema id ...

  8. Thymeleaf 学习笔记-实例demo(中文教程)

    项目demo     http://pan.baidu.com/s/1wg6PC 学习资料网址  http://www.blogjava.net/bjwulin/archive/2013/02/07/ ...

  9. 学习springMVC实例1——配置和跳转到HelloWorld

    本文让大家迅速掌握springMVC的使用方法,以最简单的方式理解此框架 一.用eclipse新建一个web项目,命名为springMVC1,tomcat的端口号为9090 二.在WEB-INF目录下 ...

随机推荐

  1. iOS中NSUserDefaults详解

    NSUserDefault 作为iOS中一种轻量级数据本地化方式,简单易用,经常用于存储一些应用相关属性记录,例如图书app的背景色,进度,上次阅读的书籍及相关配置信息.NSUserDefault实质 ...

  2. iPhone:4.7 5.5 4 3.5 对应的各个设备屏幕尺寸对应的像素及App上线信息

    Shared App Information You can access these properties from the App Details page in the App Informat ...

  3. NYOJ题目74小学生算术

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsYAAAI0CAIAAACRUHjwAAAgAElEQVR4nO3dO3LbyroG0DsJ5RqIYg

  4. mysql里表以及列的增删改查

    在一个表里插入数据(增)   insert into 表名 (需要插入的列名如  id,name,age)values    (1,'张三',20), (2,'李四',30):     查询表内容(查 ...

  5. .NET开发工具之Excel导出公共类

    来源:Pino晨 链接:cnblogs.com/chenxygx/p/5954870.html 说明 最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Ex ...

  6. jQueryEasyUi验证

        多重验证: { field : 'startPort', title : "起始端口", editor: "text", width : 50, edi ...

  7. MySQL zabbix

    http://liqingbiao.blog.51cto.com/3044896/1712080

  8. SQLServer多表连接查询

    双表内部连接查询 select wName,dName from DepartMent,Worker where DepartMent.dID=Worker.did select wName,dNam ...

  9. C# 中的Singleton模式

    一般写Singleton基本都是一下这个套路 class Singleton { public static Singleton instance; private Singleton() { } p ...

  10. 使用Modernizr探测HTML5/CSS3新特性(转载)

    转载地址:http://www.cnblogs.com/TomXu/archive/2011/11/18/detecting-html5-css3-features-using-modernizr.h ...