webservice03#schema#元素属性定义
工具软件XMLSpy 2010 破解版,是非常好的写XMl的工具软件.
1,Schema的好处:
Schema出现的目的是通过一个更加合理的方式来编写xml的限制文件(基于xml语法的方式);
Schema可以使用命名空间来支持多个名称相同的元素;
Schema可以很好的完成对Java或者所有对象的修饰并且提供了大量的数据类型。
2,Schema文件 .xsd
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns=http://www.w3.org/2001/XMLSchema <!--Schema的默认命名空间,不能修改,但可以增加前缀,如果增加前缀之后,就意味着所有element等元素都需要增加前缀--> targetNamespace=http://www.example.org/01 <!--自己这个文档的命名空间,可以方便其他Schema,xml文件引用 --> xmlns:tns=http://www.example.org/01 <!-- 此处的名称和自己的名称空间一致,但增加了tns前缀,此时如果 引用当前文件创建的类型,需要加上tns前缀--> elementFormDefault="qualified"> <!-- user 是一个复杂类型,依次有三个元素 id,userName,birthday --> <element name="user"> <complexType> <sequence> <element name="id" type="int"></element> <element name="userName" type="string"></element> <element name="birthday" type="date"></element> </sequence> </complexType> </element> </schema>
3, 在xml中引入Schema文件
<?xml version="1.0" encoding="UTF-8"?>
<user xmlns="http://www.example.org/01"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance <!-- 创建了一个可以引入其他Schema文件的名称空间 -->
xsi:schemaLocation="http://www.example.org/01" > <!-- 引入其他名称空间 -->
<!-- 如果采用文件的方式引入其他命名空间,可以这样: xsi:noNamespaceSchemaLocation="01.xsd" -->
<id>1</id>
<userName>yangw</userName>
<birthday>1992-09-24</birthday>
</user>
特别注意: 如果要在eclipse中使用命名空间的引入,需要为xml增加xml的category
4, schema元素和属性定义
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/01"
xmlns:tns="http://www.example.org/01"
elementFormDefault="qualified">
<!-- books 是 复杂类型 -->
<element name="books">
<complexType>
<!-- sequence 元素必须按照顺序出现-->
<!-- maxOccurs最大出现次数,这里用了不限制 -->
<sequence maxOccurs="unbounded">
<element name="book">
<complexType>
<sequence minOccurs="1" maxOccurs="unbounded">
<element name="title" type="string" />
<element name="content" type="string" />
<!-- choice多个选一个 -->
<!-- all 没有顺序,每个元素只能出现一次 -->
<choice>
<element name="author" type="string"/>
<element name="authors">
<complexType>
<sequence maxOccurs="3">
<element name="author" type="string" />
</sequence>
</complexType>
</element>
</choice>
</sequence>
<!-- 属性的定义,必须在sequence后面写 -->
<attribute name="id" type="int" use="required" />
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
xml例子
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns="http://www.example.org/01"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/01 01.xsd ">
<book>
<title>Java in action</title>
<content>my java book</content>
<author>author1</author>
</book>
<book>
<title>English book</title>
<content>my English book first</content>
<authors>
<author>awei</author>
<author>yangw</author>
</authors>
</book>
</books>
5, 定义schema文件的几种方式以及优缺点
1>Russian Doll(俄罗斯玩偶): 只有一个根元素,通过嵌套的方式完成编写
优点:结构清晰,根元素只有一个
缺点:元素无法重用.
例子: 上面的 “ 4, schema元素和属性定义”
2>Salami Slice(香肠切片,腊肠切片):
优点:能够进行最大化的重用
缺点:根元素不清晰
例子: 如下,
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/01"
xmlns:tns="http://www.example.org/01"
elementFormDefault="qualified">
<element name="book" type="tns:bookType" />
<element name="id" type="int" />
<element name="title" type="string" />
<element name="content" type="string" />
<complexType name="bookType">
<sequence>
<element ref="tns:id" />
<element ref="tns:title" />
<element ref="tns:content" />
</sequence>
</complexType>
</schema>
3> Venetian Blind(百叶窗) 通过simpleType完成重用
优点:一个根节点,结构清晰
缺点:
例子: 如下,
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/02"
xmlns:tns="http://www.example.org/02"
elementFormDefault="qualified">
<!-- 根元素person -->
<element name="person" type="tns:personType" />
<complexType name="personType">
<sequence>
<element name="name" type="string"/>
<element name="age" type="tns:ageType"/>
<element name="email" type="tns:emailType" />
</sequence>
<attribute name="sex" type="tns:sexType" />
</complexType>
<!-- simpleType 出现的目的就是 约束 -->
<simpleType name="ageType">
<restriction base="int">
<!-- age 在 [1,150) -->
<minInclusive value="1"/>
<maxExclusive value="150" />
</restriction>
</simpleType>
<simpleType name="sexType">
<restriction base="string">
<!-- 性别是 枚举类型 -->
<enumeration value="男" />
<enumeration value="女" />
</restriction>
</simpleType>
<simpleType name="emailType">
<restriction base="string">
<!-- 基于正则表达式的方式 -->
<pattern value="\w[\w\d\.]*@[\w\d\.]+\.[a-zA-Z]{2,6}"></pattern>
</restriction>
</simpleType>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<person xmlns="http://www.example.org/02"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/02 02.xsd "
sex="男">
<name>yangw</name>
<age>15</age>
<email>yangw@eastcom.com</email>
</person>
此外,在一个schema文件中使用另外一个schema文件中的内容
<include schemaLocation="xxx.xsd"></include> <!-- 在同一个名称空间下可以直接写文件名-->
webservice03#schema#元素属性定义的更多相关文章
- cursor CSS属性定义鼠标指针悬浮在元素上时的外观。
1 1 cursor CSS属性定义鼠标指针悬浮在元素上时的外观. https://developer.mozilla.org/zh-CN/docs/Web/CSS/cursor 概述 cursor ...
- XSD - <schema> 元素
<schema> 元素 <schema> 元素是每一个 XML Schema 的根元素: <?xml version="1.0"?> <x ...
- 了解HTML表单之input元素的30个元素属性
目录 传统属性 name type accept alt checked disabled readonly maxlength size src value 新增属性 autocomplete au ...
- css样式表和选择器的优先级以及position元素属性值的区别
css样式表优先级 问题:当同一个HTML元素被不止一个样式定义时,会使用哪个样式呢? 答:一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字4拥有最高的优先权. 1.浏览器缺省 ...
- JS操作DOM元素属性和方法
Dom元素基本操作方法API,先记录下,方便以后使用. W3C DOM和JavaScript很容易混淆不清.DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访 ...
- [ofbiz]screen中应用form和ftl,控制页面元素属性
可以在screen中定义form与ftl两个文件,ftl中可以使用js控制form中的页面元素属性. 控制元素是否可编辑: $("#oaDataReport_budget&qu ...
- CSS属性定义 文本修饰 边框效果 背景修饰
一.CSS属性定义1.css颜色表示方法[重点]rgb(红绿蓝3个颜色通道 强度值为0-255)rgb(0,0,0)rgba(alpha a是透明度 值为0-1)rgba(123,123,123,0) ...
- font-size-adjust属性定义及用法
font-size-adjust属性定义及用法 在css中,font-size-adjust属性是使用来更好的控制字体大小,当第一个选择的字体不可用时,浏览器使用第二个指定的字体,这可能会导致改变字体 ...
- HTML表单__表单元素属性
看完"HTML表单__表单元素"那一节的同学会发现,同是input标签,type属性值不一样的时候,input类型完全不一样.type就是input的一个属性,除type之外,还有 ...
随机推荐
- 【前端】向blog或网站中添加语法高亮显示代码方法总结
向blog或网站中添加语法高亮显示的代码方法总结 文章目录 预备知识 目标 第一类方法:嵌入 第二类方法:外部引用 第三类方法:忽略HTML和PHP 最近在写代码时遇到一个问题,就是如何让代码像在ID ...
- JSP 页面传值方法总结(转)
原文地址:http://www.cnblogs.com/java-class/p/6358964.html 阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 ...
- JavaScript封装一个实用的select控件
最近一直把精力放在项目上面,导致忽略的一些底层的东西.以前就一直觉得原有的select控件很丑,正好周末有时间,试着做了一个简单封装,实现了它的基本功能.我总结了一下,大概分为三个部分: 1.对显示样 ...
- 实战案例--TEMPDB暴涨
前言 tempdb暴增,造成磁盘空间不足,甚至影响业务运行. 正文 如图,tempdb log文件从7.40开始突然暴涨,因为 tempdb 0 M到 40G tempdb 所 ...
- Maven setting.xml 文件剖析
全局配置: ${M2_HOME}/conf/settings.xml (配置环境变量 新建 M2_HOME 安装目录到版本名那里(D:\apache-maven-3.0.2) 编辑path 环 ...
- 深入理解JVM(八)——java堆分析
上一节介绍了针对JVM的监控工具,包括JPS可以查看当前所有的java进程,jstack查看线程栈可以帮助你分析是否有死锁等情况,jmap可以导出java堆文件在MAT工具上进行分析等等.这些工具都非 ...
- angular之scope.$watch
某“大神”挖了个陨石坑,我于是乎似懂非懂的接手,玩了一个月angular.现在项目告一段落,暂别了繁重的重复性工作,可以开始回顾.认真的折腾下之前犹抱琵琶的angular. angular吸引人的特性 ...
- 用shell批量编码转换
-------------------------------------文件内容转换:iconv-------------------------------------- 通常,从其他平台拷贝过来 ...
- 文件系统的几种类型:ext3, s…
分类: 架构设计与优化 1. ext3 在异常断电或系统崩溃(不洁关机, unclean system shutdown ).每个已挂载ext2文件系统计算机必须使用e2fsck程序来检查其一致性 ...
- 第二次项目冲刺(Beta阶段)5.22
1.提供当天站立式会议照片一张 会议内容: ①检查前一天的任务情况,将遇到的困难反馈.解决. ②制定新一轮的任务计划. 2.每个人的工作 (1)工作安排 队员 今日进展 明日安排 王婧 #53(完成) ...