/
831.txt
191 lines (174 loc) · 9.89 KB
/
831.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
[1] [DFN[[RUBYB[SOAP 符号化][SOAP Encoding]]]]は、
[[SOAPデータ・モデル]]のデータを [[XML情報集合]]で表現
([[直列化]]) する方法です。
-'''[CODE[[QN[env:[[encodingStyle]]][http://www.w3.org/2003/05/soap-envelope]]]]''':
[CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]]
[2] 仕様書:
-[[SOAP 1.2]]
--[CSECTION[3. SOAP Encoding]]
<IW:SOAP2:"soapenc">
--正誤表 [CSECTION[E2/9 - Clarification. (2004-07-05)]]
<http://www.w3.org/2003/06/REC-soap12-20030624-errata.html#E29>
* 直列化
[5]
- [CODE(InfoItem)[[[要素]]情報項目]]
-- [[グラフ辺]]を表します。 [SRC[SOAP 1.2 Part 2 3.1.1]]
-- [CODE(InfoProp)[[[属性]]]]
--- [CODE(XMLa)[[QN[enc:[[id]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]
----[CODE(XMLa)[[QN[enc:[[ref]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]から[[参照]]するための固有識別子です。
[SRC[SOAP 1.2 Part 2 3.1.5.1]]。
----[CODE(InfoProp)[[[局所名]]]]: [CODE(XMLa)[[[id]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.1]]
----[CODE(InfoProp)[[[名前空間名]]]]: [CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.1]]
----[CODE(InfoProp)[[[指定]]]]: [CODE(XML)[[[true]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.1]]
----型: [CODE(XML)[[QN[xs:[[ID]]][]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.1]]
--- [CODE(XMLa)[[QN[enc:[[ref]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]
---- この[[グラフ辺]]が終わる[[グラフ節点]]の[CODE(InfoItem)[[[要素]]情報項目]]
[WEAK[([CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]] [CODE(XMLa)[[QN[enc:[[encodingStyle]]][http://www.w3.org/2003/05/soap-encoding]]]] の範囲内になければ'''なりません'''。)]] の
[CODE(XMLa)[[QN[enc:[[id]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]の値を指定します。
[SRC[SOAP 1.2 Part 2 3.1.1]]
該当する[CODE(InfoItem)[[[要素]]情報項目]]は丁度1つでなければ'''なりません'''。
[SRC[SOAP 1.2 Part 2 3.1.5.3]]
----[CODE(InfoProp)[[[局所名]]]]: [CODE(XMLa)[[[ref]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.2]]
----[CODE(InfoProp)[[[名前空間名]]]]: [CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.2]]
----[CODE(InfoProp)[[[指定]]]]: [CODE(XML)[[[true]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.2]]
----型: [CODE(XML)[[QN[xs:[[IDREF]]][]]]]
[SRC[SOAP 1.2 Part 2 3.1.5.2]]
---- この[CODE(InfoItem)[[[属性]]情報項目]]がなければ、
この[CODE(InfoItem)[[[要素]]情報項目]]が終点の[[グラフ節点]]をも[DFN[[RUBYB[表現][represent]]]]します。
[SRC[SOAP 1.2 Part 2 3.1.1]]
----[CODE(XMLa)[[QN[enc:[[id]]][http://www.w3.org/2003/05/soap-encoding]]
[CODE(InfoItem)[[[属性]]情報項目]]が存在する[CODE(InfoItem)[[[要素]]情報項目]]に出現しては'''なりません'''。
[SRC[SOAP 1.2 Part 2 3.1.5.3]]
--- [CODE(XMLa)[[[nodeType]]]] [CODE(InfoItem)[[[属性]]情報項目]]
([[単純値]]節点を現す場合、[[複合値]]接点を表す場合)
--- [CODE(XMLa)[[QN[enc:[[nodeType]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]
----[[グラフ節点]]が表す[[値]]の種類を表します
[SRC[SOAP 1.2 Part 2 3.1.7]]。
----[CODE(InfoProp)[[[局所名]]]]: [CODE(XMLa)[[[nodeType]]]]
[SRC[SOAP 1.2 Part 2 3.1.7]]
----[CODE(InfoProp)[[[名前空間名]]]]: [CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]]
[SRC[SOAP 1.2 Part 2 3.1.7]]
----[CODE(InfoProp)[[[指定]]]]: [CODE(XML)[[[true]]]]
[SRC[SOAP 1.2 Part 2 3.1.7]]
----型: [CODE(XMLa)[[QN[enc:[[nodeType]]][http://www.w3.org/2003/05/soap-encoding]]]]:
[CODE(XML)[[[simple]]]] ([[単純型]]),
[CODE(XML)[[[struct]]]] ([[複合型]]: [[構造体]]),
[CODE(XML)[[[array]]]] ([[複合型]]: [[配列]])
[SRC[SOAP 1.2 Part 2 3.1.7]]
--- [CODE(XMLa)[[QN[enc:[[itemType]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]
----[[配列]]を表す場合指定して'''構いません'''
[SRC[SOAP 1.2 Part 2 3.1.3]]。
----[CODE(InfoProp)[[[局所名]]]]: [CODE(XMLa)[[[itemType]]]]
[SRC[SOAP 1.2 Part 2 3.1.4.1]]
----[CODE(InfoProp)[[[名前空間名]]]]: [CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]]
[SRC[SOAP 1.2 Part 2 3.1.4.1]]
----[CODE(InfoProp)[[[指定]]]]: [CODE(XML)[[[true]]]]
[SRC[SOAP 1.2 Part 2 3.1.4.1]]
----型: [CODE(XML)[[QN[xs:[[QName]]][]]]]
[SRC[SOAP 1.2 Part 2 3.1.4.1]]
----[[配列]]の要素に当たる[[グラフ節点]]の[[型名]]を指定します
[SRC[SOAP 1.2 Part 2 3.1.4]]。
--- [CODE(XMLa)[[QN[enc:[[arraySize]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]
----[[配列]]を表す場合指定して'''構いません'''
[SRC[SOAP 1.2 Part 2 3.1.3]]。
----[[多次元配列]]のようなプログラムの[[データ構造]]に写像できることを示します。
[SRC[SOAP 1.2 Part 2 E29]]
----[CODE(InfoProp)[[[局所名]]]]: [CODE(XMLa)[[[arraySize]]]]
[SRC[SOAP 1.2 Part 2 3.1.6]]
----[CODE(InfoProp)[[[名前空間名]]]]: [CODE(URI)[[[http://www.w3.org/2003/05/soap-encoding]]]]
[SRC[SOAP 1.2 Part 2 3.1.6]]
----型: [CODE(XML)[[QN[enc:[[arraySize]]][]]]]:
[CODE(ABNF)[(1*[[DIGIT]] / "*") *(([[U+0009]] / [[U+000A]] / [[U+000D]] / [[U+0020]]) 1*[[DIGIT]])]]
[SRC[SOAP 1.2 Part 2 3.1.6]]
----[[配列]]中の各[[次元]]の大きさを示します。
項目の数が次元数となります。星は大きさ未指定を表します。
最初の方が添え字がゆっくり動く次元、最後の方が添え字が速く動く次元です。
[SRC[SOAP 1.2 Part 2 3.1.6, E29]]
----この[[属性]]を省略した時の既定値は [CODE(XML)[*]] です。
[SRC[SOAP 1.2 Part 2 3.1.6, E29]]
--- [CODE(XMLa)[[QN[xn:[[nil]]]]
[CODE(InfoItem)[[[属性]]情報項目]]
---- [[節点]]を表す場合に指定できます。
---- [CODE(XML)[[[true]]]] なら、[[グラフ節点]]で終わらない辺であることを表します。
この場合は[[グラフ辺]]を表す[CODE(InfoItem)[[[要素]]情報項目]]自体を省略できます。
[SRC[SOAP 1.2 Part 2 3.1.3]]
-- [CODE(InfoProp)[[[子供]]]]
---[CODE(InfoItem)[[[文字]]情報項目]]
([CODE(InfoItem)[[[要素]]情報項目]]が[[グラフ節点]]
([[単純値]]) を表現する場合)
---- [[グラフ節点]]の[[字句値]]で、[[単純値]]を表します。
[SRC[SOAP 1.2 Part 2 3.1.2]]
--- [CODE(InfoItem)[[[要素]]情報項目]]
([CODE(InfoItem)[[[要素]]情報項目]]が[[グラフ節点]]
([[複合値]]) を表現する場合)
[SRC[SOAP 1.2 Part 2 3.1.3]]
---- [[外向き辺]]を表します。
---- [[辺札]]で区別される場合、子供[CODE(InfoItem)[[[要素]]情報項目]]の[CODE(InfoProp)[[[局所名]]]]と[CODE(InfoProp)[[[名前空間名]]]]で[[辺札]]の値を決定します。
---- [[位置]]で区別される場合、
[[グラフ辺]]の順序位置は子供[CODE(InfoItem)[[[要素]]情報項目]]の兄弟間の相対位置に対応します。
[CODE(InfoProp)[[[局所名]]]]と[CODE(InfoProp)[[[名前空間名]]]]は意味を持ちません。
[6] '''グラフ節点の型名''':
[[グラフ節点]]の[[型名]]は符号化された情報集合から次の方法で得ることができます。
なお、[[型名]]は[[名前空間名]]と[[局所名]]の組で、
[[名前空間接頭辞]]は [[SOAP]] の[[グラフ]]が持つ情報とは考えません。
[SRC[SOAP 1.2 Part 2 3.1.4]]
= [[グラフ節点]]を表現する[CODE(InfoItem)[[[要素]]情報項目]]が
[CODE(XMLa)[[QN[xsi:[[type]]]]]] [CODE(InfoItem)[[[属性]]情報項目]]を持つなら、
その値が[[型名]]です。
= [CODE(InfoProp)[[[親]]]][CODE(InfoItem)[[[要素]]情報項目]]が
[CODE(XMLa)[[QN[enc:[[itemType]]][http://www.w3.org/2003/05/soap-encoding]]]] [CODE(InfoItem)[[[属性]]情報項目]]を持つなら、
その値が[[型名]]です。
= [[型名]]は未指定です。
注意: [[SOAP]] の[[グラフ]]は[[型名]]の情報を持っていますが、
[[SOAP]] 自体としては特定の型システムや妥当性検証を求めてはいません。[SRC[SOAP 1.2 Part 2 3.1.4]]
[4] '''複数の表現''':
1つの[[グラフ]]に複数の表現方法があるかもしれません。
直列化器はどの表現を使っても'''構いません'''し、
解直列化器はどの表現も受け付けなければ'''なりません'''。
[SRC[SOAP 1.2 Part 2 3.1]]
[[#comment]]
* 失敗の処理
[7] [[SOAP]] [[受信者]]が [[SOAP符号化]]を解直列化しようとした時、
- [CODE(XMLa)[[QN[enc:[[ref]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]の[[参照]]先がなければ、
[[SOAP失敗]]
[CODE(XML)[[QN[enc:[[Sender]]][http://www.w3.org/2003/05/soap-encoding]]]]
(亜符号
[CODE(XMLa)[[QN[enc:[[MissingID]]][http://www.w3.org/2003/05/soap-encoding]]]])
を生成する'''べきです'''。
[SRC[SOAP 1.2 Part 2 3.2]]
- [CODE(XMLa)[[QN[enc:[[ref]]][http://www.w3.org/2003/05/soap-encoding]]]]
[CODE(InfoItem)[[[属性]]情報項目]]の[[参照]]先が複数あれば、
[[SOAP失敗]]
[CODE(XML)[[QN[enc:[[Sender]]][http://www.w3.org/2003/05/soap-encoding]]]]
(亜符号
[CODE(XMLa)[[QN[enc:[[DupulicateID]]][http://www.w3.org/2003/05/soap-encoding]]]])
を生成する'''べきです'''。
[SRC[SOAP 1.2 Part 2 3.2]]
- [[型名]]が指定されていなければ、
[CODE(XML)[[QN[enc:[[Sender]]][http://www.w3.org/2003/05/soap-encoding]]]]
(亜符号
[CODE(XMLa)[[QN[enc:[[UntypedValue]]][http://www.w3.org/2003/05/soap-encoding]]]])
を生成して'''構いません'''。
[SRC[SOAP 1.2 Part 2 3.2]]
[[#comment]]
* 関連
[3] '''SOAP の他の部分との関係''':
-[[SOAP符号化]]や [[SOAPデータ・モデル]]の実装は'''任意選択'''です。
-[[SOAP RPC表現]]は [[SOAP符号化]]を使用しています。
[[#comment]]
* メモ