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之外,还有 ...
随机推荐
- PHP魔术方法
魔术方法:两个下划线开头的格式. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, ...
- java中Object转String
Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toStri ...
- hibernate 一对多 多对一 关系表 增删改查大礼包ps二级查也有
今天来到混元气功 这货大概的意思就是你中有我 我中有你 ps 这里就要说到维护关系 ps写这个用了我一下午.......也是刚刚好复习到这里 顺便就写写 注意:一般都在多方维护关系,至于是用单向还是用 ...
- 【Linux】windows-linux、linux-linux文件互传
一.Linux下文件互传,scp命令实例 1.Linux下目录复制:本机->远程服务器 scp -r /home/abc/test1(本机目录路径) root@192.168.0.1:/hom ...
- javascript常用函数实现的收集
收集了一些比较常用的javascript函数. 1.字符串长度截取 function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00- ...
- 匿名委托与Lambda表达式
通过使用匿名委托(匿名方法),使编程变得更加灵活,有关委托与匿名委托请参考我的前一篇Blog<委托与匿名委托>. 继续之前示例,代码如下: static void Main(string[ ...
- latex插图续
LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件. UNIX下的各种应用软件 ...
- dbUtils的基本使用
dbUtils是对JDBC的完全封装,只需要导入连接池,添加sql语句,dbUtils就可以返回各种封装形式的结果集. 如果纯手动的话,在DAO层使用JDBC查询一个语句的话,需要以下几步: 1创建C ...
- Java入门(4)——常见的String方法
考虑到API当中的解释,新手可能有点看不懂(我刚开始就是不太看得懂).最好的学习方法当然是是自己一个一个去试一遍,然后就可以加深印象. 然后, 这是我当初学习的时候用自己的大白话做的笔记.现在查阅的话 ...
- sort与qsort的用法,建议使用sort
做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错.STL里面有个sort函数,可以直接对数组排序,复 ...