ヘッダーをスキップ
Oracle Fusion Middleware Oracle TopLink開発者ガイド
11gリリース1(11.1.1)
B56246-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

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

この章では、XMLディスクリプタに固有のディスクリプタのオプションを構成する方法について説明します。

この章の内容は次のとおりです。

複数のディスクリプタ・タイプに共通のディスクリプタのオプションを構成する方法の詳細は、第119章「ディスクリプタの構成」を参照してください。

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

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

表52-1 XMLディスクリプタの構成オプション

構成オプション Oracle JDeveloper
TopLink Workbench Java

XMLスキーマ・ネームスペース(5.6.5項「XMLスキーマ・ネームスペースの構成方法」を参照)

サポートされている
サポートされている
サポートされている

XMLスキーマ参照(5.6.4項「XMLスキーマ参照の構成方法」を参照)

サポートされている
サポートされている
サポートされている

スキーマ・コンテキスト(52.2項「XMLディスクリプタのスキーマ・コンテキストの構成」を参照)

サポートされている
サポートされている
サポートされている

複合型anyType(52.3項「複合型anyTypeの構成」を参照)

サポートされている
サポートされている
サポートされていない

デフォルトのルート要素(52.4項「デフォルトのルート要素の構成」を参照)

サポートされている
サポートされている
サポートされている

文書保存(52.5項「文書保存の構成」を参照)

サポートされている
サポートされている
サポートされている

コメント(119.6項「ディスクリプタ・コメントの構成」を参照)

サポートされている
サポートされている
サポートされていない

クラス(5.7.2項「クラスの構成方法」を参照)

サポートされている
サポートされている
サポートされていない

子クラス・ディスクリプタに関する継承(119.20項「子(ブランチまたはリーフ)クラス・ディスクリプタに関する継承の構成」を参照)

サポートされている

サポートされている


サポートされている


親ディスクリプタに関する継承(119.21項「親(ルート)ディスクリプタに関する継承の構成」を参照)

サポートされている
サポートされている
サポートされている

サブクラスでの継承属性マッピング(119.23項「サブクラスでの継承属性マッピングの構成」を参照)

サポートされている

サポートされている


サポートされている


インスタンス化ポリシー(119.28項「インスタンス化ポリシーの構成」を参照)

サポートされている
サポートされている
サポートされている

コピー・ポリシー(119.29項「コピー・ポリシーの構成」を参照)

サポートされている
サポートされている
サポートされている

修正メソッド(119.35項「修正メソッドの構成」を参照)

サポートされている
サポートされている
サポートされている

マッピング(第121章「マッピングの構成」を参照)

サポートされている
サポートされている
サポートされている

詳細は、第50章「XMLディスクリプタの概要」を参照してください。

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

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

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

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

52.2.1 TopLink Workbenchを使用したXMLディスクリプタのスキーマ・コンテキストの構成方法

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

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

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

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

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

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

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

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

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

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

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

52.2.2 Javaを使用したXMLディスクリプタのスキーマ・コンテキストの構成方法

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

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

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

52.3 複合型anyTypeの構成

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

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

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

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

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

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

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

52.3.1 TopLink Workbenchを使用した複合型anyTypeの構成方法

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

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

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

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

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

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

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

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

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

52.4.1 TopLink Workbenchを使用したデフォルトのルート要素の構成方法

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

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

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

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

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

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

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

52.4.1.1 ルート要素の選択

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

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

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

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

52.5 文書保存の構成

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

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

52.5.1 TopLink Workbenchを使用した文書保存の構成方法

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

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

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

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

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

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

52.5.2 Javaを使用した文書保存の構成方法

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