• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

过看看数据的分类将对这个问题有一个最好的解释。
(3) 数据分类
S O A P吸取了最近的W 3 C工作草案—X M L模式的第二部分—来帮助传送更多的将要处理
的数据消息。像你在第7章里所看到的,该草案提供了大量“内建”的数据类型和一个可以附加
新类型的设计。S O A P使用这个特点加入了一些新的数据类型如变量和数组,很快我们将会提到。
使用S O A P以及在工作草案中定义的数据类型,结构的最后设计可能会是以下形式:
程序清单11 - 7 3
这可能很像远程过程调用要转换的X M L,但是它比起X M L - R P C的冗长要优良得多。
但结构也伴随一个问题,即可能没有关于一个对象的名字或者参数的任何信息,或者名字
可能毫不相干。S O A P允许我们使用另外的缩写,或联想X M L - R P C技术:
程序清单11 - 7 4
468使用XML 高级编程
下载
决定何时使用这个技术和何时使用类型属性是非常直接的。绝大多数时间里你能用你喜欢
的一个;对于S O A P规范,简单地说,只要某元素的名字不足以唯一指明数据类型,那么就使用
类型属性,下面是浮点型的例子:
程序清单11 - 7 5
而这是一个简单的字符串:
程序清单11 - 7 6
尽管这两个技术—对数据类型设置元素名字或者使用x s d:t y p e属性——可达到同样的目
的,但使用x s d:t y p e属性的优点在于我们能够从解析器中得到正确的数据类型。例如,如果我
们要求解析器来读< P u r c h a s e O r d e r>元素中的内容,那么将得到一个时间和日期值,而不是一
个简单的字符串,当然这需要X M L解析器建立所需元素的类型版本,像第7章讨论的那样。
(4) XML模式第二部分的扩展
有效的元素值—例如字符串和整型—与在X M L模式第二部分工作草案中所列出的那些
相同: S O A P又加入了另一个—变量—来指明可能包含了许多数据类型的元素。尽管
M i c r o s o f t的Visual Basic广泛使用了变量—并且VBScript 除了变量不用其他数据型式—但
S O A P的变量仅对这样一些数组有用,即这些数组可能包含了混合的值的类型。下面这个例子中
有一个两维数组,其中元素0包含了一个整数,而元素1包含一个字符串:
程序清单11 - 7 7
S O A P也将该草案加以扩展,即加入了数组,事实上,它提供了用于编码数组的两种方法,
第一种方法需要将这些数组内容的信息编码成元素的名字,例如:
程序清单11 - 7 8
第11章服服务器到服务器使用469 下载
该例摘自于S O A P规范,但是在X M L模式第二部分的工作草案中没有称为i n t的数据类型,
S O A P数据类型均来自于该草案。这就意味着i n t类型将来自于自定义类型。S O A P标准并
没有明确说明这些自定义类型消息如何被传送,明白地讲, S O A P消息包并没有一个模式。
也就是说,每一个消息包里,该模式应该被动态创建,因为数据类型可能是复杂的对象。
该元素的名字被设置为A r r a y O f,后面是数组里每一个元素的基本类型。该元素也有它的类
型属性设置来指明该数组的大小,在该例中, u : i n t [ 4 ]意味着这是一个包含四个整型的数组。
第二种方法是使用一个已命名的元素指明一个数组:
程序清单11 - 7 9
这里,数组的每一个元素是一个作者。注意你选择哪种技术并不取决于数组的内容。下面
是一个合法的例子:
程序清单11 - 8 0
这里使用了A r r a y O f处理a u t h o r s,而不是整型( i n t e g e r s)。使用哪一种方法取决于你使用何
种形式将数组放在另外的消息的上下文之中,而这些消息都是正在传送的。因为这也关系另外
的消息类型。
在结束对数组讨论之前,我将举两个的例子,从中你能感受到S O A P超出X M L-R P C的灵活性。
下面是一个两维字符串数组:
程序清单11 - 8 1
尽管数组里的所有元素相继排列,但它们应被解释成2行,每行包括3列。一个这样的两维
数组与一个由数组组成的数组是不同的,后者可能为如下形式:
470使用XML 高级编程
下载
程序清单11 - 8 2
注意因为这两个数组是分离的,故而大小不同也是合理的。
数组元素也能指出它们在数组中被安排的位置,在这个例子里,我们能向一个序列里插入
一个数组元素:
程序清单11 - 8 3
指定位置的能力能够允许一个数组的某个部分被传送,在这个例子里有另一个元素没有发
送:
程序清单11 - 8 4
如果要指定一个连续的元素设置,这些元素开始于数组里的某一个位置,但是又不想指定
初始元素,那么可以指定一个偏移量,并从这里开始装载这些元素:
程序清单11 - 8 5
如果觉得这里有些不对,那么请不要忘记数组元素是从零开始计数的,偏移量也是如此。
(5) 其他的改进
S O A P已经解决了数据类型的问题,它已经加入了更好的数组处理,并且现在允许X M L作为
X M L被传送,而不是被处理成冗长的结构。还有另外的什么吗?
好了,另一个加入到S O A P中的灵巧的特点是它允许一个值被许多地方所引用,传送下面这
第11章服服务器到服务器使用471 下载
个数据结构本质上并没有错误:
程序清单11 - 8 6
你将发现如果有几百个作家碰巧都住在B i r m i n g h a m,那将是一个多么庞大的消息。S O A P允
许一些被多次涉及的元素以如下形式出现:
程序清单11 - 8 7
如果数据只能被一次引用则被称作单一引用( s i n g l e-r e f e r e n c e),该情况下,任何数据没有
一个i d属性。多引用(m u l t i-r e f e r e n c e)技术是很有用的,例如,前面所出现的一些由数组组成
的数组可有如下表达方式:
程序清单11 - 8 8
472使用XML 高级编程
下载
注意这种多引用数组必须使用A r r a y O f语法,它们也必须在顶层。在S O A P标准里顶层元素
被称作独立元素;而包含于其他元素的元素被称作嵌入元素。像使用X M L-R P C一样,S O A P有
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(146)