一、schema简介
1.schema符合xml的语法,它是一个xml文件
2.一个xml中只能有一个dtd文件,但是可以有多个schema,通过名称空间来区分(类似于JAVA中的包)
3.dtd中有#PCDATA类型,即String,但是schema中可以有多种类型(int double 等等)
4.schema的出现时为了破除dtd的局限性,但是其语法比较复杂,现在还不能代替dtd
二、schema的快速入门
1.创建一个schema文件,名字为.xsd,里面的根节点为<schema></schema>
2.在schema文件里面

<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/1"
xmlns:tns="http://www.example.org/1"
elementFormDefault="qualified">
</schema>

—属性:表示当前xml文件是一个schema约束文件

xmlns="http://www.w3.org/2001/XMLSchema" 

—使用schema文件,直接通过该地址引入约束文件,保证没有重复的,地址可以自己定义

targetNamespace="http://www.example.org/1"

—质量良好

elementFormDefault="qualified">

三、看有多少的元素
区分简单元素和复杂元素
如果是复杂元素

<element name="person"><complexType><sequence></sequence></complexType>
</element>

简单元素,写入到复杂元素里

<element name="person"><complexType><sequence><element name="name"></element><element name="age"></element></sequence></complexType>
</element>
<sequence></sequence>:表示元素只能按照里面的顺序出现
<all></all>:元素只能出现一次
<choice></choice>:元素只能出现一个
<any><any>:表示可以写任意属性
其中的属性:maxOccurs="unbounded":表示元素出现的次数
<element name="name" maxOccurs="unbounded"></element>

定义属性:必须写是复杂元素里,写在</complexType>上面。

<attribute name="id1" type="int" use="required"></attribute></complexType>定义的这个id1要写在person中

name:定义属性名称
type:定义属性类型
use:属性是否必须要出现

四、在xml中引入schema文件

<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/1"
xsi:schemaLocation="http://www.example.org/1 1.xsd">

—表示xml是一个被约束文件,xsi表示包名,可以随便写

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

—是约束文档中的targetNamespace,引入的文档的地址

xmlns="http://www.example.org/1"

—targetNamespace 空格 结束文档的路径地址

xsi:schemaLocation="http://www.example.org/1 1.xsd">

引入多个schema,可以个schema起别名,如果使用部门的属性,可以用部门的schema别名:属性

<dept:name>aa</dept:name>

五、sax解析原理(事件驱动,边读边解析)
1.在java.xml.parsers包中
SAXParser:此类的实例可以从SAXParserFactory.newSAXParser()方法获得,该类的方法:parse(File f,DefultHandler dh):第一个参数:xml的路径,第二个参数:事件处理器
SAXParserFactory:实例通过newInstance()得到。

2.sax的执行过程
执行parse方法的时候,当把事件处理器传进去的时候,相当于在方法中绑定了一个事件。然后自动执行事件。事件处理器是默认传进去的。
当解析到开始标签的时候,自动执行startElement()方法
当解析到文本的时候,自动执行characters()方法
当解析到结束标签的时候,自动执行endElement()方法

JAVAWEB第六天schema约束相关推荐

  1. 第1天 XML和DTD、schema约束

    1.xml * 扩展名:*.xml * 作用:存储.配置 一个XML文件分为如下几部分内容:文档声明.元素.属性.注释  CDATA区.特殊字符.处理指令(processing instruction ...

  2. schema约束文档与xml文件详解

    schema约束文档与xml文件详解 1.前言 2.schema约束文档(.xsd文件) 2.1 targetNameSpace 2.2官方文档与自定义文档的关系 2.3 声明名称空间 2.4 sch ...

  3. XML的DTD约束和Schema约束

    ajax是什么? 如图: XML是什么? 可扩展标记语言,标记数据,定义数据类型 允许用户对自己的标记语言进行定义的源语言 xml详细介绍:(http://www.w3school.com.cn/xm ...

  4. XML约束——Schema约束

    XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...

  5. 【详谈 Delta Lake】系列专题 之 基础和性能 - 02 深入理解事务日志 / 如何使用Schema约束和演变...

    译者 韩宗泽(棕泽),阿里云计算平台事业部技术专家,负责开源大数据生态企业团队的研发工作 前言 本文翻译自大数据技术公司 Databricks 针对数据湖 Delta Lake 系列技术文章.众所周知 ...

  6. webservice 教程学习系列(一)——schema约束

    最近同事在做一个webservice 接口的调用,我比较感兴趣,所以就找时间学习了一下.在此写下我学习的全过程,算是记个笔记吧!如有不足或者错误之处,欢迎指摘. 因为大部分的webservice是通过 ...

  7. 关于Spring配置文件xml文档的schema约束

    最开始使用Spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version=&q ...

  8. xml之schema约束

    前言 schema约束的定义 将dtd文件引入到xml文档中 前言 在这里我们介绍了xml之tdt约束,但是这种约束没法约束属性的值,比如age属性我想限制只能是数字,那就不行了,所以我们这里介绍sc ...

  9. Schema约束模式实例

    book.xsd <?xml version="1.0" encoding="UTF-8"?> <!-- xmlns:默认命名空间 xmlns ...

最新文章

  1. python如何收集数据_用Python做数据清洗:采集几百个xls或csv中的数据并汇总
  2. 我的 Atom 插件,有图
  3. リストに項番をつける
  4. 自学python方法-总算懂得快速学习python的方法
  5. 安装ubuntu后要做的几件事
  6. 【洞见】关于PMP个人认识和理解
  7. 原码、反码、补码、移码的表示
  8. linux应用程序之----时间类编程
  9. “烟花”来势汹汹!用数据可视化告诉你:台风最爱在哪登陆?
  10. 724. 寻找数组的中心索引
  11. 设计模式—单例模式(思维导图)
  12. 妙招教你Office Word 2007文档另存为PDF文件[转]
  13. 重复代码检查工具Simian
  14. 阿里矢量图可根据样式修改颜色
  15. 如何配置服务器的内网IP以及MTU
  16. 数据结构——克鲁斯卡尔(Kruskal)算法
  17. STM8入门以及程序编译、烧录、IAR使用方法(扫盲篇)
  18. 报错解决:Lammps中lmp_mpi编译出错
  19. 华为机式(矩阵相乘)
  20. HEVC码率控制资料整理

热门文章

  1. WAVECOM Q39
  2. 雷达人体存在感应器成品,实时静止存在感知应用,智能化控制技术应用
  3. 智慧社区管理系统11(物业收费管理列表和功能实现)
  4. 中欧脉计算机信任服务,欧脉门窗运营中心誓师大会暨员工团建活动圆满落幕
  5. COCOS2DX 安卓WIN32下配置手册
  6. 0614-5.16.1-同一OS用户并行Shell脚本中kinit不同的Principal串掉问题分析
  7. 先说好,千万别用这个App做坏事
  8. 五险一金 | 每月缴纳的社保费用都去哪了?(好漂亮的小姐姐)
  9. ios开发 - ios6 自动布局 1
  10. Win7 安装Python3.7.7(小白自学)