您的位置:首页 > 其它

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等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: