Menu Close
第32章 データバインディングの基本コンセプト
概要
Apache CXF が型マッピングを処理する方法に適用される一般的なトピックは多数あります。
32.1. スキーマ定義の追加およびインポート
概要
Apache CXF は、include
および import
スキーマタグを使用して、スキーマ定義の追加およびインポートをサポートします。これらのタグを使用すると、外部ファイルまたはリソースからの定義をスキーマ要素のスコープに挿入できます。追加とインポートの本質的な違いは以下のとおりです。
- 追加の場合は、封入するスキーマ要素と同じターゲット namespace に属する定義を挿入します。
- インポートの場合は、封入するスキーマ要素とは異なるターゲット namespace に属する定義を挿入します。
xsd:include 構文
include ディレクティブの構文は以下のとおりです。
<include schemaLocation="anyURI" />
anyURI によって指定される参照スキーマは、封入するスキーマと同じターゲット namespace に属するか、いずれのターゲット namespace にも属さないかのどちらかでなければなりません。参照されるスキーマがいずれのターゲット namespace にも属していない場合、追加する際に封入するスキーマの namespace に自動的に追加されます。
例32.1「別のスキーマを追加するスキーマの例」に、別の XML スキーマドキュメントを追加する XML スキーマドキュメントの例を示します。
例32.1 別のスキーマを追加するスキーマの例
<definitions targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns:tns="http://schemas.redhat.com/tests/schema_parser" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns="http://www.w3.org/2001/XMLSchema"> <include schemaLocation="included.xsd"/> <complexType name="IncludingSequence"> <sequence> <element name="includedSeq" type="tns:IncludedSequence"/> </sequence> </complexType> </schema> </types> ... </definitions>
例32.2「追加されるスキーマの例」に、追加されるスキーマファイルの内容を示します。
例32.2 追加されるスキーマの例
<schema targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns="http://www.w3.org/2001/XMLSchema"> <!-- Included type definitions --> <complexType name="IncludedSequence"> <sequence> <element name="varInt" type="int"/> <element name="varString" type="string"/> </sequence> </complexType> </schema>
xsd:import 構文
import ディレクティブの構文は以下のとおりです。
<import namespace="namespaceAnyURI" schemaLocation="schemaAnyURI" />
インポートされる定義は namespaceAnyURI ターゲット namespace に属している必要があります。namespaceAnyURI が空白であるか、または未指定のままの場合、インポートされたスキーマ定義は修飾されません。
例32.3「別のスキーマをインポートするスキーマの例」に、別の XML スキーマをインポートする XML スキーマの例を示します。
例32.3 別のスキーマをインポートするスキーマの例
<definitions targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns:tns="http://schemas.redhat.com/tests/schema_parser" xmlns:imp="http://schemas.redhat.com/tests/imported_types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.redhat.com/tests/imported_types" schemaLocation="included.xsd"/> <complexType name="IncludingSequence"> <sequence> <element name="includedSeq" type="imp:IncludedSequence"/> </sequence> </complexType> </schema> </types> ... </definitions>
例32.4「インポートされるスキーマの例」に、インポートされるスキーマファイルの内容を示します。
例32.4 インポートされるスキーマの例
<schema targetNamespace="http://schemas.redhat.com/tests/imported_types" xmlns="http://www.w3.org/2001/XMLSchema"> <!-- Included type definitions --> <complexType name="IncludedSequence"> <sequence> <element name="varInt" type="int"/> <element name="varString" type="string"/> </sequence> </complexType> </schema>
参照されていないスキーマドキュメントの使用
サービスの WSDL ドキュメントで参照されないスキーマドキュメントで定義された型を使用するは、3 ステップのプロセスです。
-
xsd2wsdl
ツールを使用して、スキーマドキュメントを WSDL ドキュメントに変換します。 生成された WSDL ドキュメントの
wsdl2java
ツールを使用して、その型の Java を生成します。重要WSDL ドキュメントがサービスを定義していないことを示す警告が
wsdl2java
ツールから表示されます。この警告は無視してもかまいません。- 生成されたクラスをクラスパスに追加します。