ヘッダーをスキップ
Oracle TopLink開発者ガイド
10g(10.1.3.1.0)
B31861-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

29 XMLディスクリプタの構成

この章では、XMLディスクリプタを使用するために構成する必要のある様々なコンポーネントについて説明します。

詳細は、次を参照してください。

表29-1に、XMLディスクリプタに構成可能なデフォルトのオプションを示します。

XMLディスクリプタの構成の概要

表29-1に、XMLディスクリプタに構成可能なデフォルトのオプションを示します。

XMLディスクリプタのスキーマ・コンテキストの構成

TopLink Workbenchでは、XMLディスクリプタの参照クラスと、XMLプロジェクトに関連付けられているいずれか1つのスキーマに含まれる単純型または複合型とが、スキーマ・コンテキストを使用して関連付けられます(「XMLスキーマ参照の構成」を参照)。これにより、そのコンテキストでのマッピングに使用できる適切な属性がTopLink Workbenchに表示されます。

XMLディスクリプタのスキーマ・コンテキストの構成は、TopLink Workbenchの使用の有無に関係なく必要です。

TopLinkランタイムでは、そのスキーマ・コンテキストに基づいてXMLフラグメントが検証されます。

TopLink Workbenchの使用

XMLディスクリプタを特定のスキーマの複合型に関連付けるには、次の手順を実行します。

  1. ナビゲータでXMLディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブをクリックします。「ディスクリプタ情報」タブが表示されます。

    図29-1 「ディスクリプタ情報」タブ、「スキーマ・コンテキスト」オプション

    図29-1の説明が続きます
    「図29-1 「ディスクリプタ情報」タブ、「スキーマ・コンテキスト」オプション」の説明

「参照」をクリックして、このディスクリプタに関連付けるスキーマ要素を選択します。詳細は、「スキーマ・コンテキストの選択」を参照してください。

スキーマ・コンテキストの選択

「スキーマ・コンテキストの選択」ダイアログ・ボックスを使用して、特定のスキーマ要素を選択します(要素のマッピング時など)。

図29-2 「スキーマ・コンテキストの選択」ダイアログ・ボックス

図29-2の説明が続きます
「図29-2 「スキーマ・コンテキストの選択」ダイアログ・ボックス」の説明

スキーマ要素を選択し、「OK」をクリックします。

Javaの使用

Javaでスキーマ・コンテキストを使用してXMLディスクリプタを構成するには、例29-1のように、XMLSchemaReferenceメソッドsetSchemaContextを使用するディスクリプタ修正メソッドを作成します(「修正メソッドの構成」を参照)。

例29-1 スキーマ・コンテキストの構成

public void addToDescriptor(ClassDescriptor descriptor) {
    descriptor.getSchemaReference().setSchemaContext(xPath);
}

複合型anyTypeの構成

この属性はTopLink Workbenchにのみ適用されます。このオプションは、XMLスキーマの要素を表していないXMLディスクリプタに対して表示される、「スキーマ・コンテキストが指定されていません。」というエラーを解決するために使用します(「問題ウィンドウの使用」を参照)。

TopLink Workbenchでは通常、すべてのXMLディスクリプタにスキーマ・コンテキストがあるものと想定しています(「XMLディスクリプタのスキーマ・コンテキストの構成」を参照)。ところが、プロジェクト内のクラスがスキーマの要素に関連付けられていない場合は、そのクラスにはスキーマ・コンテキストはありません。

たとえば、例29-2のスキーマについて考えてみます。

例29-2 xsd:anyTypeを使用するスキーマ

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="customer" type="customer-type"/>
    <xsd:complexType name="customer-type">
        <xsd:sequence>
            <xsd:element name="contact-method" type="xsd:anyType"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="address">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="street" type="xsd:string"/>
                <xsd:element name="city" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="phone-number" type="xsd:string"/>
</xsd:schema>

要素contact-methodのタイプはxsd:anyTypeであるため、プロジェクトにはこのタイプを表すクラス(図29-3AnyTypeImplなど)が必要です。このクラスはスキーマ内のどの複合型とも関連付けられていないため、このクラスにはスキーマ・コンテキストはありません。この例では、AnyTypeImplクラスにこのオプションを選択します。

図29-3 xsd:anyTypeを表すクラス

図29-3の説明が続きます
「図29-3 xsd:anyTypeを表すクラス」の説明


注意:

「ワイルドカードへのマッピングの構成」も参照してください。

詳細は、「xs:anyとxs:anyTypeのサポート」を参照してください。

TopLink Workbenchの使用

複合型anyTypeのオプション

ディスクリプタが複合型anyTypeを表すように指定するには、次の手順を実行します。

  1. ナビゲータでディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブをクリックします。「ディスクリプタ情報」タブが表示されます。

    図29-4 「ディスクリプタ情報」タブ、「ディスクリプタは複合型"anyType"を表す」オプション

    図29-4の説明が続きます
    「図29-4 「ディスクリプタ情報」タブ、「ディスクリプタは複合型"anyType"を表す」オプション」の説明

「ディスクリプタは複合型"anyType"を表す」オプションを選択し、このディスクリプタをルート要素として指定します。

デフォルトのルート要素の構成

デフォルトのルート要素は、TopLinkが、ディスクリプタのオブジェクトをXML文書にマーシャリングおよびXML文書からアンマーシャリングする場合に、ルート要素として使用する名前です。コンポジット・リレーションシップ・マッピングにのみ使用されるディスクリプタの場合、デフォルトのルート要素は不要です。

詳細は、「デフォルトのルート要素」を参照してください。

TopLink Workbenchの使用

ディスクリプタのデフォルトのルート要素としてスキーマ要素を指定するには、次の手順を実行します。

  1. ナビゲータでディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブをクリックします。「ディスクリプタ情報」タブが表示されます。

    図29-5 「ディスクリプタ情報」タブ、「デフォルトのルート要素」オプション

    図29-5の説明が続きます
    「図29-5 「ディスクリプタ情報」タブ、「デフォルトのルート要素」オプション」の説明

「デフォルトのルート要素」オプションを選択し、このディスクリプタをルート要素として指定します。

「参照」をクリックして、このディスクリプタにルート要素として指定するスキーマ要素を選択します。詳細は、「ルート要素の選択」を参照してください。

ルート要素の選択

「ルート要素の選択」ダイアログ・ボックスを使用して、特定のルート要素を選択します。

図29-6 「ルート要素の選択」ダイアログ・ボックス

図29-6の説明が続きます
「図29-6 「ルート要素の選択」ダイアログ・ボックス」の説明

ルート要素を選択し、「OK」をクリックします。

文書保存の構成

TopLinkでは、オブジェクト・モデルへのマッピングに必須ではない、XMLソース内の付加的なデータ(コメント、処理命令、アンマップ要素など)を保存することができます。

これにより、XMLからオブジェクトへ、そして再びXMLへ返すラウンドトリップを、データの損失なしに実行できます。

TopLink Workbenchの使用

XMLソース文書全体を保存するには、次の手順を実行します。

  1. ナビゲータでディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブをクリックします。「ディスクリプタ情報」タブが表示されます。

    図29-7 「ディスクリプタ情報」タブ、「ドキュメントの保存」オプション

    図29-7の説明が続きます
    「図29-7 「ディスクリプタ情報」タブ、「ドキュメントの保存」オプション」の説明

「ドキュメントの保存」オプションを選択し、TopLinkで必須でない、XML文書内の付加的な情報(コメントなど)を保存します。

Javaの使用

TopLinkで必須でない、XML文書内の付加的な情報(コメントなど)を保存するようにXMLディスクリプタをJavaで構成するには、XMLDescriptorメソッドsetShouldPreserveDocumentを使用して、そのためのディスクリプタ修正メソッドを作成します(「修正メソッドの構成」を参照)。