WebService、DTD、Schema、XML之间的关系
2012-12-29 10:56
435 查看
学习了好长一段时间的webservice,然而一直觉得不能停留在概念上去了解,直接用过.net、j2ee平台写WebService,调用端、开发端、浏览器端都相应的做过一些;今天终于都比较闲暇了,所以腾出些时间来总结下这些内容,把已有的知识巩固下:
关于webservice:随着异构系统的互联需求的不断增加,web service的重要性也日益彰显出来,凭借webService,我们可以实现不同程序语言的互联互通,更可以将开发好的程序以服务的形式发布出去供使用者调用。webService(面向服务的体系结构)也是SOA的基石。
Webservice开发中主要的其实就两种模式代码优先(Code First)与契约优先(Contract First)的开发模式,而我前面博文博文中也提到过webservice开发的一般过程使用TCPMon截取webservice服务端与客户端之间传递的SOAP消息,使用Apache JMeter对Web Service进行负载与压力测试。所以这里不再累赘···
关于DTD(文档类型定义-Document Type Definition):它用于描述XML文档的结构,一个DTD文档包含:
1.元素(ELEMENT)的定义规则
2.元素之间的关系规则
3.属性(ATTLIST)的定义规则
4.可使用的实体(ENITY)或符号(NOTATION)规则
5.DTD文档与XML文档实例的关系:
a) 类与对象
b) 数据库表结构与数据记录
6.有了DTD,每个xml文件可以携带一个自身格式的描述。
7.有了DTD,不同组织的人可以使用一个通用的DTD用来交换数据
8.应用程序可以使用一个标准的DTD校验从外部世界接受的XML数据是否有效
9.可以使用DTD校验自己的XML数据
10.DTD文档的声明及引用
内部DTD文档<!DOCTYPE 根元素[定义内容]>
外部DTD文档<!DOCTYPE 根元素 SYSTEM “DTD文件路径”>
内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM “DTD文件路径”[定义内容]>
内部DTD例子:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE poem [
<!ELEMENT poem (author, title, content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空山不见人,但闻人语声.
返景入深林,复照青苔上.
</content>
</poem>
备注:例中的定义关键字一定要大写,如DOCTYPE、ELEMENT、#PCDATA,且元素名称与数据类型之间也要有空格。
外部dtd例子
定义
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT poem (author*,title,content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
对应使用的xml
<?xml version='1.0' encoding='gb2312'?>
<!DOCTYPE poem SYSTEM "outer.dtd">
<poem>
<title>aaaa</title>
<content>bbb</content>
</poem>
混合方式:
<?xml version='1.0' encoding='gb2312' ?>
<!DOCTYPE poem SYSTEM "mixed.dtd"[
<!ELEMENT poem (author,title,content)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空山不见人,但闻人语声.返景入深林,复照青苔上.</content>
</poem>
Mix.dtd:
<?xml version='1.0' encoding='gb2312'?>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
分析完整的DTD文档,写XML实例:
<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>
<?xml version="1.0" encoding="GB2312"?>
<学生名册>
<学生 学号=“t1">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>20</年龄>
</学生>
<学生 学号=“t2">
<姓名>李四</姓名>
<性别>女</性别>
<年龄>19</年龄>
</学生>
<学生 学号=“t3">
<姓名>王二</姓名>
<性别>男</性别>
<年龄>21</年龄>
</学生>
</学生名册>
DTD总结:
一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的。
DTD包含一套用来描述并限制XML文档结构的语法规则。
元素的定义规则
元素之间的关系规则
属性的定义规则
可使用的实体或符号规则
命名空间用于避免命名冲突。
在XML中,使用全球唯一的URL作为Namespaces。
关于schema:
为何要Schema?
DTD 的局限性
DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)
DTD数据类型有限(与数据库数据类型不一致)
DTD不可扩展
DTD不支持命名空间(命名冲突)
Schema的新特性
Schema基于XML语法
Schema可以用能处理XML文档的工具处理
Schema大大扩充了数据类型,可以自定义数据类型
Schema支持元素的继承—Object-Oriented’
Schema支持属性组
simpleType元素
作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息
属性:name
内容:应用已经存在的简单类型,三种方式:
restrict→限定一个范围
list→从列表中选择
union→包含一个值的结合
complexType元素
作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息
属性:name
complexType与simpleType区别(重要)
simpleType类型的元素中不能包含元素或者属性。
当需要声明一个元素的子元素和/或属性时,用complexType;
当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。
DTD、Schema、xml简单总结
Ddt验证schema、schema验证xml
webService在j2ee平台的实现的个人理解:
webService依赖于消息机制
消息符合wsdl规范、wsdl是一个schema(实行上面的验证规则:Ddt验证schema、schema验证xml)
根据消息生成object调用(object机制就是反射原理、jvm启动开始的那个类对象-》就可以调用,所谓的运行时调用)---框架可以帮助你去实现xfire、cxf等
关于webservice:随着异构系统的互联需求的不断增加,web service的重要性也日益彰显出来,凭借webService,我们可以实现不同程序语言的互联互通,更可以将开发好的程序以服务的形式发布出去供使用者调用。webService(面向服务的体系结构)也是SOA的基石。
Webservice开发中主要的其实就两种模式代码优先(Code First)与契约优先(Contract First)的开发模式,而我前面博文博文中也提到过webservice开发的一般过程使用TCPMon截取webservice服务端与客户端之间传递的SOAP消息,使用Apache JMeter对Web Service进行负载与压力测试。所以这里不再累赘···
关于DTD(文档类型定义-Document Type Definition):它用于描述XML文档的结构,一个DTD文档包含:
1.元素(ELEMENT)的定义规则
2.元素之间的关系规则
3.属性(ATTLIST)的定义规则
4.可使用的实体(ENITY)或符号(NOTATION)规则
5.DTD文档与XML文档实例的关系:
a) 类与对象
b) 数据库表结构与数据记录
6.有了DTD,每个xml文件可以携带一个自身格式的描述。
7.有了DTD,不同组织的人可以使用一个通用的DTD用来交换数据
8.应用程序可以使用一个标准的DTD校验从外部世界接受的XML数据是否有效
9.可以使用DTD校验自己的XML数据
10.DTD文档的声明及引用
内部DTD文档<!DOCTYPE 根元素[定义内容]>
外部DTD文档<!DOCTYPE 根元素 SYSTEM “DTD文件路径”>
内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM “DTD文件路径”[定义内容]>
内部DTD例子:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE poem [
<!ELEMENT poem (author, title, content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空山不见人,但闻人语声.
返景入深林,复照青苔上.
</content>
</poem>
备注:例中的定义关键字一定要大写,如DOCTYPE、ELEMENT、#PCDATA,且元素名称与数据类型之间也要有空格。
外部dtd例子
定义
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT poem (author*,title,content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
对应使用的xml
<?xml version='1.0' encoding='gb2312'?>
<!DOCTYPE poem SYSTEM "outer.dtd">
<poem>
<title>aaaa</title>
<content>bbb</content>
</poem>
混合方式:
<?xml version='1.0' encoding='gb2312' ?>
<!DOCTYPE poem SYSTEM "mixed.dtd"[
<!ELEMENT poem (author,title,content)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
<author>王维</author>
<title>鹿柴</title>
<content>空山不见人,但闻人语声.返景入深林,复照青苔上.</content>
</poem>
Mix.dtd:
<?xml version='1.0' encoding='gb2312'?>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
分析完整的DTD文档,写XML实例:
<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>
<?xml version="1.0" encoding="GB2312"?>
<学生名册>
<学生 学号=“t1">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>20</年龄>
</学生>
<学生 学号=“t2">
<姓名>李四</姓名>
<性别>女</性别>
<年龄>19</年龄>
</学生>
<学生 学号=“t3">
<姓名>王二</姓名>
<性别>男</性别>
<年龄>21</年龄>
</学生>
</学生名册>
DTD总结:
一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的。
DTD包含一套用来描述并限制XML文档结构的语法规则。
元素的定义规则
元素之间的关系规则
属性的定义规则
可使用的实体或符号规则
命名空间用于避免命名冲突。
在XML中,使用全球唯一的URL作为Namespaces。
关于schema:
为何要Schema?
DTD 的局限性
DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)
DTD数据类型有限(与数据库数据类型不一致)
DTD不可扩展
DTD不支持命名空间(命名冲突)
Schema的新特性
Schema基于XML语法
Schema可以用能处理XML文档的工具处理
Schema大大扩充了数据类型,可以自定义数据类型
Schema支持元素的继承—Object-Oriented’
Schema支持属性组
simpleType元素
作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息
属性:name
内容:应用已经存在的简单类型,三种方式:
restrict→限定一个范围
list→从列表中选择
union→包含一个值的结合
complexType元素
作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息
属性:name
complexType与simpleType区别(重要)
simpleType类型的元素中不能包含元素或者属性。
当需要声明一个元素的子元素和/或属性时,用complexType;
当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。
DTD、Schema、xml简单总结
Ddt验证schema、schema验证xml
webService在j2ee平台的实现的个人理解:
webService依赖于消息机制
消息符合wsdl规范、wsdl是一个schema(实行上面的验证规则:Ddt验证schema、schema验证xml)
根据消息生成object调用(object机制就是反射原理、jvm启动开始的那个类对象-》就可以调用,所谓的运行时调用)---框架可以帮助你去实现xfire、cxf等
相关文章推荐
- schema、dtd、xml之间的关系
- DTD详解2 及DTD和XML之间的关系
- webservice初次相识之XML限制文件DTD和Schema
- 简略整理一下RPC、WebService、Restful、Json、Xml这些概念之间的关系
- xml约束之dtd约束和schema约束---3
- XML,schema,dtd文件结构
- spring 与 CXF 整合 webservice 出现error “Unable to locate Spring NamespaceHandler for XML schema namespace” 总结
- WebService(2)-XML系列之DTD
- xml基本写法和dtd schema的用法,JAVA读写XML
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- JavaWeb学习笔记之xml&DTD&schema
- xml学习笔记——dtd和schema
- struts.xml文件定义Action处理结果与视图资源之间的映射关系
- xml基础、DTD验证、Schema验证(备忘)
- XML的DTD约束和Schema约束
- XML的约两种约束——DTD、Schema
- SqlServer2005 loginuser user Database schema table role 之间的关系
- xml编写中的DTD约束与schema约束中的语法
- XML模式规范dtd,schema总结
- XML:DTD:Schema