Web Services学习路线图之XML学习篇-SOA-Java

来源:百度文库 编辑:神马文学网 时间:2024/04/19 18:12:40
在上篇文章Web Services学习路线图中,主要揭示了学习web services的基本路线,下面的系列将主要上面的内容的具体技术做些具体的介绍。
本篇文章主要介绍XML、XML namespace和XML Schema,这些都是web services的基础内容,只有熟悉掌握了这三个技术,那么将扫清学习SWDL、SOAP的障碍。WSDL对于定义web services的接口规范很很重要的一个方面,而SOAP则是web services的通信基础。并且这个对于接口的对接也是很有意思的,一般情况下,如果在soap接口的对接联调过程中,很容易出现问题的地方就是接口的不一致、对象的编码等一些地方,对于这种情况,一般采取的策略就是抓取请求和响应的XML,分析出错的原因。
Namespace主要是解决XML中元素的冲突问题,这种情况一般是出现在合并XML的时候,例如有下面两个XML都有相同的元素 image,都是却有不同的含义,当你将这两个文档合并的时候会出现元素的冲突。这时候如果将这两个元素添加到不同的命名空间,那么冲突将不会发生,这个原理很像java中的package。请看下面这个XML文档:
peopel1.xml
                         XuePing Yang               
                   BeiJing                   CHINA               
         
上面XML文档的第二行指定了这个xml默认的namespace是“http://www.nwnu.edu.cn/people/”,文档中定义的所有元素都限定在这个命名空间中。不过不是文档中的所有元素都要限定在同一个命名空间中,可以分别给元素指定命名空间的,这个在WSDL的运用很多,在我讲解WSDL的时候会看到。当我们的XML拥有多个命名空间的时候我们可能会面对将不同的元素指定到不同的命名空间的问题,这这种情况下,我们需要一个前缀来指定元素所属的命名空间,请看下面的例子:
people2.xml
                      XuePing Yang             
                 BeiJing                 CHINA             
        
上面的例子中的命名空间的前缀就是 tns,这样其下的元素就可以用这个前缀来修饰啦。
现在我们基本上已经对XML namespace 有了一个大概的了解,它的主要作用就是防止元素的冲突的问题。有了上面的基础,我们学习XML Schema就很方便啦。XML Schema 的出现主要是解决XML DTD的缺点的,它的作用和DTD是一样的,都是用来验证XML是不是满足一个特定的格式。但是XML Schema拥有更多的内容,并且它本身就是XML的,阅读起来更方便。先看一个比较简单的例子:
sample.xsd
                                       This people XML schema Definition                                                                                                                                                        
一边XML Schema文档的后缀都是xsd。上面的例子中默认的命名空间为“http://www.w3.org/2001/XMLSchema”,目标命名空间为“http://www.nwnu.edu.cn/people/”,首先的 annotation 元素的是一个注释,说明这个文档的用途,接下来申明一个元素,名称为 people,它的类型为 peopleType,是一个复杂的类型,后面的 complexType 元素就给出了这个定义。相信对于程序员来说,上面的代码可阅读性很强,很快就能掌握XML schema的核心,下面给出完整的最开始那个people1.xml 和people2.xml的XML Schema:
people.xsd
                     This people XML schema Definition                                                                                                                                                                                                                                                                                                                                                       
现在我们的XML Schema已经编写完毕,如何将其应用到XML呢?其实很简单,只需要在XML中申明即可。下面是完整的xml代码:people.xml
          XuePing Yang       
           BeiJing           CHINA       
  
这时的people.xml和people.xsd就应该在同一个目录。
至此,我们已经掌握了xml namespace 和 XML Schema的基本内容,要更深入的学习,可以参考W3C的规范文档,但是我推荐大家利用Eclipse WTP这个工具来学习这些内容,Eclipse3.2对XSD的支持是很完备的,只要有一点点基础知识,完全可以通过Eclipse来学习。想给出一点在Eclipse上面的抓图,好像不能直接在文章中插入,只好以附件发出!