Web Service概念
Web Service概念
一些功能的接口.
实现需要:
一种独立于平台的数据交换格式
一种描述数据结构的方法.
打包数据的标准方法.
Web 服务描述自身,它们能够进行的操作和客户所需的数据结构的一种方法
通过Web服务的功能或描述以编程方式定位Web服务的一个框架.
优点
数据以纯文本方式存储,可实现各种平台之间的数据通信.
分部式部署,易于更新,维护.
工作原理
请求-回应模式
Web服务标准
XML---独立于平台的数据交换格式
XML模式---描述数据结构的方法
SOAP---打包数据的标准方法
WSDL---服务描述
UDDI---定位Web服务
XML基本知识
XML是用结构化的方法存储数据的纯文本格式.数据的存储和传输不如专用的方法高效,但它有移植性和可读性的优势.
XML文文件的结构
XML文檔的序言
文檔序言一般以一个声明开始,指明这个文件是一个XML文件,然后是文檔遵守的的XML版本和字符编码方法, 一般语法为:
<?xml version=”1.0” encoding=”UTF-8”?>
<?和?>标记用于分隔处理指令.处理指令不是用来包含资料,而是用来向处理XML文件的应用程序传达指令.
序言也可以包含一个doctype的引用.语法:
<!DOCTYPE docTypeName SYSTEM “docTypeURL”>
XML文檔体
文文件体由元素和属性构成
元素
在XML中用以标记文本的基本构件.以一个开始标记和一个结束标记组成.如:
<Lu>Context</Lu>
空元素表示法
<Lu></Lu>
简写
<Lu/>
属性
元素可以有属性,属性一般用来传达包含在元素中的数据的一些信息.语法如下:
<Lu atrr=”value”></Lu>
元素和属性的命名
可以包含大写字母,小写字母,数字和下划线,也可以用”-“,”.”,但不能以数字或标点符号开头,不能以字符串XML(不分大小写)开头,而且不能有空白.
注:XML中大小写敏感.
实体
& --- &
<---<
>--->
'---‘
"---“
另外,也可以用字符对应的字符码来表示字符,例如:
&#n;---十进制
&#xn;---十六进制
如),).
CDATA区域
CDATA区域是可以使用特定字符的另一个地方
语法
<![CDATA[ Context ]]>
格式良好的XML文文件只有一个根元素,没有元素的重迭
XML模式
用于定义XML文本的结构和上下文,XML模式本身是用XML编写的.
模式规范由两个部分组成:
1. 结构---描述如何使用模式为XML提供它必须遵守的结构.
2. 数据类型---描述数据内容的约束.
XML模式通常存储在扩展名为.XSD的文件中.根元素总是<xsd:schema>,例如
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
…schema body…
</xsd:schema>
在XML模式中,用类型来定义元素和属性.有以下两种类型:
简单类型---用来定义不带属性或子元素的元素,或用来定义属性
复杂类型---用来定义带属性或子元素的元素
模式定义
元素定义
元素用<element>定义,它可包含下列属性:
name
|
被定义的元素名称
|
type
|
指定元素可以包含什么内容
|
default
|
元素的默认值.
|
fixed
|
指定元素为定值.
|
minOccurs
|
元素出现的最小次数
|
maxOccurs
|
元素出现的最大次数,设为”unbounded”,则元素出现次数不受限制
|
mixed
|
指示元素是否可以有元素,也有文本
|
nillable
|
元素是否可以为空
|
ref
|
对已经定义的元素的引用
|
属性用<attribute>定义,它可包含下列属性:
name
|
被定义的属性名称
|
type
|
指定属性可以包含什么内容
|
use
|
必须是optional,required,prohibited之一.
|
default
|
属性的默认值.
|
fixed
|
指定属性为定值.
|
ref
|
对已经定义的属性的引用
|
如果要用<element>来定义一个包含子元素或属性的元素,则其type属性的值应该是用<complexType>定义的类型, <complexType>有一个name属性,用以指定类型的名称.可包含下列子元素:
<all>
|
它包含的元素必须全部出现在被模式验证的XML中
|
<sequence>
|
它包含的元素必须全部出现在被模式验证的XML中,且按定义的顺序
|
<choice>
|
它包含的元素有且只有一个出现在被模式验证的XML中
|
注: <sequence>,<choice>可以包含这三个元素.
元素和属性定义出现在<complexType>中.用以定义类型
可用<group>元素定义一组元素, <group>有name和ref属性.可包含<all>,<sequence>,<choice>元素.
可用<attributeGroup>元素定义一组属性, <attributeGroup>有name和ref属性
<any>元素可以引用任何已定义的元素.
<anyAttribute>元素可以引用任何已定义的属性.
个人认为用处不多,呵呵!
模式类型的定义
类型可分为以下三类
原子类型---包含给定类型的一个单一的值.
列表类型---包含一个单一类型的多个值.
共享---包含一个单一的值,可能是原子类型或列表类型
派生新类型可能过下面几种方式:
限制派生---限制基类型中允许的值创建新的类型
列表派生---通过构成一个原子基类的列表来创建新的列表类型
共享派生---通过允许值来自两个或多个类型创建新的类型.
限制派生
语法
<xsd:simpleType name=”newTypeName”>
<xsd:restriction base=”baseTypeName”>
…face elements…
</xsd:restriction>
</xsd:simpType>
可用的限制条件如下表
约束
|
用途
|
<minExclusive>
|
派生类型的值必须大于该元素的value属性中指定的值.
|
<maxExclusive>
|
派生类型的值必须小于该元素的value属性中指定的值.
|
<minInclusive>
|
派生类型的值必须大于或等于该元素的value属性中指定的值.
|
<maxInclusive>
|
派生类型的值必须小于或等于该元素的value属性中指定的值.
|
<tatalDigits>
|
派生类型的值的数位必须小于或等于该元素的value属性中指定的值.
|
<fractionDigits>
|
派生类型的值小数的位数必须小于或等于该元素的value属性中指定的值.
|
<maxLength>
|
派生类型的值的字符数必须小于或等于该元素的value属性中指定的值.
|
<minLength>
|
派生类型的值的字符数必须大于或等于该元素的value属性中指定的值.
|
<length>
|
派生类型的值的字符数必须等于该元素的value属性中指定的值.
|
<enumeration>
|
派生类型的值必须等于该元素的value属性中指定的值.或同一个<simpleType>元素中其它<enumeration>元素的value属性中指定的值
|
<whiteSpace>
|
值可以是preserve,replace,collapse中的一个,如果取preserve,则验证期间保留空白,replace,则制表符,回车,换行符被空格代替,collapse,则前后空格被删除,连续的空格被一个空格代替.
|
<pattern>
|
Value属性值包含一个正则表达式应用于这个类型的值进行验证.
|
列表派生
语法
<xsd:simpleType name=”newTypeName”>
<xsd:list itemType=”baseTypeName”/>
</xsd:simpleType>
共享派生
语法
<xsd:simpleType name=”newTypeName”>
<xsd:union memberTypes=”baseTypeName1 baseTypeName2”/>
</xsd:simpleType>
lad.li