?? soap規(guī)范(2).txt
字號:
<age>45</age>
<height>5.9</height>
<displacement>-450</displacement>
<color>Blue</color>
所有簡單值必須編碼為元素的內(nèi)容,它的類型或者在"XML Schema Part 2: Datatypes"規(guī)范[11]中定義過,或者是基于一個用XML Schema規(guī)范提供的機制能推衍生出的類型。
如果一個簡單值編碼為獨立元素或異質數(shù)組成員,那么有一個對應于數(shù)據(jù)類型的元素聲明將會很方便。因為"XML Schema Part 2: Datatypes"規(guī)范[11]包括了類型定義,但是不包括對應的元素聲明,SOAP-ENC schema和名域為每個簡單數(shù)據(jù)類型聲明了一個元素,如
<SOAP-ENC:int id="int1">45</SOAP-ENC:int>
5.2.1 字符串
字符串數(shù)據(jù)類型的定義在"XML Schema Part 2: Datatypes"規(guī)范[11]中。注意,這不同于許多數(shù)據(jù)庫和程序語言中的"string"類型,特別的,字符串數(shù)據(jù)類型可能禁止某些在那些語言中允許的字符。(這些值必須用xsd:string之外的數(shù)據(jù)類型表示)
一個字符串可能編碼為一個single-reference 或 multi-reference值。
包含字符串值的元素可能有一個"id"屬性。附加的accessor元素可能有對應的"href"屬性。
例如,同一字符串的兩個accessor可能以如下形式出現(xiàn):
<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類型用作元素的類型,這是聲明數(shù)據(jù)類型是"xsd:string"且允許"id" 和"href"屬性的元素的簡便方法。精確定義參見SOAP編碼schema。Schemas可以使用這些源自SOAP編碼schema的聲明,但也可以不這樣做。
5.2.2 Enumerations
"XML Schema Part 2: Datatypes"規(guī)范 [11] 定義了"enumeration."機制。SOAP數(shù)據(jù)模型直接采用了這種機制。但是,由于程序語言和其它語言在定義枚舉時通常有些不同,所以我們在這里詳細闡述了它的概念并描述了一個列表成員的可能取的值是如何編碼的。
"Enumeration"作為一個概念表示不同的名字的集合。一個特定的枚舉就是對應于特定的基類型的不同的值的列表。例如,顏色集合("Green", "Blue", "Brown")可以定義為基于字符串類型的枚舉,("1", "3", "5")可能是一個基于整型數(shù)的枚舉,等等。"XML Schema Part 2: Datatypes" [11]支持除了布爾型以外所有簡單類型的枚舉。"XML Schema Part 1: Structures"規(guī)范[10]的語言可以用來定義枚舉類型。如果schema由另一個沒有特定基類型適用的符號系統(tǒng)生成,就使用"string"。在下面schema的例子中,"EyeColor"定義為字符串,可能的值是"Green", "Blue", 或"Brown"的枚舉,數(shù)據(jù)實例按照schema顯示如下。
<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>
5.2.3 字符數(shù)組
一個字符數(shù)組可能編碼為single-reference 或multi-reference值。字符數(shù)組的編碼規(guī)則與字符串的編碼規(guī)則類似。
特別的,包含字符數(shù)組的元素值可能由一個"id"屬性,附加的accssor元素可能有相應的"href"屬性。
推薦使用定義在XML Schemas [10][11]中的'base64'編碼(使用在2045 [13]中定義的base64編碼算法)表示模糊字符數(shù)組。不過,由于行長度(line length)的限制,通常在MIME中應用base64編碼,SOAP中一般不應用base64編碼。但是提供了"SOAP-ENC:base64"子類型使之能用于SOAP。
<picture xsi:type="SOAP-ENC:base64">
aG93IG5vDyBicm73biBjb3cNCg==
</picture>
5.3 多態(tài)accessor
許多語言允許能夠多態(tài)訪問多種類型值的accessor,每種類型在運行時可用。一個多態(tài)accessor實例必須包含一個"xsi:type"屬性描述實際值的類型。
例如,一個名為"cost"類型值為"xsd:float"的多態(tài)accessor編碼如下:
<cost xsi:type="xsd:float">29.95</cost>
與之對比,類型值不變的accessor編碼如下:
<cost>29.95</cost>
5.4 Compound types復合類型
SOAP定義了與下列常在程序語言中出現(xiàn)的結構性模式對應的類型:
結構
一個"struct"是一個復合值,它的成員值的唯一區(qū)別是accessor名稱,任意兩個accessor名稱都不相同。
數(shù)組
一個"array"是一個復合值,它的成員值的唯一區(qū)別是序數(shù)位置。
SOAP也允許結構和數(shù)組之外的其它數(shù)據(jù)的序列化,例如Directed-Labeled-Graph Data Model之類的數(shù)據(jù)中,單個節(jié)點有許多不同的accssor,有些不止出現(xiàn)一次。SOAP序列化規(guī)則不要求底層的數(shù)據(jù)模型在accssor之間區(qū)分次序,但如果有這樣的次序的話,這些accssor必須按照這個順序編碼。
5.4.1 復合值,結構和值引用
復合值的成員編碼為accessor元素。當accessor由名區(qū)分時(如結構),accessor名即作為元素名。名局部于類型的accessor有不受限的名,其它的accessor則有受限的名。
下面的例子是類型為"Book"的結構:
<e:Book>
<author>Henry Ford</author>
<preface>Prefatory text</preface>
<intro>This is a book.</intro>
</e:Book>
以下是描述上面結構的schema片斷:
<element name="Book">
<complexType>
<element name="author" type="xsd:string"/>
<element name="preface" type="xsd:string"/>
<element name="intro" type="xsd:string"/>
</complexType>
</e:Book>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -