webService(一):WSDL
1、准备知识
- XML命名空间
XML命名空间为防止xml元素命名冲突提供了解决方案。
- 命名冲突
对于一个XML文件,它的元素名称是由开发者定义的。当合并不同应用的XML文档时经常会导致命名冲突。
下面的XML代码一段HTML表格信息:
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
下面的XML表示一张桌子的信息:
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
如果把这两段XML合并起来,就会发生命名冲突。都含有一个<table>元素,但是格子的内容和含义不同。
XML解析器不知道如何处理这些差异。
- 使用前缀解决命名冲突
使用名称前缀可以很容易的避免命名冲突。
下面的XML表示一个HTML表格和一个家具的信息:
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
上面的例子中不存在冲突,因为两个<table>元素有不同的名字。
- XML命名空间-xmlns属性
在XML中使用前缀时时,必需定义命名空间。
通过在元素的开头放置xmlns属性来定义命名空间。
定义命名空间的语法:xmlns:prefix="URI"。
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
上面的例子中,<table>标签中的xmlns属性赋予前缀h:和f:一个命名空间。
当一个元素定义了命名空间之后,所有具有相同前缀的子元素都和相同的命名空间关联。
命名空间可以在XML根元素处定义。
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
Note: 解析器在查找信息的时候不会使用命名空间的URI。作用只是给命名空间一个独特的名字。
- 默认命名空间
为元素定义一个默认的命名空间,可以应用到所有的子元素上。语法如下:
下面的XML表示一个HMTL表格信息:
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
下面的XML表示家具信息:
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
- 命名空间的实际应用
XSLT是一种XML语言,它可以把XML文档翻译成其他的格式,比如HTML。
在下面的XSLT标签中,你会发现大部分标签都是HTML标签。
不是HMTL的标签都有xsl前缀,通过命名空间xmlns:xsl="http://www.w3.org/1999/XSL/Transform"标识:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
2、WSDL
WSDL是一个基于XML的语言,它用来描述Web Service以及如何访问这些Web Service。
WSDL的作用
- WSDL 全称是Web Services Description Language
- WSDL 是用XML写的
- WSDL 是一个XML文档
- WSDL 用来描述Web Service
- WSDL 也用来定位Web Servcie
- WSDL 是W3C 推荐使用
WSDL文档结构
WSDL文档使用下面几个主要的元素来描述Web Service:
Element | Description |
---|---|
<types> | A container for data type definitions used by the web service |
<message> | A typed definition of the data being communicated |
<portType> | A set of operations supported by one or more endpoints |
<binding> | A protocol and data format specification for a particular port type |
WSDL文档的主要结构:
<types>
data type definitions........
</types>
<message>
definition of the data being communicated....
</message>
<portType>
set of operations......
</portType>
<binding>
protocol and data format specification....
</binding>
</definitions>
WSDL文档可以包含其他元素,比如扩展元素、以及服务元素(集合几个Web Service定义在一个WSDL文档中)。
WSDL Ports
<protType>是WSDL中最重要的元素。它可以比喻成传统编程语言中的一个函数库(或者一个模块,一个类)。<protType>元素用来一个一个Web Service、可以执行的操作,以及包含的message.
WSDL Messages
<message>元素定义了一个操作的数据。每个message可以包含一个或者多个parts。parts可以比如成传统编程语言中的函数形参。
WSDL Types
<types>元素定义了Web Service使用的数据类型。为了最大的平台无关性,WSDL使用XML Schema语法定义数据类型。
WSDL Bindings
<binding>元素为每个port type定义了message格式和协议。
一个请求-响应操作:
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation soapAction="http://example.com/getTerm"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
binding 有两个属性 - name和type。
name属性(可以任意起名)定义binding的名字,type属性指定绑定的端口(端口的概念在这里就是一个web service)。
soap:binding 有两个属性 - style和transport。
style属性可以是”rpc"或者“document”;transport属性定义了使用的SOAP协议,例子中我们使用HTTP。
operation 元素定义了protType暴露的每个操作。SOAP action定义的每个操作,必需指定如何加密input和output。例子中我们使用“literal”。
WSDL Example
下面是一个简单的WSDL文档片段:
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
上例中, <portType>元素定义了"glossaryTeams"作为一个port的名字,并且定义了"getTerm"作为一个operation的名字。"getTerm" operation包含一个叫”getTermRequest"的input message和一个叫“getTermResponse"的output message。
<message>元素定义定义了每个消息的parts,以及关联的数据类型。
和传统编程相比,glossaryTerms是一个函数库,”getTerm"是一个函数(getTermRequest作为输入参数,getTermResponse作为输出参数)。
webService(一):WSDL相关推荐
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- [Java] webservice soap,wsdl 例子
java 调用webservice的各种方法总结 现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!! 由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和 ...
- CXF发布服务,WebService缺少wsdl:types/wsdl:message/标签
发布CXF时遇到一个问题,发布的服务,wsdl文件中没有<wsdl:types/><wsdl:message/>标签,wsdl文件如下: <?xml version=&q ...
- php的webservice的wsdl的XML无法显示
php的webservice的因为wsdl有中文所以xml无法显示 可以用Nopepad++ 转码即可 以UTF-8无BOM编码
- webservice、WSDL简介
Webservice是跨平台.跨语言的远程调用技术 通信机制的本质是xml数据交换 采用soap协议进行通信 而WSDL 指网络服务描述语言 (Web Services Description Lan ...
- 彻底理解webservice SOAP WSDL
WebServices简介 先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构, 既然说是一种架构的话,所以一般认为 SOA 是包含 ...
- 学习 WebService 第五步:在Local创建测试用WebService(WSDL)
[准备] Eclipse+Tomcat7(Tomcat端口修改为不冲突的值) axis2 1.7.7 jar包(没有来这里下载:http://www.apache.org/dyn/closer.lua ...
- 提供一些网上webservice的WSDL地址
腾讯QQ在线状态WEB服务 Endpoint:http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx Disco:http://www ...
- webService接口wsdl以byte[]方式上传附件
服务端声明 @WebService(serviceName = "CreateKnwlFileService") public class CreateKnwlFile {/* 接 ...
- 【WebService】wsdl配置详解以及使用注解修改wsdl配置
本文转自: https://blog.csdn.net/eson_15/article/details/52051801 (倪升武的博客) 对大佬的膜拜! 前面分析了一下关于ws的基本知识,我们知 ...
最新文章
- Linux命令(基础)
- linux cat 合并文本 中间添加分隔符
- Python “with” keyword
- 《数据分析变革:大数据时代精准决策之道》一第1章 了解运营型分析
- 用vim 配置javascript
- html5语法参考图片,仿AS语法来写HTML5—第1章,显示一张图片
- SVG.use/拖拽
- C++中两个常用的控制语句格式的函数(width和precision函数)
- 存储过程可重用的代码块_利用软件重用经验进行自动化测试推荐
- 深入PHP使用技巧之变量
- jupyter notebook matplotlib绘制动态图并显示在notebook中
- 基于python的猜大小游戏
- 详解Java设计模式之观察者模式(Observer Pattern)
- 华为服务器磁盘IO性能查看,磁盘io性能
- c语言怎么做查询系统,c语言编辑查询系统,可实现增删改查
- 小丁是怎样入门git的
- 编译原理笔记(二)之词法分析
- 关于Mysql使用时出现部分错误的总结
- 正文 风控系统是什么?-- 搭建风控系统的方法推荐
- 树莓派 摄像头安装配置