28
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R2111 DESCRIPTION の中では,宣言は型宣言にwsdl:arrayType属性を使用してはならな
い (MUST NOT)。
R2112 DESCRIPTION の中では,要素の名前は ArrayOfXXX の形式で名前付けしないほうが
よい (SHOULD NOT)。
R2113 ENVELOPE は,soapenc:arrayType属性を含んではならない (MUST NOT)。
次に例を示す。
間違っている例:
次のWSDL記述が与えられた場合:
<xsd:element name="MyArray2" type="tns:MyArray2Type"/>
<xsd:complexType name="MyArray2Type"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" >
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:sequence>
<xsd:element name="x" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="soapenc:arrayType"
wsdl:arrayType="tns:MyArray2Type[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
エンベロープは次のようにシリアライズされる(名前空間宣言は明確化のため省略):
<MyArray2 soapenc:arrayType="tns:MyArray2Type[]" >
<x>abcd</x>
<x>efgh</x>
</MyArray2>
正しい例:
次のWSDL記述が与えられた場合:
<xsd:element name="MyArray1" type="tns:MyArray1Type"/>
<xsd:complexType name="MyArray1Type">
<xsd:sequence>
<xsd:element name="x" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
――――― [JIS X 7361 pdf 31] ―――――
29
X 7361 : 2010 (ISO/IEC 29361 : 2008)
</xsd:sequence>
</xsd:complexType>
エンベロープは次のようにシリアライズされる(名前空間宣言は明確化のため省略):
<MyArray1>
<x>abcd</x>
<x>efgh</x>
</MyArray1>
4.3.4 WSDL及びスキーマ定義の対象名前空間
スキーマで定義された名前と,WSDL定義で割り当てられた名前とは,別々のシンボル空間に属してい
る。
R2114 DESCRIPTION の中で,WSDL定義の対象名前空間(target namespace)と,スキーマ定
義の対象名前空間(target namespace)とは,同じであってもよい (MAY)。WSDL20
4.4 メッセージ
このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ WSDL 1.1の2.3 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315#messages)
WSDL 1.1ではwsdl:message要素が伝送されるデータの抽象的な定義を表現する。wsdl:binding
要素が抽象的な定義を特定のメッセージシリアライゼーションに結び付ける。このプロファイルでは
wsdl:message要素の使用と,適合するwsdl:binding要素がwsdl:message要素を使用する方法と
に関して次の制約を課す。
この細分箇条では,要件を簡略化し分かりやすくするため,次の定義が使われる。
定義: rpc-literalバインディング
“rpc-literal バインディング”とは,その子要素のwsdl:operation要素がすべて
rpc-literalオペレーションであるwsdl:binding要素のことである。
“rpc-literal オペレーション”とは,wsdl:binding要素の子要素である
wsdl:operation要素で,その子孫であるsoapbind:body要素がuse属性に "literal" の
値を指定しており,それが次のいずれかであるもののことである。
1. 値 "rpc" をもつstyle属性が子要素 soapbind:operation要素で指定される。
2. style属性が子要素soapbind:operation要素に存在せず,それを囲む
wsdl:binding要素のsoapbind:binding要素が,値 "rpc" をもつstyle属性
を指定する。
定義: document-literalバインディング
“document-literalバインディング”とは,その子要素のwsdl:operation要素がすべて
document-literal オペレーションであるwsdl:binding要素のことである。
“document-literalオペレーション”とは,wsdl:binding要素の子要素である
wsdl:operation要素で,その子孫であるsoapbind:body要素がuse属性に "literal" の
――――― [JIS X 7361 pdf 32] ―――――
30
X 7361 : 2010 (ISO/IEC 29361 : 2008)
値を指定しており,それが次のいずれかであるもののことである。
1. 値 "document" をもつstyle属性が子要素soapbind:operation要素で指定
される。
2. style属性が子要素soapbind:operation要素に存在せず,それを囲む
wsdl:binding要素のsoapbind:binding要素が,値 "document" をもつ
style属性を指定する。
3. style属性が,子要素のsoapbind:operation要素及びそれを囲む
wsdl:binding要素のsoapbind:binding要素のいずれにも存在しない。
4.4.1 バインディング及びパート
何個のwsdl:part要素がdocument-literalバインディング及びrpc-literalバインディングに許容又は要求
されているか,並びにそれらをどのように定義しなければならないかについて,多様な解釈が存在する。
R2201 DESCRIPTION の中の document-literalバインディングは,それぞれの soapbind:body
要素にparts属性が指定された場合,その値として,たかだか1個のパート名をもたな
ければならない (MUST)。
R2209 DESCRIPTION の中のwsdl:binding要素は,そのwsdl:binding要素が参照する先
のwsdl:portType要素に属するwsdl:message要素の各wsdl:part要素を,バイン
ディング拡張要素にバインドすることが望ましい (SHOULD)。
R2210 DESCRIPTION の中のdocument-literalバインディングがsoapbind:body要素にparts
属性を指定しない場合,対応する抽象的なwsdl:message要素は,0個又は1個の
wsdl:part要素を定義しなければならない (MUST)。
R2202 DESCRIPTION の中の wsdl:binding要素は,soap:Body要素を構成する0個のパー
トを指定する soapbind:body要素をもってもよい (MAY)。
R2203 DESCRIPTION の中のrpc-literalバインディングは,そのsoapbind:body要素の中で,
type属性を使って定義されたwsdl:part要素だけを参照しなければならない (MUST)。
R2211 rpc-literal バインディングで記述されたENVELOPE は,パートアクセッサに対して
xsi:nil属性に "1" 又は "true" の値を指定したものをもってはならない (MUST NOT)。
R2207 DESCRIPTIONの中のwsdl:message要素は,rpc-literalバインディングでwsdl:part
要素がsoapbind:body要素に参照されていない限りにおいて,element属性を使う
wsdl:part要素をもってもよい (MAY)。
R2204 DESCRIPTION の中のdocument-literalバインディングは,そのsoapbind:body要素の
それぞれにおいて,element属性を使って定義されたwsdl:part要素だけを参照しな
ければならない (MUST)。
R2208 DESCRIPTION の中のバインディングは,そのsoapbind:body要素によって参照され
るのと同じ wsdl:message要素の中の wsdl:part要素を参照する
soapbind:header要素をもってもよい (MAY)。
R2212 ENVELOPE は,エンベロープの対応するsoapbind:body要素にバインドされた
wsdl:part要素ごとにパートアクセッサを一つだけ含まなければならない (MUST)。
――――― [JIS X 7361 pdf 33] ―――――
31
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R2213 soapbind:body要素の parts属性の値が空文字列であるdocument-literal記述では,対
応する ENVELOPE のsoap:Body要素に含まれる要素内容はなしでなければならない
(MUST)。
R2214 soapbind:body要素のparts属性の値が空文字列であるrpc-literal記述では,対応する
ENVELOPE に含まれるパートアクセッサは存在してはならない (MUST)。
スタイルがdocumentでのpart要素が0個のwsdl:message要素の使用は,空のsoap:Body要素を含
むエンベロープを送受信するオペレーションを許容するために,許されている。スタイルがrpcでのpart
要素が0個のwsdl:message要素の使用は,引数,返却値,又はその両方が存在しないオペレーション
を許容するために,許されている。
document-literalバインディングでは,このプロファイルは,多くとも一つのパートが,抽象レベルにお
いてelement形式を用いて定義され,soap:Body要素にシリアライズされることを要求している。
wsdl:part要素がtype属性を使って定義された場合,メッセージ内のそのパートのシリアライゼー
ションは,(XML Schemaで)暗黙的に,minOccurs属性の値を "1" に,maxOccurs属性の値を "1" に,
そして nillable属性の値を "false" に,それぞれ指定したものと同等である。
wsdl:part要素はカージナリティ(cardinality)及び空要素可能性(nillability)のルールを指定するこ
とを許していないので,等価の暗黙的修飾を指定する必要がある。カージナリティ及び空要素可能性のル
ールを指定すると実装間の相互運用性が促進される。nillable属性に対する等価の暗黙的修飾の値は "false"
である。なぜならば,これを "true" としてしまうと,クライアントから値を送らないことを許容するパー
トしか設計できなくなってしまうからである。wsdl:part要素が空要素可能であることを許すアプリケ
ーションの場合,complexTypeラッパーを生成し,そのラッパーに含まれる要素の空要素可能性のルール
を指定することがアプリケーションに求められる。
4.4.2 バインディング及びフォルト
soapbind:fault要素,soapbind:header要素及びsoapbind:headerfault要素を記述する
wsdl:part要素をどう定義するかについて,幾つかの解釈がある。
R2205 DESCRIPTION の中の wsdl:binding要素は,その soapbind:header要素,
soapbind:headerfault要素及び soapbind:fault要素のそれぞれにおいて,
element属性を使って定義された wsdl:part要素だけを参照しなければならない
(MUST)。
フォルト及びヘッダにはパラメタが含まれないため,soapbind:fault要素,soapbind:header要
素及びsoapbind:headerfault要素は,WSDL 1.1に従い,style属性の値が "document" であること
を想定している。R2204は,style属性の値が "document" であるwsdl:part要素でsoapbind:body要素
にバインドされたものはすべてelement属性で定義されることを要求している。この要件は,
soapbind:fault要素,soapbind:header要素及びsoapbind:headerfault要素においても同様で
ある。
4.4.3 part要素の宣言
WSDL 1.1の3.1の例4及び例5は,間違ってwsdl:part要素のelement属性の有効な値としてスキ
ーマのデータ型("xsd:string" など)を示している。
――――― [JIS X 7361 pdf 34] ―――――
32
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R2206 DESCRIPTION の中のwsdl:message要素がelement属性を使うwsdl:part要素を
もつ場合,その属性の中で,大域要素宣言を参照しなければならない (MUST)。
次に例を示す。
間違っている例:
<message name="GetTradePriceInput">
<part name="tickerSymbol" element="xsd:string"/>
<part name="time" element="xsd:timeInstant"/>
</message>
間違っている例:
<message name="GetTradePriceInput">
<part name="tickerSymbol" element="xsd:string"/>
</message>
正しい例:
<message name="GetTradePriceInput">
<part name="body" element="tns:SubscribeToQuotes"/>
</message>
4.5 ポート型
このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ WSDL 1.1の2.4 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315#porttypes)
WSDL 1.1ではwsdl:portType要素が抽象的なオペレーションの集合をグループ化するために使われ
る。このプロファイルではwsdl:portType要素の使用に関して次の制約を課す。
4.5.1 part要素の並び順
parameterOrder属性を許すことは,コードジェネレータがメソッドシグネチャと伝送路上のメッセ
ージのインスタンスとを対応付ける助けになる。
R2301 ENVELOPEのsoap:Body要素の中での要素の並び順は,エンベロープの対応する
soapbind:body要素にバインドされた各wsdl:part要素の並び順を記述した
wsdl:message要素の中のwsdl:part要素の並び順と同じでなければならない
(MUST)。
R2302 DESCRIPTION は,wsdl:operation要素のparameterOrder属性を,コードジェネ
レータに対するヒントとして,返却値及びメソッドシグネチャを示すために使用してもよ
い (MAY)。
――――― [JIS X 7361 pdf 35] ―――――
次のページ PDF 36
JIS X 7361:2010の引用国際規格 ISO 一覧
- ISO/IEC 29361:2008(IDT)
JIS X 7361:2010の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.100 : 開放型システム間相互接続(OSI) > 35.100.05 : マルチレイヤアプリケーション