xml的schema约束(Java)
1.schema约束
*dtd语法:<!ELEMENT 元素名称 约束>
schema符合xml的语法,是xml语句。
一个xml文件中可以有多个schema,多个schema使用名称空间来区分(类似于java中的包),而一个xml文件中只能有提个dtd。
dtd中有PCDATA类型,而在schema中支持多种数据类型,比如,年龄只能是一个整数,在schema中可以直接定义一个整数类型。
schema语法更加复杂,目前不能代替dtd。
person.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/schema"
xsi:schemaLocation="http://www.example.org/schema schema.xsd" id1="123">
<name>宝娟</name>
<age>20</age>
<school>**大学**</school>
</person>
<!--
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance":表示是一个被约束文件
xmlns="http://www.example.org/schema":约束文件里的targetNamespace
:xsi是一个随便起的别名,为了区分开二者同名。
xsi:schemaLocation="http://www.example.org/schema schema.xsd">:
targetNamespace 空格 约束文档的路径
-->
2.schema快速入门
*创建一个schema文件,它的后缀名为 .xsd
schema.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema"
xmlns:tns="http://www.example.org/schema"
elementFormDefault="qualified">
<element name="person">
<complexType>
<sequence>
<element name="name" type="string" maxOccurs="unbounded"></element>
<element name="age" type="int"></element>
<element name="school" type="string"></element>
</sequence>
<attribute name="id1" type="int" use="required"></attribute>
</complexType>
</element>
</schema>
<!-- 约束
在schema文件里:
属性:xmlns="http://www.w3.org/2001/XMLSchema"表示当前xml文件是一个约束文件
targetNamespace="http://www.example.org/schema":使用schema文件时,直接通过这个地址引入约束文件。
elementFormDefault="qualified":表示质量良好的。
1.看xml中有多少个元素,就对应在schema文件中有多少个<element></element>
2.判断简单元素/复杂元素
* 复杂元素:
<element name="person">
<complexType>
<sequence>
子元素
</sequence>
</complexType>
</element>
* 简单元素:写在
<sequence>
简单元素
</sequence>
** <sequence>表示元素出现的次序必须一致
<all>:元素只能出现一次
<choice>:元素只能出现其中的一个
maxOccurs="unbounded":表示元素出现的次数
<any></any>:表示任意元素 **
属性约束:只能用于复杂元素,所放的位置如下:
</sequence>
<attribute name="id1" type="int" use="required"></attribute>
</complexType>
*****以上所有语句,属性type之前必须要有"空格"。如果没有的话,会报错。
*****多个schema约束具体可以去查看文档。
-->
最新文章
- oracle优化:避免全表扫描(高水位线)
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(二)
- Windows下pry安装和配置
- 64位Win7下编译hadoop 1.2.1问题解决
- linux移植问题汇总(一)
- Connected_Component Labelling(联通区域标记算法) C++实现
- JAVA使用apache http组件发送POST请求
- ELK 快速指南
- merge into的用法及10g新特性总结
- [C#] .NET4.0中使用4.5中的 async/await 功能实现异步
- matplotlib中的plt.ion()和plt.ioff()函数
- Linux的top命令学习【转载】
- 对Unity一个Shader编译Bug的分析(Unrecognized sampler &#39;samplerunity_lightmap)
- 了解Serverless架构
- Troubleshooting ORA-12547 TNS: Lost Contact (Doc ID 555565.1)
- 爬虫——selenium基础
- 最近Android真的凉凉了?
- Android PopupWindow 仿微信弹出效果
- iOS.Thread.OSAtomic
- easyui datagrid实现拖动表头
热门文章
- html5 嵌入元素 img map areaiframe embed meter object meter
- ASP.NET 中对大文件上传的简单处理
- java面试题之----get和post请求方法的区别
- docker-day1-安装和基本使用
- 深度剖析hdfs原理
- 在同一网关下ping不通其他电脑
- BZOJ2648/2716:SJY摆棋子/[Violet]天使玩偶(K-D Tree)
- luogu P4168 [Violet]蒲公英
- POJ 3067 Japan 【树状数组经典】
- 【转】学习jar命令 创建和解压jar文件包