第32章 基本的なデータバインディングの概念


概要

Apache CXF が型マッピングを処理する方法に適用される一般的なトピックがいくつかあります。

32.1. スキーマ定義の包含とインポート

概要

Apache CXF は、include および import スキーマタグを使用して、スキーマ定義の追加およびインポートをサポートします。これらのタグを使用すると、外部ファイルまたはリソースの定義をスキーマ要素のスコープに挿入できます。インクルードとインポートの本質的な違いは次のとおりです。

  • インクルードは、囲んでいるスキーマ要素と同じターゲット名前空間に属する定義を取り込みます。
  • インポートすると、囲んでいるスキーマ要素とは異なるターゲット名前空間に属する定義が取り込まれます。

xsd:include 構文

include ディレクティブの構文は次のとおりです。

<include schemaLocation="anyURI" />

anyURI によって指定された参照スキーマは、囲んでいるスキーマと同じターゲット名前空間に属しているか、ターゲット名前空間にまったく属していない必要があります。参照されるスキーマがどのターゲット名前空間にも属していない場合は、含まれるときに、それを囲むスキーマの名前空間に自動的に採用されます。

例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 syntax

import ディレクティブの構文は次のとおりです。

<import namespace="namespaceAnyURI"
        schemaLocation="schemaAnyURI" />

インポートされた定義は、namespaceAnyURI ターゲット 名前空間に属している必要があります。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 つのステップのプロセスです。

  1. xsd2wsdl ツールを使用して、スキーマドキュメントを WSDL ドキュメントに変換します。
  2. 生成された WSDL ドキュメントの wsdl2java ツールを使用してタイプの Java を生成します。

    重要

    WSDL ドキュメントがサービスを定義していないことを示す警告が wsdl2java ツールから表示されます。この警告は無視してかまいません。

  3. 生成されたクラスをクラスパスに追加します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.