23
X 7361 : 2010 (ISO/IEC 29361 : 2008)
4.2.3 WSDL importのlocation属性の構造
WSDL 1.1は,wsdl:import要素に location属性が必す(須)かどうか,及びその内容がどうなっ
ていなければならないかについて,明確ではない。
R2007 DESCRIPTIONは,wsdl:import要素の location属性に空ではない値を指定しなけ
ればならない (MUST)。
wsdl:import要素は xsd:import要素になら(倣)ったものであるが,wsdl:import要素には
location属性が必す(須)であるのに対して,xsd:import要素の対応する属性である
schemaLocationは省略可能である。locationが必す(須)であることと整合性を取るために,その
内容は空であってはならない。
4.2.4 WSDL importのlocation属性のセマンティクス
WSDL 1.1は,WSDL処理系が wsdl:import要素を見つけた場合,その要素のlocation属性に指定
されたURIから実際にWSDL文書を取り出して処理しなければならないのかどうか,明確ではない。
R2008 CONSUMER は,WSDL記述を wsdl:import要素の location属性に指定されたURI
から取り出してもよい(MAY)が,必ずしもそうする必要はない。〔明確化〕
wsdl:import要素のlocation属性の値はヒントである。WSDL処理系は与えられた名前空間の
WSDL記述の位置を特定する,別の手段をもっていてもよい。
4.2.5 WSDL import要素の位置
WSDL 1.1の3.1の例3は,wsdl:import要素の位置についての混乱を引き起こす。
R2022 DESCRIPTION の中にwsdl:import要素が現れる場合,それは,
wsdl:documentation要素を除く,WSDL名前空間の他のすべての要素よりも前にな
ければならない (MUST)。
R2023 DESCRIPTION の中にwsdl:types要素が現れる場合,それは,wsdl:documentation
要素及び wsdl:import要素を除く,WSDL名前空間の他のすべての要素よりも前にな
ければならない (MUST)。
次に例を示す。
間違っている例:
<definitions name="StockQuote"
...
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace="http://example.com/stockquote/definitions"
location="http://example.com/stockquote/stockquote.wsdl"/>
――――― [JIS X 7361 pdf 26] ―――――
24
X 7361 : 2010 (ISO/IEC 29361 : 2008)
<message name="GetLastTradePriceInput">
<part name="body" type="tns:TradePriceRequest"/>
</message>
...
<service name="StockQuoteService">
<port name="StockQuotePort" binding="tns:StockQuoteSoap">
....
</port>
</service>
<types>
<schema targetNamespace="http://example.com/stockquote/schemas"
xmlns="http://www.w3.org/2001/XMLSchema">
.......
</schema>
</types>
</definitions>
正しい例:
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/definitions">
<import namespace="http://example.com/stockquote/base"
location="http://example.com/stockquote/stockquote.wsdl"/>
<message name="GetLastTradePriceInput">
<part name="body" element="..."/>
</message>
...
</definitions>
正しい例:
<definitions name="StockQuote"
...
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/stockquote/schemas"
xmlns="http://www.w3.org/2001/XMLSchema">
.......
――――― [JIS X 7361 pdf 27] ―――――
25
X 7361 : 2010 (ISO/IEC 29361 : 2008)
</schema>
</types>
<message name="GetLastTradePriceInput">
<part name="body" element="tns:TradePriceRequest"/>
</message>
...
<service name="StockQuoteService">
<port name="StockQuotePort" binding="tns:StockQuoteSoap">
....
</port>
</service>
</definitions>
4.2.6 XML版数の要件
WSDL 1.1又はXML Schema 1.0のいずれも,XMLの特定の版数を要求してはいない。相互運用性のた
め,WSDL文書及びそれらが取り込むスキーマはXMLの1.0版を使わなければならない。
R4004 DESCRIPTIONは,Extensible Markup Language (XML) の1.0版W3C勧告を使用しな
ければならない (MUST)。
4.2.7 XML名前空間宣言
公開された正誤表NE05(http://www.w3.org/XML/xml-names-19990114-errataを参照)ではこの名前空間宣
言が現れてもよいことになっているが,以前の処理系の中にはこうした宣言をエラーとみなすものもある。
この要件は,適合対象物ができるだけ広範囲の相互運用性をもてるようにしている。
R4005 DESCRIPTION に名前空間宣言 xmlns:xml="http://www.w3.org/XML/1998/namespace" を
含めないほうがよい (SHOULD NOT)。〔明確化〕
4.2.8 WSDL及びUnicodeのバイト順マーク
XML 1.0では,UTF-8文字エンコーディングにおいてもバイト順マーク(BOM)を含めてもよいことに
なっており,WSDL処理系はそれを受け入れる用意がなければならない。
R4002 DESCRIPTION には,Unicodeのバイト順マーク (BOM) を含めてもよい (MAY)。〔明
確化〕
4.2.9 許容可能なWSDL文字エンコーディング
このプロファイルではSOAPとWSDLとの両方に一貫してUTF-8又はUTF-16のいずれかを要求してい
る。
R4003 DESCRIPTION は,UTF-8又はUTF-16のいずれかの文字エンコーディングを使わなけ
ればならない (MUST)。
4.2.10 名前空間の強制変更
wsdl:import要素における名前空間の強制変更(namespace coercion)は,このプロファイルでは許さ
――――― [JIS X 7361 pdf 28] ―――――
26
X 7361 : 2010 (ISO/IEC 29361 : 2008)
れない。
R2005 取り込まれる(imported)側の記述(description)の wsdl:definitions要素の
targetNamespace属性の値は,取り込む(importing)側の DESCRIPTION の
wsdl:import要素の namespace属性の値と一致しなければならない (MUST)。
4.2.11 WSDLのdocumentation要素
WSDL 1.1のスキーマと本文とは,wsdl:documentation要素をどこに置いてもよいかについて整合
性がとれていない。
R2030 DESCRIPTION の中のwsdl:documentation要素は,WSDL1.1に記述されている各要素に
加えて,wsdl:import要素,wsdl:part要素及び wsdl:definitions要素 の最初
の子要素として存在してもよい (MAY)。WSDL20
4.2.12 WSDL拡張
このプロファイル,又は他のWS-Iプロファイルで明示的に規定されていないWSDL拡張のサポートを
要求することは,それらの拡張を理解するように作られていない開発ツールとの間の,相互運用性の問題
に発展する。
R2025 WSDL拡張を含むDESCRIPTION は,このプロファイルの他の要件と矛盾する拡張を使
用してはならない (MUST NOT)。
R2026 DESCRIPTION は,このプロファイルへの適合性を表示するいかなる要素
(wsdl:binding要素,wsdl:portType要素,wsdl:message要素,wsdl:types
要素又はwsdl:import要素)にも wsdl:required属性の値が "true" である拡張要
素を含まないほうがよい (SHOULD NOT)。
R2027 記述(description)の処理の最中に,利用者(consumer)がWSDL拡張要素を発見し,そ
れがwsdl:required属性に "true" の値を指定されており,かつ,それが理解できない
か又は処理できない場合,CONSUMER は,その処理を失敗(fail)しなければならない
(MUST)。
WSDL記述を読み込んでWebサービスのソフトウェアのインスタンスを生成する開発ツールは,未知の
WSDL拡張に対する解釈を組み込まれていないかもしれない。したがって,必す(須)の(wsdl:required
属性の値が"true"である。)WSDL拡張は避けるのが望ましい。利用方法及び意味について規格が公開され
ていない必す(須)のWSDL拡張を使用することは,その拡張の作者を除く全員に対して,潜在的に克服
不可能な相互運用上の問題を課してしまう。利用方法及び意味について規格が公開されている必す(須)
のWSDL拡張を使用することは,ここでの要件を規定するに至った相互運用上の問題を軽減するが,解消
するものではない。
このプロファイルの目的上,"http://schemas.xmlsoap.org/wsdl/" 名前空間のすべての要素は,要素の他に
属性を介しても拡張可能である。WS-Iは,WSDL1.1スキーマのこの可能性を反映したバージョンを
http://ws-i.org/profiles/basic/1.1/wsdl11.xsdで公開して便宜を図っている。
――――― [JIS X 7361 pdf 29] ―――――
27
X 7361 : 2010 (ISO/IEC 29361 : 2008)
4.3 型
このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ WSDL 1.1の2.2 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315#types)
WSDL 1.1のwsdl:types要素は,記述されるWebサービスに適用されるデータ型定義を記述する。こ
のプロファイルでは,このプロファイルに対する適合性を表示するWSDLの要素に参照される
wsdl:types要素の内容の,該当する部分に対して次の制約を課す。
4.3.1 QName参照
XML Schemaは,各QName参照が,対象名前空間(target namespace)又は取り込まれた名前空間(imported
namespace,xsd:import要素で明示的に指定されたもの)のいずれかを使うことを要求している。入れ
子の取り込み(nested imports)だけによって表現された名前空間へのQName参照は許されていない。
WSDL 1.1は,WSDL要素からのQName参照にどのスキーマ対象名前空間が適しているかについて,明
らかではない。このプロファイルでは,xsd:schema要素で定義された対象名前空間と,取り込まれた名
前空間との両方に対して,WSDL要素からのQName参照を許している。入れ子の取り込みを通してだけ
定義された名前空間をQName参照することは,許されていない。
R2101 DESCRIPTIONは,取り込まれて(imported)もいなければ,参照する側の(referring)
WSDL文書に定義されてもいない名前空間に属するWSDL構成要素をQNameで参照し
てはならない (MUST NOT)。
R2102 DESCRIPTION の中でのスキーマの構成要素に対するQName参照は,xsd:schema要
素のtargetNamespace属性に定義された名前空間か,xsd:schema要素の中にある
xsd:import要素の namespace属性で定義された名前空間かの,いずれかを使わなけ
ればならない (MUST)。
4.3.2 スキーマのtargetNamespace構造
wsdl:types要素の子供であるすべてのxsd:schema要素にtargetNamespaceを要求することは良
い方法であり,WSDL文書の作成者に対する負担も最小限で済み,明確に定義されていない状況に陥るこ
とを避けられる。
R2105 DESCRIPTION のwsdl:types要素に含まれるすべてのxsd:schema要素は,
targetNamespace属性に有効なnullでない値をもたなければならない (MUST)。ただ
し,xsd:schema要素が,xsd:import要素若しくはxsd:annotation要素,又はその両方を
唯一の子要素としてもつ場合を除く。
4.3.3 soapencの配列
WSDL 1.1の2.2にある,配列(array)型を宣言することについての推奨は,多様な解釈をされてきたた
め,相互運用性の問題となっている。さらに,配列を宣言するにはより明確な方法がある。
R2110 DESCRIPTION の中では,宣言は soapenc:Array型を拡張も制限もしてはならない
(MUST NOT)。
――――― [JIS X 7361 pdf 30] ―――――
次のページ PDF 31
JIS X 7361:2010の引用国際規格 ISO 一覧
- ISO/IEC 29361:2008(IDT)
JIS X 7361:2010の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.100 : 開放型システム間相互接続(OSI) > 35.100.05 : マルチレイヤアプリケーション