以下为一个表示学校的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. python学习 小游戏

    基于python3.4 while循环 #!/usr/bin/python3 #-*- coding=utf-8 -*- import random import sys import os luck ...

  2. win7自动登录桌面

    control userpasswords2 在开始菜单中搜索“运行”,回车打开,或者Win+R打开运行窗口. 键入“control userpasswords2”或者“rundll32 netplw ...

  3. php命令行运行出现错误Call to undefined function curl_init()

    在windows命令行窗口下运行php命令,需要将php.exe所在的路径添加到Path环境变量,例如C:\wamp\bin\php\php5.4.3 启动Apache服务 在命令行中输入php te ...

  4. Android笔记:菜单

    1.按键调出菜单 public boolean onCreateOptionsMenu(Menu menu) 重写建立菜单方法 public boolean onOptionsItemSelected ...

  5. 假期(codevs 3622)

    题目描述 Description 经过几个月辛勤的工作,FJ决定让奶牛放假.假期可以在1-N天内任意选择一段(需要连续),每一天都有一个享受指数W.但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不 ...

  6. Lua程序设计入门

    在Lua中,一切都是变量,除了关键字.TTMD强大了. 1.注释 -- 表示注释一行 --[[ ]]表示注释一段代码,相当于C语言的/*....*/ 注意:[[ ... ]]表示一段字符串 2.lua ...

  7. iOS系类教程之用instruments来检验你的app

    比较了好多关于instruments 还是发现老外写的比较牛逼.于是果断翻译过来.有能力的的可以去看英文原版,鼓励大家看原版资料远离二手教程.这里是原文   入门 为了节省大家的时间,提供一个演示的D ...

  8. python中获取当前日期在当月是第几天

  9. Feature hashing相关 - 2

    Bloom filter     思路 用多个不同hash 来记录,比如遇到一个 love 有4个hash function 映射到4个bit位置,如果所有位置都是1 那么认为之前已经遇到love这个 ...

  10. linux后台运行和关闭、查看后台任务

    转自:http://www.cnblogs.com/kaituorensheng/p/3980334.html fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.&a ...