5.xml约束技术--------schema
1.schema约束
(1)dtd语法:<!ELEMENT 元素名称 约束>
(2)schema符合xml的语法,xml语句
(3)一个xml文件中只能有一个dtd,但是可以有多个schema,多个schema是使用名称空间区分(相当于java中的包名)
(4)dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型
比如 年龄 只能是整数,在schema可以直接定义一个整数
(5)schema语法更加复杂,所以schema目前不能代替dtd
2.schema快速入门
(1)创建一个schema文件 后缀名是 .xsd
注意:根节点是<schema>,并且schema文件也是一个xml文件
(2)在schema文件中定义了一些属性(如果用Eclipse工具会自动帮你写上)
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/1"
xmlns:tns="http://www.example.org/1"
elementFormDefault="qualified">
</schema>
xmlns="http://www.w3.org/2001/XMLSchema"
- 表示当前xml文件是一个schema约束文件(这个属性的值是确定的,不能改变,这个就是一个标志)
targetNamespace="http://www.example.org/1"
- 定义schema地址,被约束文件可以通过这个地址引入使用
- 格式:一般是使用域名加时间(http://www.xxx.cn/20181111),这样是为了防止地址名字一样
xmlns:tns="http://www.example.org/1"
- 这个删除
elementFormDefault="qualified"
(3)定义schema文件
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/1"
elementFormDefault="qualified">
<element name="persion">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</schema>
- 复杂元素:
<element name="persion">
<complexType>
<sequence>
</sequence>
</complexType>
</element>
- 简单元素
<element name="name" type="string"></element>
<element name="age" type="int"></element>
- 解读
<sequence> 表示按顺序的(也就是xml文件中元素定义,只能按照这个顺序定义,否则报错)
name="age" 表示xml元素的标签名为age
type="string" 表示数据类型
3.xml文件引入schema文件
<?xml version="1.0" encoding="UTF-8"?>
<persion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/1"
xsi:schemaLocation="http://www.example.org/1 1.xsd"
>
<name></name>
<age></age>
</persion>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 表示这是一个被约束的xml文件(标志)
- :xsi 这个是别名,为了区分下面的xmlsn属性
xmlns="http://www.example.org/1"
- 这个就是引入schema文件,这个值就是schema的地址(包名)
xsi:schemaLocation="http://www.example.org/1 1.xsd"
- schema地址 空格 schema路径
4. 元素约束(复杂元素的指示器)
<sequence> : 表示元素的出现顺序
<any> : 表示任意元素
<choice> : 元素只能出现其中的一个
maxOccurs="unbounded" : 表示元素的出现次数(unbounded表示无限)
<element name="age" type="string" maxOccurs="3"></element>
<all> : 元素只能出现一次
<element name="persion">
<complexType>
<all>
<element name="name" type="string"></element>
<element name="age" type="string"></element>
</all>
</complexType>
</element>
5.约束元素属性
<attribute> : 这个可以定义属性的约束,但是只能定义复杂元素
- 写在<complexType>标签里面
<element name="persion">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="string"></element>
</sequence>
<attribute name="id" type="int" use="required"></attribute>
</complexType>
</element>
解读:<attribute name="id" type="int" use="required"></attribute>
name="id" : 属性名字
type="int": 属性值的数据类型
use="required" 是否一定要定义这个属性
- required 表示一定
- Prohibited 特性无法使用
- Optional 特性是可选的并且可以具有任何值。 这是默认值
6.使用2个schema文件约束
1.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/one"
elementFormDefault="qualified">
<element name="persion">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="string"></element>
</sequence>
</complexType>
</element>
</schema>
2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/two"
elementFormDefault="qualified">
<element name="name" type="int"></element>
</schema>
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persion xmlns="http://www.example.org/one"
xmlns:two="http://www.example.org/two"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/one one.xsd http://www.example.org/two two.xsd"> <two:name>12</two:name>
<name>张三</name>
<age>180</age>
</persion>
5.xml约束技术--------schema的更多相关文章
- xml约束技术之dtd
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.这篇文章作简单介绍下DTD的用法.想学习完整的请点击下面w3c的教程. 1.DTD官方教程 ##2.xml约束技术: DTD约束:语法相 ...
- 2.xml约束技术----------dtd约束
1.xml的约束 (1)为什么需要定义约束了 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中写了一个元素<猫>,发 ...
- javaweb学习总结十四(xml约束之Schema)
一:schema约束简单介绍 1:xml Schema的定义以及优缺点 2:xml schema入门 3:命名空间 这里http://www.itcast.cn 并没有什么具体的意义,只是命名而已. ...
- XML约束技术
为了使XML文档规范化,对XML文档的书写进行约束 XML DTD XML文档(test.xml) <?xml version="1.0" encoding="ut ...
- xml约束之schema
使用名称空间引入Schema : 通常需要在Xml文档中的根结点中使用schemaLocation属性来指定. <itcast:书架 xmlns:itcast="http://www. ...
- javaweb学习总结八(xml约束DTD)
一:XML约束概念 xml约束:可以编写一个文档来约束xml文件的书写规范. xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束. 二:常用的xml约束技术 1:DTD,document ...
- XML约束——Schema约束
XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...
- Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题
Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题 1:说明 使用Eclipse 编写xml文件的约束文件的,包括DTD约束文件,Schema约束文件的时候, 我们也需要接受eclip ...
- JAVA基础学习之XMLCDATA区、XML处理指令、XML约束概述、JavaBean、XML解析(8)
1.CDATA区在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理.遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直 ...
随机推荐
- 分类汇总统计mysql数据库一个字段中不同的记录的总和
方法1.用 if 语句,如下例. 方法2.用case when then else 语句,用法如同if. mysql> select sum(if(id<500,1,0)),sum(if( ...
- 用Python给头像加上圣诞帽或圣诞老人小图标
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.z ...
- Window7 系统下重新建立一个新分区
为了方便使用,准备在原来分区上再分割出一个分区,步骤如下 首先右击计算机,选择管理打开计算机管理窗口,选择磁盘管理,当前窗口右侧会出现当前计算机所有已存在的分区列表. 选择要进行分区的磁盘,右击选择压 ...
- DAY 5 下午
每个点一定属于一个重链 重链条数和轻边边数是logn级别 证明和启发式合并差不多 因为轻子树的大小至少是重子树大小-1 树链剖分:两遍dfs 第一次:统计子树大小,确定重儿子 第二次:把重链剖出来 每 ...
- 建立起BI的支撑团队
Bobby Luo 罗如意(18907295660@189.cn) 2011年7月 http://weibo.com/cquptvlry 电子商务中的BI应用初探 系统架构 对整个数据仓库的架构进行规 ...
- CSAR——Channel-wise and Spatial Feature Modulation Network for Single Image Super-Resolution
1. 摘要 CNN 中的特征包含着不同类型的信息,它们对图像重建的贡献也不一样.然而,现在的大多数 CNN 模型却缺少对不同信息的辨别能力,因此也就限制了模型的表示容量. 另一方面,随着网络的加深,来 ...
- python回调函数应用-获取jenkins构建结果
需求背景: 现在用jenkins构建自动化测试(2个job),公司现将自动化纳入到发布系统 要求每次构建成功之后,把测试结果发送给发布系统.这就需要先获取jenkins构建的结果,如果构建结束,才能发 ...
- 一个简单的INI读写文件类,基于C++的模板编程实现,使用超级方便
GITHUB链接:https://github.com/brofield/simpleini 主体代码: /** @mainpage <table> <tr><th> ...
- 45 MySQL自增id
45 MySQL自增id 表定义自增id 说到自增id,前面提到mysql的自增id不连续,当表定义的自增值达到上限后的逻辑是:再申请下一个id时,得到的值保持不变 ; insert into t v ...
- NanUI
https://github.com/NetDimension/NanUI/wiki/%E4%B8%AD%E6%96%87%E8%AF%B4%E6%98%8E NanUI基于ChromiumFX项目进 ...