2.6.5 XMLスキーマの適用範囲
各サービス部品で利用するXMLスキーマの適用範囲について説明します。
(1) 利用するXMLスキーマの形式
-
XMLスキーマは次の条件を満たしている必要があります。
-
スキーマのXSD名前空間が「http://www.w3.org/2001/XMLSchema」であること。
-
選択したXMLスキーマに,必ずルート要素が記述されていること。
-
XMLスキーマをファイル指定する場合,ファイル名の長さが128バイト以下であること。
-
XMLスキーマの属性(attribute)の先頭と末尾にWhite space文字(半角スペース(#x20),タブ(#x9),および改行文字(#xAまたは#xD))を使用していないこと。
-
-
maxOccurs属性に大きな値を指定するとメモリを大量に消費します。maxOccurs属性には,できる限りunboundedを指定することをお勧めします。
-
xsd:element要素の型の定義には,type属性,ref属性または内部定義(complexTypeまたはsimpleType)が使用できます。
-
ビジネスプロセスの受付として標準受付を使用する場合,xsd:schema要素のelementFormDefault属性には,qualifiedを指定することをお勧めします。
- 注意事項
-
-
SOAPヘッダやSOAPボディの子要素にSOAP固有の属性(mustUnderstand属性,role属性,encodingStyle属性,actor属性,およびrelay属性)が出現した場合,XMLスキーマにこの属性を定義しないでデータ変換アクティビティで変換すると,変換後の変数にSOAP固有の属性が反映されません。また,検証処理実行時に検証エラーが発生します。このため,SOAP固有の属性が出現する場合は,XMLスキーマにxsd:anyAttributeを記述してください。
-
XMLスキーマファイル中の値にパーセントエンコーディングした値を設定する場合,16進数値を大文字で設定してください。例を次に示します。
正:schemaLocation="%E3%81%82.xsd"
誤:schemaLocation="%e3%81%82.xsd"
-
(2) 外部のXMLスキーマを参照する場合の注意事項
XMLスキーマから外部のXMLスキーマを参照して利用する場合の注意事項を,次に示します。
-
WSDLのwsdl:types要素以下に定義したXMLスキーマのxsd:import要素のschemaLocation属性が指定されていない場合,wsdl:types要素以下のXMLスキーマを使用して名前空間を解決している必要があります。
-
XMLスキーマのxsd:import要素のschemaLocation属性は必ず指定してください。
-
xsd:import要素には,必ずnamespace属性を指定してください。
-
xsd:import要素およびxsd:include要素では,参照の呼び出し階層を20階層以内にしてください。
-
schemaLocation属性にredefine要素があるスキーマ(2段階以上のredefine)は指定しないでください。
-
xsd:schema要素のtargetNamespace属性指定されているスキーマからは,targetNamespace属性が指定されていないスキーマをincludeしないでください。
-
SOAP1.1モードを使用する場合,xsd:import要素のschemaLocation属性,およびxsd:include要素のschemaLocation属性には,UTF-8でパーセントエンコーディングした値でも,パーセントエンコーディングしていない値でも設定できます。ただし,パーセントエンコーディングし,かつファイルパスにディレクトリを含む場合,ディレクトリデリミタ(/)をエンコードしないでください。
-
SOAP1.1/1.2併用モードを使用する場合,xsd:import要素のschemaLocation属性,およびxsd:include要素のschemaLocation属性には,UTF-8でパーセントエンコーディングした値を指定してください。ただし,パーセントエンコーディングし,かつファイルパスにディレクトリを含む場合,ディレクトリデリミタ(/)をエンコードしないでください。
-
schemaLocation属性のディレクトリデリミタには「/」を使用してください(「\」は使用できません)。
-
XMLスキーマのファイルパスには,次の文字を使用しないでください。
「;」,「?」,「:」,「@」,「&」,「=」,「+」,「$」,「,」,「<」,「>」,「#」,「%」,「"」,「{」,「}」,「|」,「^」,「[」,「]」,「`」
-
schemaLocation属性を指定する場合の注意を次に示します。
-
RFC2396で規定されている文字およびxsd:anyURIを満たす文字を使用してください。ただし,RFC2732(IPv6)は使用できません。
-
schemaLocation属性を絶対URIで指定する場合は,http,https,およびfileのプロトコルのどれかを使用してください。
schemaLocation属性の指定例を次に示します。
- (例1)ローカルにあるXMLスキーマを相対パスで指定
-
./example/sample.xsd
- (例2)ローカルにあるXMLスキーマをURL形式の絶対パスで指定
-
file:///C:/example/sample.xsd
- (例3)リモートにあるXMLスキーマをURLで指定
-
http://example.com/sample.xsd
-