この規格ページの目次
8
X 7361 : 2010 (ISO/IEC 29361 : 2008)
E0007−HTTP認証−HTTPの認証は,拡張スキーム,任意のダイジェストハッシュア
ルゴリズム及びパラメタを許容している。
E0008−規定がないヘッダフィールド−HTTPは任意のヘッダがメッセージに現れるこ
とを許容している。
E0009−Expect 拡張−HTTPのExpect/ContinueメカニズムはExpect拡張を許容してい
る。
E0010−Content-Encoding−HTTPで許容される内容エンコーディング
(content-encoding)は無制限であり,'gzip','compress','deflate' 以外のあらゆる形式が
拡張点となる。
E0011−Transfer-Encoding−HTTPで許容される伝送エンコーディング
(transfer-encoding)は無制限である。
E0012−Upgrade−HTTPは,Upgrade ヘッダを使うことで,接続を任意のプロトコルに
切り替えることを許容している。
E0024−名前空間属性−soap:Envelope要素及びsoap:Header要素の名前空間属性。
E0025−soap:Body要素の属性−名前空間修飾された属性も局所属性もSOAP 1.1によっ
て制約されない。
・ RFC2965: HTTP State Management Mechanism (http://www.ietf.org/rfc/rfc2965)
3.1 SOAPエンベロープ
このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ SOAP 1.1の4 (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#Toc478383494)
SOAP 1.1は,メッセージを組み立てるための構造(エンベロープ)を定義している。このプロファイル
ではその構造を使用することを必す(須)としており,使用するときには次の制約を課す。
3.1.1 SOAPエンベロープの構造
R9980 ENVELOPE は,SOAP 1.1の4 "SOAPエンベロープ" で指定された構造に適合しなけ
ればならない(このプロファイルによる修正に従う。)(MUST)。
R9981 ENVELOPE は,soap:Body要素の子要素を厳密に0個又は1個もたなければならない
(MUST)。
R2201及びR2210(4.4.1参照)を合わせて考えるsoap:Body要素の子要素は最大で1個であることは
明らかであるが,この制約を表現する明示的な要件がないと混乱を招くことになるため規定する。
3.1.2 SOAPエンベロープの名前空間
SOAP 1.1は,エンベロープの文書要素の名前空間名(namespace name)が
"http://schemas.xmlsoap.org/soap/envelope/" でない場合,そのエンベロープを破棄することを規定している。
このプロファイルは,あいまい(曖昧)でないオペレーションを保証するため,その代わりにフォルトが
生成されることを要求している。
――――― [JIS X 7361 pdf 11] ―――――
9
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R1015 RECEIVER は,文書要素が soap:Envelope要素でないエンベロープを検出した場合
はフォルトを生成しなければならない (MUST)。
3.1.3 SOAP 本体の名前空間修飾
名前空間修飾のない要素名の使用は名前の衝突を起こすかもしれないので,soap:Body要素の子要素
には修飾された名前を使わなければならない。
R1014 ENVELOPEの soap:Body要素の子要素は,名前空間修飾され(namespace qualified)
なければならない (MUST)。
3.1.4 禁止されている構造
XMLのDTD及び処理命令は,エンベロープ内で使用されると,セキュリティ上のぜい(脆)弱性,処
理のオーバーヘッド及びメッセージのセマンティクスのあいまい(曖昧)さを導入するかもしれない。そ
のため,XMLのこれらの機能の処理はSOAP 1.1の3で禁止されている。
公開された正誤表NE05(http://www.w3.org/XML/xml-names-19990114-errataを参照)では名前空間宣言
xmlns:xml="http://www.w3.org/XML/1998/namespace" が現れてもよいことになっているが,以前の処理系
の中にはこうした宣言をエラーとみなすものもあった。この要件は,適合対象物ができるだけ広範囲の相
互運用性をもてるようにしている。
R1008 ENVELOPE は,文書型宣言(Document Type Declaration)を含んではならない (MUST
NOT)。〔明確化〕
R1009 ENVELOPE は,処理命令(Processing Instructions)を含んではならない (MUST NOT)。
〔明確化〕
R1033 ENVELOPE は,名前空間宣言 xmlns:xml="http://www.w3.org/XML/1998/namespace" を含
まないほうがよい (SHOULD NOT)。〔明確化〕
R1034 DESCRIPTION は,名前空間宣言 xmlns:xml="http://www.w3.org/XML/1998/namespace" を
含まないほうがよい (SHOULD NOT)。〔明確化〕
3.1.5 SOAP後続要素
soap:Body要素の後ろに兄弟要素が現れた場合の解釈は明らかではない。したがって,そのような要
素は禁止する。
R1011 ENVELOPE は,soap:Envelope要素の子要素として,soap:Body要素の後ろにいか
なる要素も付加してはならない (MUST NOT)。
この要件は,SOAP 1.1の規格本文とSOAP 1.1のXML Schema文書との間の食い違いを明確化する。
次に例を示す。
間違っている例:
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' >
<soap:Body>
<p:Process xmlns:p='http://example.org/Operations' />
</soap:Body>
――――― [JIS X 7361 pdf 12] ―――――
10
X 7361 : 2010 (ISO/IEC 29361 : 2008)
<m:Data xmlns:m='http://example.org/information' >
Here is some data with the message
</m:Data>
</soap:Envelope>
正しい例:
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' >
<soap:Body>
<p:Process xmlns:p='http://example.org/Operations' >
<m:Data xmlns:m='http://example.org/information' >
Here is some data with the message
</m:Data>
</p:Process>
</soap:Body>
</soap:Envelope>
3.1.6 SOAP encodingStyle属性
soap:encodingStyle属性は,データをXMLにエンコーディングするときに特定のスキームを使う
ことを示すのに使われてきた。しかし,この機能はXML名前空間を使っても実現できるので,複雑さを
導入してしまう。そこで,このプロファイルは,literalの,エンコードされないXMLの方を選択している。
R1005 ENVELOPE は,名前空間名(namespace name) が
"http://schemas.xmlsoap.org/soap/envelope/" である要素のいずれにも
soap:encodingStyle属性を含んではならない (MUST NOT)。
R1006 ENVELOPE は,soap:Body要素の子要素のいずれにも soap:encodingStyle属性
を含んではならない (MUST NOT)。
R1007 rpc-literalバインディングで記述されるENVELOPEは,soap:Body要素の孫要素のいず
れにもsoap:encodingStyle属性を含んではならない (MUST NOT)。
3.1.7 SOAP mustUnderstand属性
soap:mustUnderstand属性は "xsd:boolean" 型を制限したものであり,"0" 又は "1" の値だけを取る。
したがって,この二つの値だけが許されている。
R1013 ENVELOPEがsoap:mustUnderstand属性を含む場合,属性の値として2種類の形式
"0"及び"1" だけを使用しなければならない (MUST)。〔明確化〕
3.1.8 xsi:type属性
多くの場合,送信側と受信側とは,交換されるエンベロープについて型情報を何らかの形で共有してい
る。
R1017 RECEIVER は,派生型を示すために必要な場合(XML Schema Part 1:Structures, 2.6.1
を参照)を除き,エンベロープにxsi:type属性の使用を必す(須)としてはならない
(MUST NOT)。
――――― [JIS X 7361 pdf 13] ―――――
11
X 7361 : 2010 (ISO/IEC 29361 : 2008)
3.1.9 SOAP 1.1要素のSOAP 1.1属性
R1032 ENVELOPE のsoap:Envelope要素,soap:Header要素及びsoap:Body要素は,名
前空間 "http://schemas.xmlsoap.org/soap/envelope/" 内の属性をもってはならない (MUST
NOT)。
3.2 SOAP 処理モデル
このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ SOAP 1.1の 2 (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#Toc478383491)
SOAP 1.1ではエンベロープ処理のためのモデルを定義している。特に,ヘッダブロック及びエンベロー
プ本体の処理についてのルールを定義している。また,フォルトの生成に関するルールも定義している。
このプロファイルでは,その処理モデルに対して次の制約を課す。
3.2.1 必す(須)ヘッダ
SOAP 1.1の処理モデルは,必す(須)ヘッダブロックの処理についての規定が不十分である。必す(須)
ヘッダブロックとは,soap:Header要素の子要素で,soap:mustUnderstand属性に "1" の値を設定
しているもののことである。
R1025 RECEIVER は,すべての必す(須)ヘッダブロックに対するチェックが実際の処理の前
に行われているようにエンベロープを処理しなければならない (MUST)。SOAP12
これによって,メッセージの一部分を処理した後で必す(須)ヘッダブロックを見つけることによる,
予期せぬ副作用が発生しないことを保証する。
3.2.2 MustUnderstandフォルトの生成
このプロファイルは,受信側が自分あて(宛)のヘッダブロックを理解できない場合,フォルトを生成
することを要求している。
R1027 エンベロープが(soap:actor値によって)あて(宛)先として指定された受信者(receiver)
に理解できない必す(須)ヘッダブロック(soap:mustUnderstand属性の値が "1" で
あるもの)をもつ場合,RECEIVER は "soap:MustUnderstand" フォルトを生成しなけれ
ばならない (MUST)。SOAP12
3.2.3 SOAPフォルトの処理
フォルトが生成される場合,それ以降の処理は行わないことが望ましい。リクエスト−レスポンスのメ
ッセージ交換では,リクエストの送信側にフォルトメッセージが伝送され,何らかのアプリケーションレ
ベルのエラーがユーザに通知される。
SOAPとこのプロファイルは共に,SOAPフォルトの作成を意味する用語として '生成(generate)' を使
用している。フォルトの生成はその伝送(場合によっては不要)とは別であるという認識が重要である。
R1028 RECEIVERでフォルトが生成される場合,フォルトが生成される前に行われたエンベロ
ープ処理の影響を復元(rollback)又は補償(compensate)するために必要なものを除き,
――――― [JIS X 7361 pdf 14] ―――――
12
X 7361 : 2010 (ISO/IEC 29361 : 2008)
SOAPエンベロープに対するそれ以降の処理を行わないほうがよい (SHOULD NOT)。
SOAP12
R1029 SOAPのエンベロープの処理の正常な結果がSOAPレスポンスの伝送になる場合で,そ
の代わりにフォルトが生成されるとき,RECEIVER はレスポンスの代わりにSOAPフォ
ルトを伝送しなければならない (MUST)。SOAP12
R1030 フォルトを生成する RECEIVER は,実際にフォルトが生成されたことを,その状況に
適切な手段をもってエンドユーザに通知することが望ましい (SHOULD)。SOAP12
3.3 SOAPフォルト
3.3.1 SOAPフォルトの識別
幾つかの利用者(consumer)の実装は,フォルトの存在を識別するのに誤ってHTTPの状態コードだけ
を使用する。WebのインフラストラクチャがHTTP状態コードを変更するような状況も考えられるし,ま
た,一般的な信頼性のためにも,このプロファイルでは,実装がエンベロープも調べることを要求する。
フォルトは,soap:Body要素に単一の子要素としてsoap:Fault要素をもつエンベロープである。
R1107 メッセージのsoap:Body要素が単一の子 soap:Fault要素をもつ場合,RECEIVER は
SOAPメッセージをフォルトと解釈しなければならない (MUST)。
3.3.2 SOAPフォルトの構造
このプロファイルは,soap:Fault要素の内容をSOAP 1.1で明示的に記述されている要素に限定する。
R1000 ENVELOPE がフォルトである場合,soap:Fault要素は faultcode要素,
faultstring要素,faultactor要素及び detail要素以外の子要素をもってはなら
ない (MUST NOT)。
次に例を示す。
間違っている例:
<soap:Fault xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' >
<faultcode>soap:Client</faultcode>
<faultstring>Invalid message format</faultstring>
<faultactor>http://example.org/someactor</faultactor>
<detail>There were <b>lots</b> of elements in the message
that I did not understand
</detail>
<m:Exception xmlns:m='http://example.org/faults/exceptions' >
<m:ExceptionType>Severe</m:ExceptionType>
</m:Exception>
</soap:Fault>
正しい例:
<soap:Fault xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' >
――――― [JIS X 7361 pdf 15] ―――――
次のページ PDF 16
JIS X 7361:2010の引用国際規格 ISO 一覧
- ISO/IEC 29361:2008(IDT)
JIS X 7361:2010の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.100 : 開放型システム間相互接続(OSI) > 35.100.05 : マルチレイヤアプリケーション