この章では、JDeveloperによって提供されるXMLツールおよびエディタを使用してアプリケーションを作成および更新する方法について説明します。
この章には次の項が含まれます:
JDeveloperには、アプリケーション内でXMLファイルを使用するために必要なツールが用意されています。XMLソース・エディタ、XMLバリデータ、およびXMLスキーマを使用するためのツールがあります。ウィザードを使用してJSPX、XSD、XSQLおよび構成ファイルを作成し、XMLエディタでファイルを編集できます。
XMLファイル用のエディタには3種類あります。各エディタはそれぞれ固有の機能を備えています。
表22-1 XMLファイル・エディタ
エディタ | 説明 |
---|---|
XMLエディタ |
|
概要エディタ |
XML ( |
XSDビジュアル・エディタ |
XMLスキーマを作成または編集できます。XML文書の構造、内容およびセマンティクスが表示されます。詳細は、第22.6項「XSD文書およびコンポーネントの使用」を参照してください。 |
表22-2は、XMLファイルを使用する際に使用可能な編集機能の概要です。
表22-2 XML編集機能
機能 | 用途 |
---|---|
コード・インサイト |
入力時に、「<」(左山括弧)を入力して少し待つか、または[Ctrl]キーを押しながら[Space]キーを押すと(デフォルトのキーマッピングを使用している場合)、コード・インサイトを起動できます。 コード・インサイトには、構文に基づいて有効な要素がリスト表示されます。要素を選択した後、空白を入力してから間をおくか、[Ctrl]キーを押しながら[Space]キーを押し、選択可能な属性のリストを表示します。属性値に対する左引用符を入力すると、必要な値の型または使用可能な値のリストが表示されます。 |
XML検証 |
開いているXMLソース・エディタのウィンドウ、または「アプリケーション」ウィンドウで、XMLファイルを右クリックして「XMLの検証」を選択します。「XMLの検証」コマンドは、XMLファイルで定義されているJDeveloperに登録されているスキーマに対してXMLを検証します。 スキーマをJDeveloperに登録するには、「ツール」→「設定」→「XMLスキーマ」を選択します。XMLファイルでXMLネームスペースが定義されていない場合、ポップアップ・メニューのこのコマンドは使用できません。 |
クイック・フォーム・チェック |
ファイルの整形式をチェックするには、XMLファイルを右クリックして「メイク」を選択します。 |
XMLスキーマ・プリファレンス |
「プリファレンス」ダイアログの「XMLスキーマ」ページのオプションを使用して、現在登録されているすべてのXMLスキーマの表示、その他のネームスペースおよび要素のサポートのための新規スキーマの追加、ユーザー定義スキーマの削除、およびメモリーからのスキーマのアンロードを実行します。 「プリファレンス」ダイアログにアクセスするには、「ツール」→「プリファレンス」→「XMLスキーマ」の順に選択します。 |
XMLプリファレンス |
これらの機能は、XMLプリファレンス・ページでカスタマイズできます。「ツール」→「プリファレンス」→「コード・エディタ」→「XMLおよびJSP/HTML」の順に選択し、XMLプリファレンスを表示します。 「必須属性の自動挿入」が選択されている場合、要素の必須属性も挿入されます。 「終了タグの自動補完」が選択されている場合、開始タグを閉じると終了タグが自動的に挿入されます。たとえば、 |
「コンポーネント」ウィンドウ |
「ウィンドウ」→「コンポーネント」を選択して「コンポーネント」ウィンドウを開き、ドロップダウン・リストから使用可能なページを1つ選択します。たとえば、XSDファイルを編集している場合は、ウィンドウの「XMLスキーマ」ページから要素を選択できます。 |
「プロパティ」ウィンドウ |
「プロパティ」ウィンドウには、ファイル内の要素の属性が表示されます。「プロパティ」ウィンドウで属性の値を編集してファイルを更新できます。 |
「構造」ウィンドウ |
ファイルの要素は、構造ウィンドウに階層化されて表示されます。このウィンドウには、入力および編集の際に検出されたXML構文エラーも表示されます。要素またはエラーをダブルクリックすると、XMLエディタで編集できます。 |
XMLの検証 |
開いているXMLエディタのウィンドウ、または「アプリケーション」ウィンドウで、XMLファイルを右クリックして「XMLの検証」を選択します。このコマンドを選択すると、XMLファイルで定義されたスキーマに基づいてXMLが検証されます。XML制約および定義は検証されますが、XSDは検証されません。XMLファイルでXMLネームスペースが定義されていない場合、コンテキスト・メニューのこのコマンドは使用できません。 |
[F2]キー |
XMLスキーマを作成した後、「構造」ウィンドウで要素を選択し、[F2]を押します。これで、要素のフォーカスはXMLデザイン・エディタに設定されます。要素の新規テキストはXMLデザイン・エディタに自動的に入力できます。 |
属性の展開/縮小 |
|
表22-3に、XMLエディタのツールバーに表示されるアイコンを示します。
表22-3 XMLエディタのツールバーのアイコン
アイコン | 名前 | 説明 |
---|---|---|
|
検索([Ctrl]+[F]) |
XMLエディタに検索テキストを入力します。下矢印をクリックすると、追加パラメータ(大/小文字を区別する検索を実行する場合は「大/小文字の区別」、完全に一致する単語のみを検索する場合は「完全一致」、一致する場所を示すためにシェーディングを使用する場合は「発生を強調表示」など)を表示して設定できます。 |
|
次を検索([F3]) |
指定したパラメータに一致する次の箇所をファイル内で検索する場合にクリックします。 |
|
前を検索([Shift]+[F3]) |
指定したパラメータに一致する前の箇所をファイル内で検索する場合にクリックします。 |
XMLエディタには次の編集機能があります。
必須属性の自動挿入: タグを追加すると、そのタグに関連付けられている必須属性が自動的にコードに追加されます。
終了タグの自動補完: 開始タグを閉じると、自動的に終了タグが追加されます。たとえば、XMLファイルに<foo>
と入力すると、</foo>
が自動的に追加されます。
XMLエディタの編集オプションをカスタマイズするには、次のようにします。
「ツール」→「プリファレンス」を選択します。
「コード・エディタ」ノードを開きます。
「JSP/XML/HTML」ノードを選択します。
コード・エディタ - JSP/XML/HTMLページでオプションを選択します。
「OK」をクリックします。
XMLスキーマは、XMLファイルの要素を定義するものです。JDeveloperには、XML文書の構造、内容およびセマンティクスが視覚的に表示されるXSDビジュアル・エディタが用意されています。XSDビジュアル・エディタを使用して、新しいXMLスキーマ(.xsd
ファイル)を作成するか、既存のXMLスキーマを編集します。
XSD文書にコンポーネントを挿入するには、「コンポーネント」ウィンドウを使用するか、XSD文書内の任意の位置を右クリックします。
XMLスキーマ・コンポーネントは、図22-1のようにXSDファイルの上部に表示されます。 要素を右クリックして「プロパティ」を選択すると、スキーマ・ネームスペースを構成するためのダイアログが表示されます。
JDeveloperは、スキーマのターゲット・ネームスペースの変更や、ファセットを持つsimpleType要素のベース・タイプの変更など、XMLスキーマに対する様々なリファクタ操作をサポートしています。 詳細は、第11.5.27項「XMLスキーマのリファクタ」を参照してください。
XSDビジュアル・エディタを使用して、XMLスキーマの属性を作成し、プロパティおよびファセットを設定できます。図22-2は、XSDビジュアル・エディタの「設計」タブ内のXMLスキーマの例を示しています。
属性エディタでattribute2
の属性を編集できます。これは、図22-2ではunion
要素として表示されています。このエディタでは、次を実行できます。
要素の下にある使用可能な属性をすべて表示します。詳細の表示と非表示を切り替えるには、属性の横にあるプラスまたはマイナス記号をクリックします。
属性ノード内の属性表示のファセットおよびタイプ詳細をすべて表示します。
属性ノードを右クリックしたときにデフォルトの「中に挿入」メニューを有効なスキーマ・コンポーネント(union
など)とともに表示します。
内部の属性ノードを展開し、listやunionなどの子ノードが含まれるサブツリーを表示します。
XSDビジュアル・エディタでXMLスキーマを作成すると、「設計」タブ内のXMLソースが自動的に更新されるとともに、「構造」ウィンドウの内容が更新されます。例22-1に、図22-2に表示されているexample.xsd
ファイルのソースを示します。
例22-1 XMLソース
<?xml version="1.0" encoding="windows-1252" ?> xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org" targetNamespace="http://www.example.org" <elementFormDefault="qualified"> <xsd:complexType name="UnionTest"> <xsd:sequence> <xsd:element name="element1"> <xsd:complexType> <xsd:attribute name="attribute1"> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="element2"> <xsd:complexType> <xsd:attribute name="attribute2"> <xsd:simpleType> <xsd:restriction> <xsd:simpleType> <xsd:union/> </xsd:simpleType> <xsd:pattern value="abcd"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:schema>
エディタでコンポーネントまたは属性を選択すると、選択項目が青くハイライト表示されます。図22-3で選択されているsimpleType
コンポーネントは、単純型を定義しています。この要素を使用して、属性またはテキストのみのコンポーネントの値に関する制約と情報を指定します。ここでは、string型を制限しています。
choiceコンポーネントでは、図22-4に示すように、コンテナ・コンポーネント内に存在する<choice>宣言に含まれているコンポーネントのいずれか1つのみが許可されます。親の選択肢から複数の項目を使用するには、属性maxOccurs
を>1に設定します。
図22-2 choiceコンポーネント
?xml version="1.0" encoding="windows-1252" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org" targetNamespace="http://www.example.org" elementFormDefault="qualified"> <xsd:element name="choice"> <xsd:complexType> <xsd:choice> <xsd:element name="one"/> <xsd:element name="two"/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema>
図22-5に示すallコンポーネントでは、子コンポーネントを任意の順序で表示できること、および各子コンポーネントが0回または1回出現することを指定します。
図22-3 allコンポーネント
<?xml version="1.0" encoding="windows-1252" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org" targetNamespace="http://www.example.org" elementFormDefault="qualified"> <xsd:element name="all"> <xsd:complexType> <xsd:all> <xsd:element name="one"/> <xsd:element name="two"/> </xsd:all> </xsd:complexType> </xsd:element> </xsd:schema>
図22-6に示すsequenceコンポーネントでは、子コンポーネントを順番に表示することを指定します。各子コンポーネントは、0回以上何度でも出現できます。
例22-4 sequenceコンポーネント
<?xml version="1.0" encoding="windows-1252" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org" targetNamespace="http://www.example.org" elementFormDefault="qualified"> <xsd:element name="all"> <xsd:complexType> <xsd:sequence> <xsd:element name="one"/> <xsd:element name="two"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
図22-7に示すカーディナリティの例では、コンポーネントは表22-4に示す属性で表示されます。
表22-4 カーディナリティの表示
構成要素 | 表示 |
---|---|
必須コンポーネント(minOccurs=">0") |
実線で表示されます。 |
オプション・コンポーネント(minOccurs="0") |
点線で表示されます。 |
無限コンポーネント(maxOccurs="unbounded") |
コンポーネント・スタック数に無限大の記号が表示されます。複数回出現する可能性のあるコンポーネントは、コンポーネントのスタックとして表示されます。 コンポーネントの左側の数値のうち、コロンの前の数値はコンポーネントの最小出現回数(minOccurs)を示します。コロンの後の数値は、コンポーネントの最大出現回数(maxOccurs)を示します。 図22-7では、最大出現回数が無限なので、無限大の記号が表示されています。 |
コンポーネントの範囲 |
コンポーネント・スタック数が表示されます。図22-7のコンポーネントの場合、インスタンス文書内に2回以上出現する必要がありますが、最高で7回までとなります。 |
図22-8のcomplexTypeコンポーネントは、ベース型を拡張したもので、ベース型から属性と子を継承しています。黄色の背景色は、スキーマの別の部分で定義されている(complexTypeコンポーネントの下にある)baseType
への参照を示しています。コンポーネント属性は、次のように表示されます。
継承属性には、四角い記号が付きます。
オプション属性には、四角い記号が付きます。
必須属性には、オレンジ色のアスタリスクが付きます。
禁止属性には、オレンジ色のXが付きます。
属性グループ・コンポーネントは、一連の属性宣言をグループ化し、これらを複合型の定義にグループとして組み込めるようにします。
図22-9には、3つの属性グループが表示されています。
複数のattributeGroups
がある要素をスキーマに追加する場合、要素の属性をクリックしてドロップダウン・リストから選択することにより、要素の1つ以上のattributeGroups
を選択して追加できます。
unionコンポーネントでは、指定された単純データ型の値のコレクション(共用体)として単純型を定義します。図22-10では、unionは、iで始まる文字列すべてを表しています。
listコンポーネントでは、指定したデータ型の値のリストとして単純型のコンポーネントを定義します。図22-11では、このコンポーネントは、一連のshortコンポーネントの値オブジェクトを表しています。
XMLスキーマ・グループ内の1つの要素を別の要素で置換できます。置換グループ機能を使用する一連のXMLスキーマがある場合、必ず、置換グループの先頭を定義するXMLスキーマをロードしてから、置換グループに要素を配置するその他のスキーマをロードしてください。
たとえば、A.xsd
というXMLスキーマに次の要素が含まれており、
<element name="A"/>
別のB.xsd
というXMLスキーマに次の要素が含まれているとします。
<element name="B" substitutionGroup="namespaceForA:A" />
次のいずれかの条件を満たす必要があります。
SchemaGrammarProvider.add(A.xsd)
をコールしてからSchemaGrammarProvider.add(B.xsd)
をコールする。または、
B.xsd
にimport文またはinclude文が含まれており、そのschemaLocation
属性でA.xsd
への有効なパスが指定されている。
「設定」ダイアログで「XMLスキーマ」ページのオプションを使用して、現在登録されているすべてのXMLスキーマの表示、その他の名前空間と要素をサポートするための新しいスキーマの追加、ユーザー定義のスキーマの削除、およびスキーマのメモリーからの削除を行います。
スキーマの追加または変更時にJDeveloperによる自動検証が行われます。
XMLスキーマをインポートおよび登録するには、次のようにします。
メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「XMLスキーマ」ノードを選択します。
「追加」をクリックし「スキーマの追加」ダイアログを開きます。このダイアログで、新しいスキーマを指定してユーザー・スキーマ・リストに追加します。
追加するXMLスキーマ・ファイルの名前と場所を「ファイルシステムもしくはURLからスキーマを追加」フィールドに入力します。
ファイル拡張子を「拡張子」フィールドに入力し、特定のファイル・タイプに対してスキーマを登録します。
JDeveloperでは、この拡張子を使用してメモリーにスキーマを効率的にロードし、スキーマ内の項目に基づいて自動生成したコンポーネント・ウィンドウ・ページを表示します。
「OK」をクリックします。
スキーマの追加時にJDeveloperによる自動検証が行われます。
新しいスキーマが「ユーザー定義のXMLスキーマ」リストに追加されたかどうかを確認して「OK」をクリックします。
ヒント: 「削除」ボタンで削除できるのは、ユーザー定義のスキーマのみです。 スキーマが変更された場合は、「キャッシュのクリア」ボタンを使用して、現在ロードされているすべてのスキーマをメモリーから削除する必要があります。その後、変更されたスキーマを含むすべての必要なスキーマが再ロードされます。 |
JDeveloperでは、JAXB (Java Architecture for XML Binding)を使用して、XMLスキーマからJavaクラスを生成できます。JAXBを使用すると、XMLを知らなくてもXMLデータおよび処理機能をJavaアプリケーションに簡単に組み込むことができます。必要な注釈を含むJAXB 1.0または2.0コンテンツ・モデルをXMLスキーマから生成できます。
XMLスキーマに対してJAXBバインディング・コンパイラを実行すると、JAXBパッケージ、クラスおよびインタフェースが生成されます。生成されたJAXBパッケージおよびJAXBユーティリティ・パッケージをバインディング・フレームワークで使用すると、XMLコンテンツをアンマーシャリング、マーシャリングおよび検証できます。
JAXBを使用してXMLスキーマからJavaクラスを生成するには、次のようにします。
メイン・メニューから「ファイル」→「新規」→「ギャラリから」→「ビジネス層」→「TopLink/JPA」を選択し、「XMLスキーマからのJAXB 1.0コンテンツ・モデル」または「XMLスキーマからのJAXB 2.0コンテンツ・モデル」を選択し、コンパイル・ダイアログを開きます。
スキーマ・ファイルおよび必要に応じて使用するJAXBカスタマイズ・ファイル、および生成されたクラスの追加先のパッケージを選択します。
JAXBパッケージと生成されたクラスがApplication Resourcesフォルダに追加されます。
XMLスキーマ・ファイル(.xsd
ファイル)およびコンポーネントを使用するには、XSDビジュアル・エディタまたは設計構造ウィンドウを使用します。デフォルトでは、新しいスキーマ・ファイルは、XSDビジュアル・エディタでフォーカスのある状態で開かれます。
「アプリケーション」ウィンドウでファイルをダブルクリックすると、デフォルトのエディタが開くか、「設計」タブで前面に表示されます。「ソース」タブをクリックすると、XMLソース・エディタでファイルが開きます。いずれかのエディタで加えた変更は、もう一方のエディタに自動的に反映されます。
スキーマ・ファイル(.xsd
)をビジュアル・エディタとソース・エディタで同時に編集するには、どちらか一方のエディタでページを開き、分割線を使用して他方のエディタでもう1つのページ・ビューを開きます。
2つのエディタにスキーマ・ファイルを表示するには、次のようにします。
ファイルを水平方向に分割するには、垂直スクロール・バーのすぐ上(ウィンドウの右上隅)でスプリッタをクリックし、下にドラッグします。
ファイルを垂直方向に分割するには、水平スクロール・バーのすぐ右(ウィンドウの右下隅)でスプリッタをクリックし、左にドラッグします。
XSDビジュアル・エディタの「設計」タブはイメージとして作成できます。これにより、このイメージをファイルまたは出力として他のユーザーと共有できます。
サポートされているイメージ・フォーマットは、.svg
、.svgz
、.jpg
および.png
です。
XSDエディタの「設計」タブをイメージとして保存するには、次のようにします。
「アプリケーション」ウィンドウで、XSDビジュアル・エディタに表示する.xsd
ファイルをダブルクリックします。
XSDビジュアル・エディタで「設計」タブをクリックします。
図22-12に示すような.xsd
ファイルの設計ビューが表示されます。
「設計」タブの任意の場所を右クリックし、「ダイアグラムの公開」を選択します。
名前、ダイアグラムを保存する場所のパス、およびイメージ・タイプを入力します。
注意: 保存するダイアグラムが大きすぎる場合、イメージを XSDビジュアル・エディタ内でノードを右クリックすると、現在のノードとその子ノードのみがイメージとして保存されます。 |
XSDビジュアル・エディタでは、グラブ・スクロール操作を使用して、スクロールバー付きで表示されているXMLスキーマ内を簡単に移動できます。グラブ・スクロールでは、小さな手の形のカーソルを使用してXMLスキーマ・ページをつかみ、エディタ・ウィンドウ内部でドラッグします。
グラブ・スクロールを使用してXMLスキーマ内を移動するには、次のようにします。
XSDビジュアル・エディタで、[Space]を押したままの状態にします。
カーソルが、開いた手の形に変化します。
マウスの左ボタンを押したままの状態にします。
手が閉じて、XMLスキーマ・ページをつかみます。
マウスを使用して、エディタ・ウィンドウ内部でXMLスキーマ・ページを移動します。
マウスの左ボタンを放すと、XMLスキーマ・ページも放れます。
グラブ・スクロールを終了するには、[Space]を放します。
XSDビジュアル・エディタまたは設計構造ウィンドウを使用している場合、XSDコンポーネントを展開または折りたたんで子コンポーネントの表示を切り替えることや、コンテナ・コンポーネントを折りたたんで上位レベルのスキーマ・ビューを作成できます。
親コンポーネントの「+」(プラス)記号をクリックすると、親コンポーネントの1つ下のレベルが展開されます。
親コンポーネントの「-」(マイナス)記号をクリックすると、親コンポーネントの下のすべてのレベルを折りたたむことができます。
[Ctrl]キーを押しながら[*]キー(キーボードのテンキーにある[*]キー)を押すと、スキーマ内のすべての親コンポーネントが展開されます。このビューは非常に大きい場合があるので注意してください。
ズーム操作を使用すると、XSDビジュアル・エディタのXMLスキーマの表示を拡大(ズーム・イン)または縮小(ズーム・アウト)できます。拡大または縮小表示するXMLスキーマの領域にカーソルを置いてから、次のようにします。
拡大するには[Ctrl]キーを押しながら[+]キーを押します。キーボードのテンキーにある[+]キーも使用できます。
縮小するには[Ctrl]キーを押しながら[-]キーを押します。キーボードのテンキーにある[-]キーも使用できます。
エディタで最もよく行う操作の1つは、コンポーネントの選択です。コンポーネントを選択する目的には、次のようなものがあります。
プロパティの編集
コンポーネントの移動
コンポーネントの削除
別のコンポーネントを挿入する位置の選択
単一のコンポーネントを子なしで選択できます。
単一のコンポーネントを選択するには、次のようにします。
コンポーネントをクリックします。
子コンポーネントを含むコンポーネントを選択すると、子コンポーネントもすべて選択されます。親要素をコピー、移動または削除すると、その子要素もすべてコピー、移動または削除されます。
ヒント: XSDビジュアル・エディタでXSDコンポーネントをダブルクリックすると、そのコンポーネントの「プロパティ」ウィンドウが表示されます。 |
1つのコンポーネントをその子とともに選択したり、複数のコンポーネントを選択したりできます。
複数のコンポーネントを選択するには、次のようにします。
最初のコンポーネントをクリックします。
[Ctrl]キーを押したままの状態にします。
その他の選択するコンポーネントをクリックします。
他のコンポーネントは選択したまま1つのみ選択を解除するには、[Ctrl]キーを押したままそのコンポーネントをもう一度クリックします。
注意: 削除以外の目的で隣接しない複数のコンポーネントを選択した場合、予想外の結果になることがあります。たとえばスキーマ階層の異なるレベルにあるコンポーネントを選択し、スキーマ・ページ内の別の場所に移動またはコピーした場合、コンポーネント間の相対的な位置関係が失われる可能性があります。 XSDビジュアル・エディタでは、コンテナ・コンポーネントをその子も含めて選択した上で、さらに1つ以上の子を個別に選択できます。この場合、明示的に選択した子要素は、2回選択したことになります。このようにして選択したコンポーネントをコピー・アンド・ペーストすると、二重に選択された子はコピーされた親の子として1回、親に対する同レベルのコンポーネントとして1回、合計2回貼り付けられます。 |
XSDビジュアル・エディタでコンポーネントを選択すると、そのコンポーネントが青色で表示されます。選択したコンポーネントに子コンポーネントがある場合は、すべて青色で表示されます。
「構造」ウィンドウで選択すると、コンポーネントがハイライト表示されます。ただし、子コンポーネントを持つコンポーネントを選択すると、子も選択されます。親コンポーネントを削除または移動すると、子コンポーネントもすべて削除または移動されます。
コンポーネントを選択すると、別のコンポーネントを挿入できる位置も選択することになります。詳細は、第22.6.8項「XSDコンポーネントのターゲット位置の選択方法」を参照してください。
ヒント: マウスのポインタをコンポーネント上に移動すると、コンポーネント名がツールチップに表示されます。 XSDビジュアル・エディタで選択したコンポーネントは、構造ウィンドウの設計ビューおよびソース・ビューでも選択されます。またその逆も同様です。選択している要素と挿入位置を両方のツールで確認できます。 ステータス・バーには、選択したコンポーネントの挿入位置ポイントが明示的に表示されます。 |
XSDビジュアル・エディタまたは構造ウィンドウ(設計またはソース・ビュー)でXSDコンポーネントを挿入、コピーまたは移動する場合、その操作の対象となるノードに関連するターゲット位置を選択する必要があります。ノードに対して選択できるターゲット位置は、前、後ろおよび内側です。
ターゲット位置を選択するには、次のようにします。
次のいずれかを実行します。
ノードをクリックしてターゲット位置を選択します。
ターゲット位置にコンポーネントをドロップする際に、次のいずれかの操作を行います。
ターゲット・ノードの前にコンポーネントを挿入するには、実線の横線が表示されるまで(ビジュアル・エディタの場合)、または上矢印付きの横線が表示されるまで(「構造」ウィンドウの場合)そのコンポーネントをノードの上部にドラッグしてマウス・ボタンを放します。
ターゲット・ノードの後にコンポーネントを挿入するには、実線の横線が表示されるまで(ビジュアル・エディタの場合)、または下矢印付きの横線が表示されるまで(「構造」ウィンドウの場合)そのコンポーネントをノードの下部にドラッグしてマウス・ボタンを放します。
挿入するコンポーネントがターゲット・ノードに含まれるようにするには、ノードの上にドラッグし、ノードがボックスで囲まれた時点でマウスのボタンを放します。このターゲット位置は、子ノードを含むことが可能なノードでのみ使用できます。
ポップアップ・メニューを使用してターゲット位置を選択する場合は、ターゲット・ノードを右クリックし、オプションを選択してからコンポーネントを選択します。表22-5にオプションを示します。
表22-5 ターゲット位置のオプション
オプション | 説明 |
---|---|
<component>の前に挿入 |
選択したノードの前にコンポーネントが挿入されます。 |
<component>の中に挿入 |
選択したノードの内側(下)にコンポーネントが挿入されます。 |
<component>の後ろに挿入 |
選択したノードの後ろにコンポーネントが挿入されます。 |
すべてのオプションを常に使用できるわけではありません。オプションを選択するとサブメニューが表示されるため、そこからコンポーネント・リストを選択し、さらにリストから目的のコンポーネントを選択します。選択したノードによっては、そのノードの内側に挿入できる1つ以上のコンポーネントがサブメニューに表示されます。
注意: 「構造」ウィンドウの設計またはソース・ビューで選択したターゲット位置はXSDビジュアル・エディタでも選択され、その逆も同様です。これにより、視覚的にも階層的にも挿入位置を確認できます。選択内容は、JDeveloperウィンドウ一番下のステータス・バーにも明示的に表示されます。 |
XSDビジュアル・エディタおよび「構造」ウィンドウでは、コピーまたはカット・アンド・ペーストでもXSDコンポーネントを挿入できます。カット・アンド・ペーストでは、複数のコンポーネントを一度に挿入できます。
注意: XMLスキーマ階層の異なる場所からコピーした複数のコンポーネントを貼り付けた場合、予想外の結果になることがあります。 |
XSDコンポーネントを挿入するには、「コンポーネント」ウィンドウからドラッグするか、ポップアップ・メニューを使用します。ビジュアル・エディタまたは「構造」ウィンドウでターゲット位置を選択し、「コンポーネント」ウィンドウでコンポーネントをクリックすることもできます。
「コンポーネント」ウィンドウを使用してXSDコンポーネントを挿入するには、次のようにします。
XSDビジュアル・エディタまたは「構造」ウィンドウで、コンポーネントを挿入する場所を選択します。構造ウィンドウでは、目的のノードを見つけるためにノードを開くことが必要になる場合があります。
「コンポーネント」ウィンドウで、ドロップダウン・リストからXSDコンポーネントのリストを選択します。リストから目的のコンポーネントをドラッグし、XSDビジュアル・エディタまたは「構造」ウィンドウの目的のターゲット位置へドロップします。
コンポーネントを切り取ると、エディタから削除され、(システム・クリップボードではなく) JDeveloperからのみアクセス可能なローカル・クリップボードに置かれます。コンポーネントを貼り付けずに終了した場合、切り取ったコンポーネントは失われます。
切取り、コピーおよび貼付けは、同じプロジェクトまたは異なるプロジェクトのファイル間で実行できます。
コンポーネントの削除では、内容を変更せずにコンポーネントが削除されます。切取りコマンドを使用してアイテムを永久に削除する習慣がある場合、間違ってクリップボードの保存しておきたい内容を置換してしまう可能性があります。詳細は、第22.6.12項「XSDコンポーネントの削除方法」を参照してください。
1つ以上のコンポーネントを切り取るには、次のようにします。
ビジュアル・エディタまたは「構造」ウィンドウで、切り取るXSDコンポーネントを選択します。
次のいずれかを実行します。
[Ctrl]キーを押しながら[X]キーを押します。
右クリックして「切取り」を選択します。
メイン・メニューから、「編集」→「切取り」を選択します。
ビジュアル・エディタまたは「構造」ウィンドウでXSDコンポーネントをコピーできます。切取り、コピーおよび貼付けは、同じプロジェクトまたは異なるプロジェクトのファイル間で実行できます。
1つ以上のコンポーネントをコピーするには、次のようにします。
ビジュアル・エディタでXSDコンポーネントを選択します。
次のいずれかを実行します。
[Ctrl]キーを押しながら[C]キーを押します。
右クリックして「コピー」を選択します。
メイン・メニューから、「編集」→「コピー」を選択します。
[Ctrl]を押しながら、選択したコンポーネントのコピーをターゲット位置までドラッグします。
XSDビジュアル・エディタまたは構造(設計ビューまたはソース・ビュー)ウィンドウでXMLスキーマからコンポーネントを削除できます。コンポーネントを削除すると、ソース・コードから該当する行が削除されます。
1つ以上のXSDコンポーネントを削除するには、次のようにします。
ビジュアル・エディタで削除する1つ以上のXSDコンポーネントを選択します。詳細は、第22.6.6項「XSDコンポーネントの選択方法」を参照してください。
次のいずれかを実行します。
[Delete]キーを押します。
[Ctrl]キーを押しながら[X]キーを押します。
右クリックして「削除」を選択します。
メイン・メニューから、「編集」→「削除」を選択します。
XSDビジュアル・エディタや「構造」ウィンドウから切り取った要素またはコピーした要素は、アプリケーション内の他のXSDファイルに貼り付けることができます。詳細は、第22.6.8項「XSDコンポーネントのターゲット位置の選択方法」を参照してください。
切取り、コピーおよび貼付けは、同じプロジェクトまたは異なるプロジェクトのファイル間で実行できます。
要素を貼り付けるには、次のようにします。
ファイルを開きます。
要素を貼り付ける挿入ポイントを選択します。
次のいずれかを実行します。
[Ctrl]キーを押しながら[V]キーを押します。
右クリックして「貼付け」を選択します。
「編集」→「貼付け」を選択します。
ビジュアル・エディタまたは構造ウィンドウのどちらかでコンポーネントを移動することも、同時に使用して2つのエディタ間でコンポーネントを移動することも可能です。
一度に1つまたは複数のコンポーネントを移動できます。ただし、隣接していない複数のコンポーネント、またはスキーマ階層内の別々のレベルにある複数のコンポーネントを選択して移動した場合、予想外の結果になることがあります。
XSDビジュアル・エディタまたは「構造」ウィンドウ(「設計」ビューまたは「ソース」ビュー)では、XSDコンポーネントをドラッグによって新しい挿入ポイントに移動できます。
ドラッグしてコンポーネントを移動するには、次のようにします。
次のいずれかを実行します。
ビジュアル・エディタまたは構造ウィンドウで、元の位置からターゲット位置までコンポーネントをドラッグします。詳細は、第22.6.8項「XSDコンポーネントのターゲット位置の選択方法」を参照してください。
右クリックし、コンポーネントを元の位置から挿入位置までドラッグします。ポップアップ・メニューから「ここにあるノードの移動」を選択します。
XSDコンポーネントをカット&ペーストで、同じプロジェクトまたは異なるプロジェクト内の他のファイルの有効な挿入ポイントに移動できます。詳細は、第22.6.6項「XSDコンポーネントの選択方法」を参照してください。
カット&ペーストでコンポーネントを移動するには、次のようにします。
次のいずれかを実行します。
コンポーネントを切り取ります。次に、ビジュアル・エディタまたはスキーマ構造ウィンドウの別の場所へ貼り付けます。
コンポーネントを切り取ります。次に、同じプロジェクトまたは別のプロジェクト内の他のファイルへ貼り付けます。
注意: 選択したコンポーネントとその子コンポーネントすべてが、新しいターゲット位置へ移動します。 |
「プロパティ」ウィンドウに、選択したXSDコンポーネントのプロパティが表示されます。「プロパティ」ウィンドウを使用して、XMLスキーマ内の任意のコンポーネントのプロパティ値を設定または変更します。設定済のプロパティ値には緑色のボックスが表示されます。
メイン・メニューから「編集」→属性の変更を元に戻すを選択します。
プロパティをデフォルト設定に戻すには、プロパティの横の下矢印をクリックし、「デフォルトにリセット」を選択します。
コンポーネントのプロパティを設定するには、次のようにします。
XMLスキーマが開いた状態で、コンポーネントを選択します。
「プロパティ」ウィンドウにプロパティ値が表示されます。「プロパティ」ウィンドウが表示されていない場合は、「表示」→「プロパティ・ウィンドウ」を選択するか、ショートカット([Ctrl]+[Shift]+[I])を使用します。
設定するプロパティが表示されるまでスクロールし、マウスまたは矢印キーでそれを選択します。
「プロパティ」ウィンドウの下部にプロパティの簡単な説明が表示されます。
ヒント: 長いリストの中からプロパティを素早く見つけるには、「プロパティ」ウィンドウのツールバーにある検索ボタンをクリックします。「検索」テキスト・フィールドにプロパティ名を入力し、[Enter]キーを押します。 |
右側の列に、表22-6に示すいずれかのプロパティ値を入力します。
表22-6 プロパティ値
フィールド | 説明 |
---|---|
テキスト・フィールド |
そのプロパティに対する文字列値(テキスト値や数値など)を入力し、 |
下矢印付きの値フィールド |
下矢印をクリックしてリストから値を選択し、[Enter]キーを押します。 |
省略記号(...)付きの値フィールド |
省略記号をクリックし、該当するプロパティのエディタを表示します。プロパティ・エディタで値を設定し、「OK」をクリックします。 |
ヒント: XSDコンポーネントをダブルクリックするか、XSDコンポーネントを右クリックして「プロパティ」を選択すると、そのコンポーネントのプロパティ・エディタが表示されます。 プロパティ・エディタで属性を選択すると、エディタの下のステータス領域に簡単な説明が表示されます。 コンポーネント・リファレンスのトピックへのリンクを表示するには、プロパティ・エディタの「ヘルプ」をクリックします。 |
複数のコンポーネントを選択している場合、デフォルトでは選択中のコンポーネントのプロパティがすべて「プロパティ」ウィンドウに表示されます。「プロパティ」ウィンドウの「統合して表示」ボタンをクリックすると、選択中のコンポーネントのプロパティをすべて表示するオプションと、選択中のコンポーネントに共通なプロパティのみを表示するオプションを切り替えることができます。イタリック・フォントで表示されている値は、共通のプロパティに異なる値が設定されていることを示します。
複数コンポーネントのプロパティを設定するには、次のようにします。
[Ctrl]キーを押しながら各コンポーネントを選択します。
「プロパティ」ウィンドウで目的のプロパティを選択して編集します。
値がイタリック・フォントで表示されている場合、選択中のコンポーネントによって値が異なります。共有プロパティの値を編集すると、選択した全コンポーネントの値が同じになります。
JDeveloperには、XMLベースのXLIFFテクノロジに基づいてアプリケーションに対する完全なローカライゼーションをサポートするツールがあります。XLIFFは、アプリケーションを国際化する際に翻訳者およびベンダーによって使用されるデータを保持するタグおよび属性を提供することにより、完全なローカライゼーション・プロセスをサポートしています。
XLIFFの詳細は、OASISオープン標準のWebサイト(http://www.oasis-open.org/home/index.php
)を参照してください。
新規XLIFFファイルを作成するには、次のようにします。
「ファイル」メニュー→「新規」→「ギャラリから」→「一般」→「XML」→XMLローカライゼーション・ファイルを選択します。
XLIFFファイルの主な要素は、trans-unit要素です。これらの要素には、ローカライゼーション・テキストとその翻訳が格納されます。これらの要素は、セグメント(通常は、独立して適切に翻訳できるソース・ファイル内のセンテンス)を表します。trans-unit要素には、source、target、alt-trans、およびいくつかの他の要素が含まれます。
この他にも、レビュー・コメント、個別文字列の翻訳ステータス、およびソース・センテンスの文字数などのメトリック用の要素があります。XLIFFファイルは、1つ以上のファイル要素で構成されます。これらにはそれぞれ、ヘッダー・セクションと本体セクションがあります。ヘッダーには、連絡先情報、プロジェクト・フェーズ、参考資料へのポインタ、およびスケルトン・ファイル上の情報などのプロジェクト・データが含まれます。
JDeveloperでは、リソース・バンドルを使用して、XLIFFファイルを含むすべてのローカライゼーション情報を保持します。JSFページのコンテンツを作成すると、リソース・バンドルはこのプロジェクト内で自動的に作成されます。
XSQLサーブレットを使用してデータ・バインドされたXMLページの作成を簡略化する完全な開発環境が用意されています。XSQLサーブレットを使用すると、XSQLページをクライアントとして作成および使用できます。これらのページは、埋込みSQL問合せおよびその他のデータ操作言語(DML)文を使用してXMLで作成されます。アクション・ハンドラを使用して、ファイルへのXMLデータの書込みなど、SQLよりも多くの機能を提供することもできます。
表22-7に、XSQLサーブレット・アプリケーション内の論理レイヤーを示します。
表22-7 XSQLサーブレットの論理レイヤー
レイヤー | 説明 |
---|---|
クライアント |
XSQLページは、SQLが埋め込まれたXMLを使用して、データの問合せおよび取得を処理します。データを表示するには、HTML、Wireless Markup Language (WML)などの別の形式にXMLデータを変換する必要があります。XMLをこれらの言語に変換するためのXSLスタイルシートを作成できます。 |
Webサーブレット内のXSQLサーブレット |
サーブレットはXML SQL Utilityを使用してデータベースと対話します。 |
ビジネス・ロジック層 |
Business Components for Java層を使用して、データへのアクセスおよび変更を行うこともできます。 |
データベース |
JDBC 2.0ドライバをサポートするすべてのデータベースを使用できます。 |
XSQLサーブレットのサポート内容は次のとおりです。
「コンポーネント」ウィンドウでのXSQLタグ。
XSQLページを自動作成します。
XSQLライブラリをインクルードします。
クラスパスでXSQLConfig.xml
を提供します。必要に応じて変更できます。
XSQLページでビジネス・ロジック層を使用してデータにアクセスできるように、ビジネス・コンポーネント・アクション・ハンドラ・タグを提供します。
XSQLサーブレットでは、単純かつ生産的な方法で、データベースとXMLをやり取りできます。単純なスクリプトを使用することで、次の操作を実行できます。
単純または複雑なXML文書の生成
XSLスタイルシートの適用によるテキスト形式の生成
XML文書の解析とデータベースへのデータの格納
複雑な動的Webアプリケーションの作成(コードのプログラミングなし)
例22-5のemp.xsql
ファイルはその例です。
例22-5 emp.sqlファイル
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="emp.xsl"?> <FAQ xmlns:xsql="urn:oracle-xsql" connection = "scott"> <xsql:query doc-element="EMPLOYEES" row-element="EMP"> select e.ename, e.sal, d.dname as department from dept d, emp e where d.deptno = e.deptno </xsql:query> </FAQ>
例22-6でXMLを生成します。
例22-6 XMLファイル
<EMPLOYEES> <EMP> <ENAME>Scott</ENAME> <SAL>1000</SAL> <DEPARTMENT>Boston</DEPARTMENT> </EMP> <EMP> ... </EMP> </EMPLOYEES>
XSQLサーブレットの詳細は、Oracle10iのドキュメントを参照してください。
ウィザードを使用してXSQLファイルを作成すると、untitled#.xsql
という名前のスケルトン・ファイルがプロジェクトに追加され、XMLエディタで開きます。このエディタでコードを入力したり、「コンポーネント」ウィンドウからタグを選択して追加したり、独自のスタイルシート情報でファイルを変更したりできます。
XSQLファイルを作成するには、次のようにします。
「アプリケーション」ウィンドウで、新しいXSQLページを作成するプロジェクトを選択します。
「ファイル」→「新規」→「ギャラリから」を選択します。
「カテゴリ」ツリーで、「General」を開いて「XML」を選択します。
「項目」リストで「XSQLファイル」をダブルクリックします。
XMLエディタの「構造」ウィンドウ・ビューと「プロパティ」ウィンドウでは、構文のハイライト表示がサポートされています。また、編集時に「コンポーネント」ウィンドウからタグを選択してページに挿入することもできます。
XMLエディタを使用してXSQLファイルを編集するには、次のようにします。
「アプリケーション」ウィンドウで、XSQLファイルをダブルクリック/右クリックします。
エディタの「ソース」タブを選択します。
「表示」→コンポーネント・ウィンドウを選択して「コンポーネント」ウィンドウを開き、このウィンドウのドロップダウン・リストから「XSQL」タグ・ページを選択します。ウィンドウからXSQLタグを選択します。
入力時に、<(開き山カッコ)を入力して間をおくか、[Ctrl]キーを押しながら[Space]キー(デフォルトのキーマッピングを使用している場合)を押すと、コード・インサイトを起動できます。コード・インサイトにより、有効なタグのリストが表示されます。
タグを選択した後にスペースを入力してから時間を置くか、[Ctrl]キーを押しながら[Space]キーを押すと、有効な属性がリスト表示され、ここから選択できます。属性値に対する左引用符を入力すると、ヒント・インサイトで必要な値の型が表示されます。
編集中または編集後、ファイル内で右クリックして「XMLの自動インデント」を選択すると、ファイルを正しくインデントできます。
任意のタグを右クリックして「構造ウィンドウ内で検索」を選択し、「構造」ウィンドウでそのタグをハイライトすることもできます。
XSQLファイルをチェックして、エラーを検索するために、ファイルが製形式のXML文書かどうかを確認できます。エラーは、ログの「XML検証エラー」タブに表示されます。
XSQLファイルの構文をチェックする手順は、次のとおりです。
「アプリケーション」ウィンドウで、XSQLファイルを右クリックして 「XMLの検証」を選択します。
注意: XMLファイルにXMLネームスペースが定義されていない場合、このポップアップ・メニューの「XMLの検証」コマンドは無効になります。 |
XSQLタグを使用して、XSQLサーブレット用のXMLベース・クライアントを作成できます。XSQLサーブレットを使用すると、XML形式でデータベースとデータを簡単にやり取りできます。次の手順は、XSQL Queryタグを使用してデータを表示する方法を示しています。
データベースに直接アクセスするXSQLサーブレット・クライアントを作成する手順は、次のとおりです。
「アプリケーション」ウィンドウでプロジェクトを選択し、「ファイル」→「新規」→「ギャラリ」を選択します。
「カテゴリ」リストで、「一般」を選択し、「XML」を選択します。
「項目」リストで「XSQLファイル」をダブルクリックします。
これにより、untitled#.xsql
という名前のスケルトンXSQLファイルがプロジェクトに追加されます。
「アプリケーション」ウィンドウで、新しいXSQLファイルをダブルクリックしてエディタで開きます。
<page xmlns:xsql="urn:oracle-xsql">
タグの後の空白行にカーソルを置きます。
「表示」→コンポーネント・ウィンドウを選択して、「コンポーネント」ウィンドウを開きます(表示されていない場合)。
「コンポーネント」ウィンドウのドロップダウン・リストからXSQLタグを選択します(表示されていない場合)。
「コンポーネント」ウィンドウからQueryタグを選択します。
QueryタグによりSQL文が実行され、結果セットがXML形式でインクルードされます。
表示されるダイアログで、属性の値を入力したり、デフォルト値を変更できます。[F1]を押すか、ダイアログで「ヘルプ」をクリックして、タグおよびその属性に関するヘルプを表示します。
属性を入力した後、「次へ」をクリックします。
「接続の選択内容」ダイアログで、接続が選択されていない場合は選択し、「次へ」をクリックします。
「問合せ」ダイアログで、実行するSQL文を入力し、「次へ」をクリックします。
たとえば、select * from customer
と入力すると、入力した属性に基づいて、顧客データベースのすべてのレコードが表示されます。
「終了」をクリックします。
入力したQueryタグと属性は、XSQLページに表示されます。
「ファイル」→「すべて保存」を選択して、これまでの作業内容を保存します。
「アプリケーション」ウィンドウでXSQLファイルを右クリックして、「<filename>.xsqlの実行」を選択すると、RAW XMLデータがWebブラウザに表示されます。
スタイルシートを使用してXMLデータの書式を設定できます。メッセージ・サービスを介してXMLデータを別のアプリケーションに渡すこともできます。
XSQLサーブレットを使用して、ビジネス・コンポーネント用にXMLベースのクライアントを作成できます。次の手順では、ViewObject Show
タグを使用して作成したビジネス・コンポーネント・プロジェクトに、XSQLクライアントをバインドして、XML形式でビュー・オブジェクトのデータを表示する方法を説明します。ViewObject Update
タグを使用して、ビュー・オブジェクトを挿入、更新および削除することもできます。
ビジネス・コンポーネント用XSQLサーブレット・クライアントを作成するには、次のようにします。
「アプリケーション」ウィンドウでプロジェクトを選択し、「ファイル」→「新規」→「ギャラリから」を選択して新規のギャラリを開きます。
「カテゴリ」ツリーで、「一般」を開いて「プロジェクト」を選択します。
「項目」リストで「空のプロジェクト」をダブルクリックし、「新規プロジェクト」ダイアログを開きます。
「新規プロジェクト」ダイアログを入力し、「OK」をクリックして空のプロジェクトをアプリケーションに追加します。
「アプリケーション」ウィンドウで新規プロジェクトを選択し、「ファイル」→「新規」を選択します。
「カテゴリ」リストで、「一般」を選択し、「XML」を選択します。
「項目」リストでXSQLページをダブルクリックします。
これにより、untitled#.xsqlという名前のスケルトンXSQLファイルがプロジェクトに追加されます。
「アプリケーション」ウィンドウで新規のXSQLファイルを右クリックし、「XMLエディタ」 を選択してソース・ファイルを開きます(ソース・ファイルが開いていない場合)。
<page xmlns:xsql="urn:oracle-xsql">
タグの後の空白行にカーソルを置きます。
「表示」→コンポーネント・ウィンドウを選択して、「コンポーネント」ウィンドウを開きます(表示されていない場合)。
「コンポーネント」ウィンドウのドロップダウン・リストからXSQLタグを選択します(表示されていない場合)。
「コンポーネント」ウィンドウからViewObject Show
タグを選択します。
ViewObject Show
タグには、XML形式のビュー・オブジェクトのデータが表示されます。ViewObject Update
では、オプションで変換されたXMLドキュメントに基づいたビュー・オブジェクトに対して、挿入、更新および削除の処理を行います。
「ビュー・オブジェクトの選択内容」ダイアログで適切なビュー・オブジェクトを選択し、「次へ」をクリックします。
属性のデフォルト値を変更するか、受け入れます。属性を入力した後、「次へ」をクリックします。
「終了」をクリックします。
入力したタグと属性がXSQLページに表示されていることを確認します。
「ファイル」→「すべて保存」の順に選択して、作業内容を保存します。
「アプリケーション」ウィンドウでXSQLファイルを右クリックして、「<filename>.xsqlの実行」を選択すると、RAW XMLデータがWebブラウザに表示されます。
スタイルシートを使用してXMLデータの書式を設定できます。メッセージ・サービスを介してXMLデータを別のアプリケーションに渡すこともできます。
注意: XSQLページをビジネス・コンポーネントのXSQL処理ハンドラとともに使用するには、希望する接続モードを基にしたすべてのJBOライブラリに加えて、XSQLランタイムおよびJBO HTMLライブラリをプロジェクトのクラスパスに含める必要があります。これらは、JDeveloperによって自動的にクラスパスに含められます。 |
循環ビュー・リンク
・アクセッサを使用してビュー・オブジェクトを問い合せると、XSQLエラーJBO-27122が発生することがあります。
複数の表の間に外部キー関係がある場合を考えてみます。たとえば、Oracle10iリリース2のデータベース・サンプルのHRスキーマでは、国、部門、従業員および場所の表の間にこのような関係があります。これらの表に基づいて単純なビジネス・コンポーネント・プロジェクトを作成し、さらにCountriesView1
というビュー・オブジェクトにアクセスするXSQLクライアントを作成すると、例22-7のようなエラーが発生します。
例22-7 XSQLエラーJBO-27122
<?xml version="1.0" encoding="windows-1252" ?> - <!-- | Uncomment the following processing instruction and replace | the stylesheet name to transform output of your XSQL Page using XSLT <?xml-stylesheet type="text/xsl" href="YourStylesheet.xsl" ?> --> - <page> - <xsql-error action="xsql:action"> <message>JBO-27122: SQL error during statement preparation. Statement: SELECT Employees.EMPLOYEE_ID, Employees.FIRST_NAME, Employees.LAST_NAME, Employees.EMAIL, Employees.PHONE_NUMBER, Employees.HIRE_DATE, Employees.JOB_ID, Employees.SALARY, Employees.COMMISSION_PCT, Employees.MANAGER_ID, Employees.DEPARTMENT_ID, Employees.DN FROM EMPLOYEES Employees WHERE (Employees.DEPARTMENT_ID = :1)</message> </xsql-error> </page>
このエラーは、max-levelsパラメータにデフォルト値を使用して、基礎となるwriteXML()
メソッドを使用しているために発生します。このため、前述した外部キーによって作成される循環参照により無限ループが発生し、ORA-1000 MaxOpenCursors
超過エラーが内部で発生します。
これを回避するには、コードを例22-8のように変更します。
例22-8 無限ループの回避策
<xsql:action handler="oracle.jbo.xsql.ViewObject" name="YourViewUsageName" appmodule="a.b.c.YourModuleName" configname="YourModuleNameLocal"> <view-attribute-list viewdefname="a.b.c.YourViewName" include-only"Attr1 Attr2 Attr3" : </xsql:action>
属性リストを制御する各ビュー定義に複数の<view-attribute-list>
要素を使用できます。1つの<view-attribute-list>
要素を使用するとすぐに、<view-attribute-list>
要素に含まれている属性のみをインクルードするwriteXML()
の新しいAPIが使用されます。
ビュー・オブジェクトの詳細を表示するには、そのビュー定義のinclude-onlyリストにある属性名のリストに、ビュー・リンク・アクセッサ属性名を含める必要があります。例22-9はCountriesView
に基づく使用例です。
例22-9 CountriesViewの例
<?xml version="1.0" encoding='windows-1252'?> <!-- | Uncomment the following processing instruction and replace | the stylesheet name to transform output of your XSQL Page using XSLT <?xml-stylesheet type="text/xsl" href="YourStylesheet.xsl" ?> --> <page xmlns:xsql="urn:oracle-xsql"> <xsql:action handler="oracle.jbo.xsql.ViewObject" name="CountriesView1" configname="HrModuleLocal" appmodule="hr.HrModule"> <view-attribute-list viewdefname="hr.HrModule.CountriesView" include-only="CountryId CountryName CurrencyName" /> </xsql:action> </page>
XSQLページのアクション・ハンドラは、特定のタスクを実行するために起動されるJavaクラスです。Cookieの設定、スタイルシートの適用、データベースに対する問合せの実行など、様々なタスクに対応した事前作成済アクション・ハンドラがあります。ただし、組込みのアクション・ハンドラで提供されていない操作を実行する場合、カスタム・アクション・ハンドラを作成できます。カスタム・アクション・ハンドラは、事前定義済のアクション・ハンドラと同じように簡単にXSQLページから起動できるJavaクラスです。
アクション・ハンドラを作成するには、次のようにします。
プロジェクトにXSQL構成ファイルを追加します。
XSQL構成ファイルで、要素名とハンドラ・クラスを指定して、新しいアクション・ハンドラを登録します。
XSQLファイルで、新しい要素とその属性を追加します。
XSQLファイルで、<page>
タグに接続情報を追加します。
プロジェクトにJavaファイルを追加します。
Javaファイルで、XSQLActionHandlerImpl
クラスを拡張するクラスを作成します。
BC4JのXSQLアクション・ハンドラは、JDeveloperのJBO HTMLライブラリの一部としてパッケージ化されており、関連する<JdevHome>/BC4J/jlib/bc4jhtml.jar
アーカイブがビルドに含まれます。
例22-10 XSQLのアクション・ハンドラ
// Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. import oracle.xml.xsql.*; import org.w3c.dom.Node; import java.util.Date; /** * A Class class. * <P> * @author Pas Apicella public class JavaDate extends XSQLActionHandlerImpl { public void handleAction (Node root) { addResultElement(root, "CURRENTDATE", (new Date()).toString()); } }
XSQLサーブレットは、データベースをサーブレット・クライアント環境にデプロイするために必要な情報とロジックが格納された実行可能パッケージを生成します。このデータベース・デプロイメント・パッケージをセットアップおよびデプロイメント・ソリューションに組み込んだり、別個のアプリケーションとしてクライアントに提供したりできます。XSQLサーブレットをデプロイするには、マスター・データベース、デプロイメント・シナリオを指定し、デプロイメントの準備が整った自己完結型の実行可能ファイルを生成する必要があります。
次に示すのはカスタム・アプリケーションです。カスタム・アプリケーションの作成時に、XSQLアプリケーションの開発に適した機能を追加します(アプリケーション作成の一部としてJavaとXSQLを選択する場合)。
XSQLサーブレットをデプロイするには、次のようにします。
必要に応じて、新規のアプリケーションとプロジェクトを作成します。
詳細は、第4.2項「アプリケーションおよびプロジェクトの作成」を参照してください。
XSQLファイルが「アプリケーション」ウィンドウのソース・エディタでまだ開いていない場合は、作成したXSQLファイルの名前をダブルクリックして開きます。
「ファイル」→「新規」を選択して新規ギャラリを開きます。
「新規ギャラリ」の「カテゴリ」ツリーの「一般」で、「XML」を選択します。
「項目」リストで「XSQLファイル」をダブルクリックします。
「コンポーネント」ウィンドウで、「問合せ(XSQL)」をページにドラッグ・アンド・ドロップします。これにより、「問合せ」ウィザードが開き、データベース接続に関する情報が表示されます。SQL問合せを入力します。ウィザードの終了時に<xsql:query>
タグがXSQLファイルに追加されます。
「次へ」をクリックします。ウィザードの第2ページで、データベース接続をまだ作成していない場合は、新しい接続を作成します。または、使用する既存のデータベース接続を選択します。
問い合せる予定のスキーマや表がデータベースに存在することが必要です。データベース接続の設定の詳細は、 第26.2項「データベース接続の設定」を参照してください。 「次へ」をクリックします。
SQL問合せをファイルに追加します。問合せの例を例22-11に示します。
「終了」をクリックします。問合せおよび関連するXSQLタグがXSQLファイルに入力されます。
これで、XSQL問合せを統合WebLogic Serverで実行してテストできます。このサーバーには、IDE内でWebアプリケーションを開発、テストおよびデバッグするために必要な機能がすべて用意されています。詳細は、第9.2項「統合アプリケーション・サーバーでのJava EEアプリケーションの実行」を参照してください。
「アプリケーション」ウィンドウまたはソース・エディタのXSQLファイルのポップアップ・メニューで、「実行」をクリックします。必要に応じて、統合WebLogic Serverはデフォルトのドメインを作成してから起動します。統合WebLogic Serverを初めて起動する場合、ダイアログが表示され、デフォルト・ドメイン上のデフォルト・ユーザーweblogic
のパスワードを入力する必要があります。この手順は1回のみ実行する必要があります。
ダイアログで「OK」をクリックすると、デフォルトのドメインが作成されます。これには数分かかることがあります。進行状況が「ログ」ウィンドウに表示されます。
統合WebLogic ServerでXSQLファイルを実行すると、デフォルトのブラウザにSQL問合せの結果が表示されます。
統合WebLogic ServerでXSQLファイルのテストが正常に完了したら、次のステップとしてアプリケーションをアプリケーション・サーバーにデプロイして実行します。
XSQLの実行に使用される構文はJDeveloperとOracle WebLogic Serverとで異なるため、XSQLソース・ファイルで接続情報を次のように変更する必要があります。
connection="java:comp/env/jdbc/database-connection-nameDS"
次の文字列で置き換えます。
connection="jdbc/database-connection-nameDS"
注意: アプリケーションを統合WebLogic Serverで実行するには、接続情報を元に戻す必要があります。 |
アプリケーションをデプロイするには、最初にデプロイメント・プロファイルを作成し、これにアプリケーションをデプロイする必要があります。「アプリケーション」ウィンドウで、XSQLサーブレットが含まれるプロジェクトを右クリックして、「新規」を選択します。「新規ギャラリ」で「General」を展開し、「デプロイメント・プロファイル」を選択します。
WARデプロイメント・プロファイルなどのプロファイルを選択し、「OK」をクリックし、デプロイメント・プロファイルの作成を続行します。詳細は、第9.3.3項「デプロイメント・プロファイルの作成および編集方法」を参照してください。
アプリケーションをデプロイメント・プロファイルにデプロイするには、XSQLサーブレット・ファイルが含まれるプロジェクトを右クリックして、「デプロイ」→「profile」を選択します。「profile」は、作成したデプロイメント・プロファイルの名前です。
「デプロイ」ダイアログで、「WARにデプロイ」(または、別のタイプのデプロイメント・プロファイルを選択した場合は適切なオプション)を選択し、「終了」をクリックします。
これで、Oracle WebLogic Serverなどのアプリケーション・サーバーにアプリケーションをデプロイできるようになります。実行する必要のある手順は次のとおりです。
XSQLファイル内の接続情報を使用してターゲット・アプリケーション・サーバー上でデータソースを作成します。詳細は、第9.3.7.4項「Oracle WebLogic ServerでのJDBCデータソースの設定」を参照してください。
アプリケーション・サーバーへの接続を作成します。詳細は、第9.3.1項「ターゲット・アプリケーション・サーバーへの接続の作成方法」を参照してください。
XSQLサーブレット・ファイルが含まれるプロジェクトを右クリックして、「デプロイ」→「profile」を選択し、アプリケーションをデプロイします。「profile」は、作成したデプロイメント・プロファイルの名前です。
「デプロイ」ダイアログで、「アプリケーション・サーバーへのデプロイ」を選択し、次のページでアプリケーション・サーバー接続を選択し、「終了」をクリックします。
アプリケーションがデプロイされたら、http://
targethost
:port
/
web-context-root
/
filename
.xsql
にナビゲートすることにより、ブラウザ・ウィンドウで問合せの結果を表示できます。
XSQLファイルを作成してタグを追加した後、RAW XMLデータを表示するか、スタイルシートを使用してXMLデータを書式設定します。
XSQLファイルをRAW XMLデータとして表示するには、次のようにします。
「アプリケーション」ウィンドウでXSQLファイルを選択し、右クリックして「実行」を選択すると、ソース・ファイルがWebブラウザに表示されます。
JDeveloperにより統合WebLogic Serverが開始され、デフォルトのWebブラウザが起動して、XSQLサーブレットがXSQLページを処理した後に生成されたRAW XMLデータが表示されます。
JDeveloperでは、データをHTML、WMLまたは他の出力で書式設定するため、XSQLファイルに適用できるXSLスタイルシートを作成できます。XSLスタイルシートを作成すると、選択したXSQLプロジェクトに追加されます。
XSLスタイルシートを作成するには、次のようにします。
「アプリケーション」ウィンドウで、新しいXSLページを作成するプロジェクトを選択します。
「ファイル」→「新規」→「ギャラリから」を選択します。
「カテゴリ」ツリーで、「General」を開いて「XML」を選択します。
「項目」リストで「XSLスタイル・シート」をダブルクリックします。
「ファイル名」フィールドに、生成するファイルの名前を入力します。
「ディレクトリ名」フィールドは変更せず、JDeveloperがWebアプリケーション・ファイルを検索するディレクトリに作業内容を保存します。
スケルトンXSLファイルが生成され、アクティブなプロジェクトに表示されます。
XMLエディタを編集して、独自のカスタム・スタイルシートを作成できます。XMLデータをワイヤレス・マークアップ・ランゲージ (WML)に変換するXSLスタイルシートの例は、後述します。完了すると、XSQLファイルのスタイルシート名を指定して、RAW XMLデータを書式設定できます。
例22-12のスタイルシートは、XMLからWMLへの変換を示しています。BC4JアプリケーションでデフォルトのDeptView
を使用します。
例22-12 XMLからWMLへの変換
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- Root template --> <xsl:output type="wml" media-type="text/x-wap.wml" doctype-public="-//WAPFORUM//DTD WML 1.1//EN" doctype-system="http://www.wapforum.org/DTD/wml_1.1.xml" indent="yes" /> <xsl:template match="* >/"><xsl:apply-templates/></xsl:template> <xsl:template match="text()>@*"><xsl:value-of select="."/></xsl:template> <xsl:template match="/"> <wml> <card id="C1"> <p mode="nowrap"> <big>DEPTLIST</big> </p> <xsl:for-each select="page/DeptView/DeptViewRow"> <p> <strong><xsl:value-of select="Deptno"/> </strong> xsl:value-of select="Dname"/> <xsl:value-of select="Loc"/> </p> </xsl:for-each> </card> </wml> </xsl:template> </xsl:stylesheet>
XSQLファイルを作成してタグを追加した後、XSLスタイルシートを使用してXMLデータの書式を設定したり、RAW XMLデータを表示できます。以前に作成したスタイルシートを使用することも、JDeveloperで新規のスタイルシートを作成して適用することもできます。スタイルシートを適用することで、HTML、またはWireless Markup Language (WML)などの他のマークアップ言語にXMLデータを変換できます。
スタイルシートを使用してXMLデータの書式を設定する手順は、次のとおりです。
「アプリケーション」ウィンドウで、スタイルシートを追加するXSQLファイルをダブルクリックします。
ソース・ファイルでxml-stylesheet
行と次のようなコメントを探します。
<!-- Uncomment the following processing instruction and replace the stylesheet name to transform output of your XSQL Page using XSLT <?xml-stylesheet type="text/xsl" href="YourStylesheet.xsl" ?> -->
<?xml-stylesheet ?>
行を-->
閉じ大カッコの下に移動して、コメントを解除します。
この行で、YourStyleSheet.xsl
をスタイルシートの名前に置換します。たとえば、stylesheet1.xsl
という名前のスタイルシートを指定します。
次に、このプロジェクトの外部で作成したファイルを使用する場合は、指定したファイルをプロジェクトに追加します。
「アプリケーション」ウィンドウでプロジェクトを選択し、「プロジェクト」→「プロジェクト<プロジェクト名>に追加」を選択します。
「プロジェクトに追加」ダイアログで、ディレクトリに移動し、指定したスタイルシート・ファイルを選択します。
「開く」をクリックします。
「ファイル」→「すべて保存」の順に選択して、すべての変更を保存します。
追加したファイルが「アプリケーション」ウィンドウに表示され、XMLエディタで開きます。開いているファイルを閉じることもできます。
「アプリケーション」ウィンドウでXSQLファイルを右クリックし、「実行」を選択すると、ファイルがWebブラウザに表示されます。
書式設定されたXMLデータをブラウザで表示できます。
XSQL構成ファイルXSQLConfig.xml
は、クラスパス上に存在するため、XSQLページから常にアクセスできます。接続情報は、JDeveloperで新規接続を作成すると、XSQLConfig.xml
ファイルに追加されます。XSQLConfig.xml
はシステム・ディレクトリにあり、XSQLファイルを含むプロジェクトがコンパイルされると、WEB-INF
ディレクトリにコピーされます。カスタム・アクション・ハンドラを登録するなどの変更が必要な場合は、プロジェクトにファイルを追加することもできます。
注意: XSQLプロジェクトをJDeveloperに移行しても、 |
プロジェクトのXSQL構成ファイルを変更するには、次のようにします。
「アプリケーション」ウィンドウでプロジェクトが選択された状態で、「プロジェクト」→「プロジェクト<プロジェクト名>に追加」を選択します。
JDeveloperインストール・ディレクトリのシステム・ディレクトリにナビゲートしてXSQLConfig.xml
を選択し、「開く」をクリックします。
XMLエディタで変更または追加します。
「ファイル」→「保存」の順に選択して、修正したファイルを保存します。
表22-8に示すカスタム・プロパティは、ビュー・オブジェクトまたは行のwriteXML
メソッドを使用する際、XMLの生成に影響します。
表22-8 メタデータのプロパティ
プロパティ名 | 値 | 有効な対象 |
---|---|---|
XML_ELEMENT |
有効な要素名 |
ビュー・オブジェクトおよびビュー属性 |
XML_ROW_ELEMENT |
有効な要素名 |
ビュー・オブジェクト |
XML_CDATA |
任意の値(空でない) |
ビュー属性 |
XML_EXPLICIT_NULL |
任意の値(空でない) |
ビュー・オブジェクトおよびビュー属性 |
XML_ELEMENTカスタム・プロパティがビュー・オブジェクトに存在する場合、その値は、writeXMLメソッドを使用した生成時や、readXML
メソッドによる使用時に、XMLのビュー・オブジェクトに対するXML要素名として使用されます。
XML_ELEMENTカスタム・プロパティがビュー属性に存在する場合、その値は、writeXML
メソッドを使用した生成時や、readXML
メソッドによる使用時に、XMLの属性に対するXML要素名として使用されます。
たとえば、Sal
という名前の属性を持つDeptView
という名前のビュー・オブジェクトについて、次のように設定したとします。
ビュー・オブジェクト・プロパティのXML_ELEMENT="Departments"
Salのビュー属性プロパティのXML_ELEMENT="Salary"
すると、次のようなXMLが生成されます。
<Departments> <DeptViewRow> <Empno>1010</Empno> <Ename>Steve</Ename> <Salary>1234</Salary> </DeptViewRow> </Departments>
デフォルトでは、次のようになります。
<DeptView> <DeptViewRow> <Empno>1010</Empno> <Ename>Steve</Ename> <Sal>1234</Sal> </DeptViewRow> </DeptView>
XML_ROW_ELEMENTカスタム・プロパティがビュー・オブジェクトに存在する場合、その値は、writeXML
メソッドを使用した生成時や、readXML
メソッドによる使用時に、XMLのビュー・オブジェクトにより生成された問合せ結果の各行に対するXML要素名として使用されます。
たとえば、Sal
という名前の属性を持つDeptView
という名前のビュー・オブジェクトについて、次のように設定したとします。
ビュー・オブジェクト・プロパティのXML_ELEMENT="Departments"
ビュー・オブジェクト・プロパティのXML_ROW_ELEMENT="Department"
Sal
のビュー属性プロパティのXML_ELEMENT="Salary"
すると、次のようなXMLが生成されます。
<Departments> <Department> <Empno>1010</Empno> <Ename>Steve</Ename> <Salary>1234</Salary> </Department> </Departments>
デフォルトでは、次のようになります。
<DeptView> <DeptViewRow> <Empno>1010</Empno> <Ename>Steve</Ename> <Sal>1234</Sal> </DeptViewRow> </DeptView>
XML_CDATAカスタム・プロパティがビュー属性に対して空でない値に設定されると、その値はプレーン・テキストとしてではなく、CDATAセクションとして出力されます。
XML_EXPLICIT_NULLカスタム・プロパティがビュー属性に対して空でない値に設定されると、NULL値を持つすべての属性で、次のようなXML要素が生成されます。
<AttributeName null="true"/>
デフォルトの場合は、XML結果から<AttributeName>
要素が省略されます。
XML_EXPLICIT_NULLがビュー属性に対して空でない値に設定されると、指定した属性がNULL値を持つ場合は、システムにより次のようなXML要素が生成されます。
<AttributeName null="true"/>
デフォルトの場合は、XML結果から<AttributeName>
要素が省略されます。