SOAP:简单对象访问协议
5.2 简单类型
SOAP采用了"XML Schema Part 2: Datatypes"规范[11]"Built-in datatypes"节中的所
有类型作为简单类型,包括值和取值范围。例如:
类型 举例
int 58502
float 314159265358979E+1
negativeInteger -32768
string Louis "Satchmo" Armstrong
在XML Schema规范中声明的数据类型可以直接用在元素schema中,也可以使用从这些类
型衍生的新类型。一个schema和对应的具有这些类型的元素的数据实例的例子如下所示
:
<element name="age" type="int"/>
<element name="height" type="float"/>
<element name="displacement" type="negativeInteger"/>
<element name="color">
<simpleType base="xsd:string">
<enumeration value="Green"/>
<enumeration value="Blue"/>
</simpleType>
</element>
<age>45</age>
<height>5.9</height>
<displacement>-450</displacement>
<color>Blue</color>
所有简单值必须编码为元素的内容,它的类型或者在"XML Schema Part 2: Datatypes"
规范[11]中定义过,或者是基于一个用XML Schema规范提供的机制能推衍生出的类型。
如果一个简单值编码为独立元素或异质数组成员,那么有一个对应于数据类型的元素声
明将会很方便。因为"XML Schema Part 2: Datatypes"规范[11]包括了类型定义,但是
不包括对应的元素声明,SOAP-ENC schema和名域为每个简单数据类型声明了一个元素,
如
<SOAP-ENC:int id="int1">45</SOAP-ENC:int>
5.2.1 字符串
字符串数据类型的定义在"XML Schema Part 2: Datatypes"规范[11]中。注意,这不同
于许多数据库和程序语言中的"string"类型,特别的,字符串数据类型可能禁止某些在
那些语言中允许的字符。(这些值必须用xsd:string之外的数据类型表示)
一个字符串可能编码为一个single-reference 或 multi-reference值。
包含字符串值的元素可能有一个"id"属性。附加的accessor元素可能有对应的"href"属
性。
例如,同一字符串的两个accessor可能以如下形式出现:
<greeting id="String-0">Hello</greeting>
<salutation href="#String-0"/>
但是,如果两个accessor参考同一字符串实例(或字符串的子类型),这不是一个实质
问题,它们可以编码为两个single-reference值,如下所示:
<greeting>Hello</greeting>
<salutation>Hello</salutation>
这个例子的schema片断如下所示:
<element name="greeting" type="SOAP-ENC:string"/>
<element name="salutation" type="SOAP-ENC:string"/>
在这个例子中,SOAP-ENC:string类型用作元素的类型,这是声明数据类型是"xsd:stri
ng"且允许"id" 和"href"属性的元素的简便方法。精确定义参见SOAP编码schema。Sche
mas可以使用这些源自SOAP编码schema的声明,但也可以不这样做。
5.2.2 Enumerations
"XML Schema Part 2: Datatypes"规范 [11] 定义了"enumeration."机制。SOAP数据模
型直接采用了这种机制。但是,由于程序语言和其它语言在定义枚举时通常有些不同,
所以我们在这里详细阐述了它的概念并描述了一个列表成员的可能取的值是如何编码的
。
"Enumeration"作为一个概念表示不同的名字的集合。一个特定的枚举就是对应于特定的
基类型的不同的值的列表。例如,颜色集合("Green", "Blue", "Brown")可以定义为基
于字符串类型的枚举,("1", "3", "5")可能是一个基于整型数的枚举,等等。"XML Sc
hema Part 2: Datatypes" [11]支持除了布尔型以外所有简单类型的枚举。"XML Schem
a Part 1: Structures"规范[10]的语言可以用来定义枚举类型。如果schema由另一个没
有特定基类型适用的符号系统生成,就使用"string"。在下面schema的例子中,"EyeCo
lor"定义为字符串,可能的值是"Green", "Blue", 或"Brown"的枚举,数据实例按照sc
hema显示如下。
<element name="EyeColor" type="tns:EyeColor"/>
<simpleType name="EyeColor" base="xsd:string">
<enumeration value="Green"/>
<enumeration value="Blue"/>
<enumeration value="Brown"/>
</simpleType>
<Person>
<Name>Henry Ford</Name>
<Age>32</Age>
<EyeColor>Brown</EyeColor>
</Person>
from:asp学习网/title:SOAP:简单对象访问协议/ time:2007-6-18 10:41:59
本文主题SOAP