ページの先頭行へ戻る
Interstage Navigator ServerV9.5.0 セットアップガイド Vol.1(Enterprise Edition用)
FUJITSU Software

1.4.3 XMLビューの設計

ここでは、XMLビューの設計作業について記述します。

1.4.3.1 XMLビューの概要

XMLビューは、XMLデータ内の要素をNavigatorでどのように利用するかを定義した情報のことです。

この情報でNavigatorからXMLデータを利用する際のスキーマ名、テーブル名、データ項目、およびデータ型の対応づけが決まります。また、XMLデータを検索する際の検索式を定義することもできます。

  1. Navigatorで利用したいXMLデータ内の要素について、設計します。設計は、Shunsakuの検索APIが返却するパス式(リターン式)、検索式の仕様に基づいて行います。次にNavigatorのテーブル、データ項目、データ型への対応付けを設計します。

  2. 設計した情報に基づき、XMLメタ定義ファイルを定義します。

  3. 定義したXMLメタ定義ファイルを入力にして、XML辞書ファイルを登録します。

XMLデータの形式について

Navigatorでは、XMLデータのルートの開始タグから終了タグまでを1つのXML文書として扱います。XML文書1つは、1レコードとして扱います。

【例1】

【例2】

この例では、1つのXML文書中に品名と個数のタグが複数あります。品名と個数をセットで1レコードとして扱う場合、ルートタグの単位で分ける必要があります。以降に例を示します。

【例3】

管理者は必要に応じて、XMLデータの形式をNavigatorで扱えるように変更する必要があります。

NULLについて

XMLデータ中に存在しない要素があった場合の扱いについて説明します。

1.4.3.2 XMLビューの設計

XMLビューの設計では、以下の作業を行います。

作業

内容

XMLビューのデータソース、スキーマ、テーブル名設計

データソースの設計

XMLビューが、ShunsakuAPIを通じて検索要求を実行する先のShunsakuのサーバをデータソースとして定義します。

スキーマ名、テーブル名の設計

XMLビューのテーブル名と所属するスキーマ名を決定します。

XMLビューの項目構成と検索指定の設計

項目名の設計

XMLビューの項目名を決定します。

パス式の設計

XMLビューの項目に対応させるXMLデータの要素を示すパス式を設計します。項目のデータは、このパス式(リターン式)を指定したShunsakuの検索APIから取得します。

検索式の設計

XMLビューの行データとして、特定の条件に一致するデータだけを公開したい場合、Shunsakuの検索API実行時に指定する、検索データを絞り込むための検索式を設計します。

データ型の設計

XMLビューの項目のデータ型を決定します。

この設計結果をXMLメタ定義ファイルに定義し、XML辞書ファイル登録コマンドでXML辞書ファイルに登録することで、XMLビューを利用できるようになります。XMLメタ定義ファイル、およびXML辞書ファイル登録コマンドについての詳細は“14.3 XMLメタ定義ファイルのセットアップ”を参照してください。

この設計を行うには、Shunsakuの検索API(C言語)による検索の仕様、検索パラメタの指定書式(リターン式、パス式、検索式)、Shunsakuが扱えるXMLの制限など、Shunsakuの検索APIアプリケーション設計の知識が必要となります。本記事の参照にあたっては、事前にShunsakuのマニュアルによってこれらの事項について確認してください。

XMLビューのデータソース、スキーマ、テーブル名設計

Navigatorの辞書セットアップでは、データベースオブジェクトをデータソース-スキーマ-テーブルという階層で管理するため、XMLビューをこの階層で管理するための名称や管理構成の設計を行います。

【例】

Navigatorにおけるデータソース、スキーマ、テーブルの階層関係の例

データソース

Navigatorのデータソースは、ShunsakuにおいてNavigatorがShunsakuAPIにより実行する検索要求を受け付けるサーバ(ディレクタサーバ、またはコンダクタサーバ)に対応して定義します。Navigatorは、XMLビューのテーブルに対応づけられたリターン式、検索式による検索要求を、テーブルが所属するデータソースに対応づけられたサーバに対して発行します。このため、データソースはShunsakuのシステム構成に沿って定義する必要があります。

データソースの定義に必要な情報は以下のとおりです。

データソースごとにShunsakuの文字コードを指定することができます。この場合、NavigatorはShunsakuAPI検索に指定するリターン式、検索式は、データソースの文字コードに変換して指定され、返却された検索データは、データソースの文字コードからNavigatorのコード系に変換してから、XMLビューの行データとして集計処理されます。

ただし、このようなNavigatorのコード系と異なる文字コードのデータソースを定義する場合、XMLビューや辞書セットアップ、問い合わせの指定に特別な注意が必要となります。詳細は本節の“Navigatorのコード系とShunsakuの文字コードが異なる場合の注意事項”を参照してください。

Navigatorのデータソースの定義に指定が必要な情報、名称の制限、およびNavigatorで利用可能なShunsakuの文字コードの詳細は“14.3.2.3 DATA_SOURCE要素”の説明を参照してください。

スキーマ名

スキーマは、特定のデータソースに属するテーブルの論理的な集合です。テーブル(XMLビュー)は、1つのスキーマに所属させる必要があります。名前は、データソース内で一意である必要があります。命名規約の詳細は、“14.3.2.4 SCHEMA要素”を参照してください。

テーブル名(XMLビュー名)

XMLビューは、Navigator上でテーブルとして識別されます。Navigator上でテーブル名として使用されるXMLビューの名前を定義します。Navigatorのテーブル名は、テーブルが所属するスキーマ内で一意である必要があります。命名規約の詳細は、“14.3.2.5 TABLE要素”を参照してください。

XMLビューの項目構成と検索指定の設計

XMLビューは、リレーショナルデータベースにおけるビュー表と同じく項目によって構成されるため、項目構成の設計が必要です。

XMLビューの項目は、XMLデータ上の要素に対応づけて、その要素のデータをShunsaku上で検索するためにShunsakuAPIに指定するリターン式のパス式を割り当てます。また、検索時のデータを絞り込むためのShunsakuAPIの検索式もXMLビューに割り当てることができます。

項目名

XMLビューを構成する各項目を識別する名前です。テーブル内で一意である必要があります。

項目には、XMLデータ上の1つの要素を対応づけ、その要素データをShunsakuAPIによって検索するためのパス式を割り当てます。

命名規約の詳細は、“14.3.2.6 COLUMN要素”を参照してください。

項目のリターン式(パス式)

XMLビューの各項目には、その項目に対応させるShunsakuのXMLデータ上の要素を示すため、Shunsakuの検索におけるリターン式のパス式を定義する必要があります。

XMLビューの問い合わせ時、Navigatorは各項目に定義されたパス式からリターン式を組み立て、Shunsakuの検索API shunsearch2()のリターン式領域に指定することでShunsakuの検索を実行します。この仕組みによって各項目に対応する要素のデータが取得され、XMLビューの行としてNavigator上で問い合わせ処理が行われます。Shunsakuにおけるリターン式のパス式については、Shunsakuのマニュアルにおける検索条件の指定書式、およびShunsakuのC言語APIのshunsearch2()を参照してください。

XMLビューに定義する項目のパス式は、XMLメタ定義ファイルに記述し、XML辞書ファイル登録コマンドによってXML辞書ファイルに登録します。登録されたパス式は、XMLビューの問い合わせ実行時にXML辞書ファイルから読み込まれ、リターン式に組み立てられた後にShunsakuの検索APIに自動的に指定されます。

このXMLビューのパス式は、原則としてXMLメタ定義ファイルに記述された式が、そのままShunsaku検索API shunsearch2()のリターン式領域パラメタに指定されます。このため、パス式の記述形式はShunsakuのリターン式におけるパス式の指定書式に従った構文で記述します。Shunsakuの定めるリターン式でのパス式の指定書式については、Shunsaku説明書のマニュアルにおける“検索条件の指定書式”の説明における“リターン式”の記事を参照してください。

XMLビューのパス式は以下のように設計します。

これらのパス式のXMLメタ定義ファイルへの指定方法の詳細は、“XMLメタ定義ファイルのセットアップ”の“14.3.2.5 TABLE要素”、“14.3.2.6 COLUMN要素”、および“14.3.2.7 共通パスと項目パスサンプル”を参照してください。

【例】

項目名、共通パス、相対パスの設計例

検索式

XMLビューには、Shunsakuの検索APIにおける検索式を指定することができます。この検索式は、XMLビューの問い合わせ時に実行されるShunsaku検索APIに項目のパス式とともに指定されるため、XMLビューとして公開されるデータを絞りこむことができます。

管理者はこの検索式を指定することで、XMLビューのデータ内容を自由にカスタマイズすることができます。Shunsaku からNavigatorに不要なデータが返却されないようにする検索式によってパフォーマンスを向上することや、利用者に指定させることが難しい複雑な検索式をXMLビューの問い合わせ時に自動的に指定させるようにしたり、利用者には公開することができないデータをXMLビューから取り除くなどといった、利用者の問い合わせにおける条件指定や公開条件では実現できない検索指定をこのXMLビューの検索式で行います。

ここで説明する検索式は、XMLビューのデータ内容を決定するための式であり、XMLビューの問い合わせに常に指定される検索式です。Navigatorクライアントなどから利用者が指定する問い合わせごとの絞り込み条件、ツールクライアントなどからNavigator辞書に登録するテーブルの公開条件の指定は、それぞれ問い合わせ実行ごとにShunsakuの検索式に変換されて、ここで説明する、常に指定される検索式にマージされます。

XMLビューに定義する検索式はXMLメタ定義ファイルに記述し、XML辞書ファイル登録コマンドによってXML辞書ファイルに登録します。登録された検索式はXMLビューの問い合わせ実行時に、XML辞書ファイルから読み込まれ、Shunsakuの検索APIに自動的に指定されます。

このXMLビューの検索式は、原則としてXMLメタ定義ファイルに記述された式がそのままShunsaku検索API shunsearch2()の検索式領域パラメタに指定されます。このため、検索式の記述形式は、Shunsakuの検索式の指定書式に従った構文で記述します。検索式の指定書式については、Shunsaku説明書のマニュアルにおける“検索条件の指定書式”の説明における“検索式”の記事を参照してください。

XMLメタ定義ファイルへの検索式の指定方法、および指定における注意点は“XMLメタ定義ファイル”の“14.3.2.5 TABLE要素”におけるwhere属性の説明を参照してください。

【例】

Shunsakuの検索式を指定して/A/C1の要素のデータが1のデータだけをNavigatorのテーブルとして公開します。

データ型

XMLビューを構成する各項目には、Navigator上でのデータ処理におけるデータの型を指定します。Navigator Serverは、XMLビューの行を作成する際に、データを指定された型に変換してから処理します。この仕組みにより、数値データだけに許される集計処理などを実行できます。

Navigator Serverで指定可能な項目のデータ型は以下です。

文字型データ

注意

  • 変換元となるShunsakuからの検索データ中に復帰文字、改行文字 、タブ文字などの制御文字を含むことはできません。Shunsaku上でこれらの文字を含む要素は、Navigatorの検索対象から除外する必要があります。

  • nはShunsakuからこの項目に対応して取得したすべてのデータが格納できる長さである必要があります。項目に格納するデータの長さがnよりも長い場合、問い合わせ時にエラーとなります。エラーとなる場合は、nの値を拡張して、項目のすべてのデータが格納できるようにしてください。

    なお、このエラーとする動作は環境変数「RN_SHUNSAKU_CHARACTER_OVER_LENGTH」の指定によって、エラーとせず、問題のデータをNULL値に置き換えて処理を継続するように変更することが可能です。ただし、このNULL値に置き換える対処を行った場合、以下のような注意点があります。

    NULL値に置き換えられるデータを含むXMLビューの項目に対して、[レイアウトの指定]画面の[データ]フィールドに指定すること以外の操作(管理ポイントの作成、ラベルとしての使用、結合定義、公開条件や問い合わせにおける絞り込み条件の指定など)は、一切行わないようにしてください。

    • NULL値に置き換えられるデータを含む項目に管理ポイントを作成した場合、置き換え後のデータで作成されるので、意図しない問い合わせ結果となる可能性があります。

    • NULL値に置き換えられるデータを含む項目に結合を定義した場合、意図しない結合結果となる可能性があります。

    • このようなデータを検索する条件を問い合わせや公開条件に指定した場合、意図しない検索結果となる可能性があります。

  • 文字コードが異なるデータソースから検索したデータを格納する項目の場合、項目にはNavigatorのコード系にコード変換された後のデータが格納されます。したがってnの決定にあたっては、変換によるデータ長の変更を考慮する必要があります。

    コード変換には多くの注意事項があります。“Navigatorのコード系とShunsakuの文字コードが異なる場合の注意事項”を参照してください。

数値型データ

注意

  • 数値型に変換可能なShunsakuの返信データ中のテキストデータは、以下のどちらかの形式である必要があります。Shunsaku上でこれ以外の形式の数値表現データを持つ要素、または以下の形式のデータの前後や途中に、数値とならない文字を含む要素に対応させる項目は数値型とすることができません。

    • 整数:[符号][数字の並び]

    • 真数:[符号][数字の並び].[数字の並び]

      整数形式や真数形式における符号は省略可能です。また、真数形式における整数部の数字の並びが省略されているデータも使用できます。

      例)
      整数の例    0      100    +100    -100
      真数の例    0.1    0.125  +0.100  -0.01  .01  +.01  -.01

  • 数値型に格納するShunsakuの検索データは、その値が変換先のデータ型の値の範囲に収まることが必要です。変換によってデータ型の範囲を超えたデータを検出した場合、エラーが返却され、問い合わせ処理が中断されます。エラーとなる場合は、項目のデータ型、精度、位取りを拡張してください。

    この動作は、環境設定ファイルの環境変数「RN_SHUNSAKU_ARITHMETIC_OVERFLOW」の指定によって、エラーとせず、その値をNULL値に置き換えることで処理を継続するように動作を変更することができます。ただし、このNULL値に置き換える変更を行った場合、以下のような注意点があります。

    NULL値に置き換えられるデータを含むXMLビューの項目に対して、[レイアウトの指定]画面の[データ]フィールドに指定する以外の操作(管理ポイントの作成、ラベルとしての使用、結合定義、公開条件や問い合わせにおける絞り込み条件の指定など)は、一切行わないようにしてください。

    また、その項目の集計や並べ替えを行う場合、それらは置き換え後のデータに対する処理であることに注意してください。

    • NULL値に置き換えられるデータを含む項目に管理ポイントを作成した場合、置き換え後のデータで作成されるので、意図しない問い合わせ結果となる可能性があります。

    • NULL値に置き換えられるデータを含む項目に結合を定義した場合、意図しない結合結果となる可能性があります。

    • このようなデータを検索する条件を問い合わせや公開条件に指定した場合、意図しない検索結果となる可能性があります。

1.4.3.3 Shunsakuの検索における注意事項と制限事項

XMLビューのデータに含むことができない文字

項目のデータとして使用するShunsakuの要素のデータには、以下のデータを含むことはできません。

Shunsakuから取り出したXMLビューの行データ中にこれらのデータを検出した場合、Navigatorはエラーを返却します。

特にXML形式のデータの場合、開始タグと終了タグの間がデータとなることから、以下の理由により、Navigatorでは含めることができない文字が意識しないで格納される可能性があります。

Navigatorで検索するXMLデータは、データを作成するアプリケーションにおいて上記の文字が存在する場合、取り除くなどの対策を講じてからShunsakuに格納してください。

使用できないXMLデータの例

XMLデータの記述

データ

使用できない理由

<R><A>ABC </A></R>

ABC_
(_は空白文字1文字)

文字列ABCと終了タグ</A>の間に1文字の空白文字が存在するため、データの文字列末尾が1文字の空白文字となります。

<R><A>ABC </A></R>

ABC___
(_は空白文字1文字)

文字列ABCと終了タグ</A>の間に空白文字が3文字連続して存在するため、データの文字列末尾が連続する空白文字になります。

<R><A>AB
C</A></R>

AB\nC
(\nは改行文字1文字)

1要素内で文字列ABCが複数行に改行されて記述されているため、データに改行文字が含まれています。

<R><A> ABC</A></R>

\tABC
(\tはタブ文字1文字)

1要素内で開始タグと文字列ABCの間にタブ文字が存在するため、データにタブ文字が含まれています。

なお、文字列データの末尾が全角空白文字の場合はエラーとなりませんが、データ末尾の半角空白と同様にデータから除去するようにしてください。

末尾の全角空白は目で見るとその存在に気づかないため、検索時の完全一致(不一致)比較条件指定で正しく比較文字列を指定できなかったり、出力した問い合わせ結果を他製品で利用する場合に末尾の全角空白を意識するなどの問題があります。

また、1つの要素内にはテキスト、かつ要素でもないノード(コメントなど)は含めないでください。

要素やデータが存在しない場合および空要素の場合の扱い

XMLビューの項目のパス式に対応する要素のデータが、Shunsakuにおける1レコード内に存在しない場合、空要素の場合、および要素の内容にテキストデータが存在しない場合、Navigatorはそのレコードの要素に対応する項目データにNULL値を設定します。

ただし、XMLビューの最初の項目については、必ず要素およびデータがすべてのレコードに存在するパス式である必要があります。上記のようなパス式は、XMLビューの先頭項目には指定しないでください。

【例】

1レコードに同じパス式の要素が複数存在するXMLデータの注意

1つのXMLビューを構成する各項目は、パス式に対応する要素が、Shunsakuにおける1レコード内に複数存在していないことが必要です。

(定義済み)実体参照のNavigatorにおける表示方法と検索方法

Shunsakuで使用できる(定義済み)実体参照は以下の表のとおりです。

(定義済み)実体参照

表す記号

&lt;

<

&gt;

>

&amp;

&

&apos;

&quot;

これらの実体参照と表す記号について、Navigatorの表示と検索の仕様を説明します。

なお、以下に示す仕様により、Shunsaku上の検索対象データに「表す記号」自体がそのまま含まれているデータが存在すると、Navigatorの問い合わせが正しい結果を返すことができない可能性があります。Shunsakuの検索対象データに「表す記号」を含める場合には、必ず(定義済み)実体参照に変換して記述するようにデータを作成してください。

Shunsakuの検索のキーワードにおけるエスケープが必要な文字の検索

Shunsakuは検索式の指定書式において、キーワードに以下の「検索する文字」を指定する場合、「\」を文字の前に指定するよう指示しています(詳細はShunsakuのマニュアルにおける検索式の説明を参照してください)。

検索する文字

指定方法

...

\.\.\.

\

\\

=

\=

(なお、Shunsakuのマニュアルでは、文字'<'と文字'>'についても同様の指定が必要であると説明しています。しかし、Navigatorから検索するShunsakuのXMLデータでは、文字'<'と 文字'>'は常に定義済み実体参照でだけ存在しなければならないため、文字'<'と 文字'>'についてこの記事に説明するような検索は行えません。“(定義済み)実体参照のNavigatorにおける表示方法と検索方法”を参照してください。)

Shunsakuの検索式の仕様についての注意事項

  

文字参照の検索

Navigatorにおいて文字参照を含むShunsakuのデータを、XMLビューのデータとすることはできません。含まれた場合、意図しない問い合わせ結果となる場合があります。また、文字参照を公開条件機能や、問い合わせの条件の文字列に指定した場合も、意図した検索が行われません。