ここでは、XMLビューの設計作業について記述します。
XMLビューは、XMLデータ内の要素をNavigatorでどのように利用するかを定義した情報のことです。
この情報でNavigatorからXMLデータを利用する際のスキーマ名、テーブル名、データ項目、およびデータ型の対応づけが決まります。また、XMLデータを検索する際の検索式を定義することもできます。
Navigatorで利用したいXMLデータ内の要素について、設計します。設計は、Shunsakuの検索APIが返却するパス式(リターン式)、検索式の仕様に基づいて行います。次にNavigatorのテーブル、データ項目、データ型への対応付けを設計します。
設計した情報に基づき、XMLメタ定義ファイルを定義します。
定義したXMLメタ定義ファイルを入力にして、XML辞書ファイルを登録します。
XMLデータの形式について
Navigatorでは、XMLデータのルートの開始タグから終了タグまでを1つのXML文書として扱います。XML文書1つは、1レコードとして扱います。
【例1】
【例2】
この例では、1つのXML文書中に品名と個数のタグが複数あります。品名と個数をセットで1レコードとして扱う場合、ルートタグの単位で分ける必要があります。以降に例を示します。
【例3】
管理者は必要に応じて、XMLデータの形式をNavigatorで扱えるように変更する必要があります。
NULLについて
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のシステム構成に沿って定義する必要があります。
データソースの定義に必要な情報は以下のとおりです。
データソース名
データソースは、Navigator Server上で複数定義できます。データソース名は、Navigatorサーバ内で一意である必要がありますが、Navigatorの命名規約に従った任意の名前を定義できます。
データソースに対応するShunsakuの検索要求先サーバの情報
(検索要求を受け付けるディレクタサーバ、またはコンダクタサーバのホスト名、ポート番号、文字コード、バージョン)
Navigatorが、検索要求をShunsakuAPIを通じて実行する検索要求先を示す情報です。この情報は、検索を実行するShunsakuAPIのパラメタに指定されます。
データソースごとに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ビューは、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ビューのパス式は以下のように設計します。
項目の共通パス式(共通パス式)
1つのXMLビューを構成する各項目は、対応するShunsakuAPIのパス式(リターン式)がすべて共通のパス式で開始されている必要があります。この共通のパス式を決定します。
各項目に対応する要素の相対的なパス式(項目パス式)
XMLビューの各項目のデータを検索したいXMLデータ上の要素を示す、テーブルの共通パス式からの相対的なパス要素式を決定します。このパス要素にtext()指定は含めないでください。
これらのパス式の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で指定可能な項目のデータ型は以下です。
固定長文字列型(CHARACTER)
CHAR(n) 1≦n≦32000
注意
変換元となるShunsakuからの検索データ中に復帰文字、改行文字 、タブ文字などの制御文字を含むことはできません。Shunsaku上でこれらの文字を含む要素は、Navigatorの検索対象から除外する必要があります。
nはShunsakuからこの項目に対応して取得したすべてのデータが格納できる長さである必要があります。項目に格納するデータの長さがnよりも長い場合、問い合わせ時にエラーとなります。エラーとなる場合は、nの値を拡張して、項目のすべてのデータが格納できるようにしてください。
なお、このエラーとする動作は環境変数「RN_SHUNSAKU_CHARACTER_OVER_LENGTH」の指定によって、エラーとせず、問題のデータをNULL値に置き換えて処理を継続するように変更することが可能です。ただし、このNULL値に置き換える対処を行った場合、以下のような注意点があります。
NULL値に置き換えられるデータを含むXMLビューの項目に対して、[レイアウトの指定]画面の[データ]フィールドに指定すること以外の操作(管理ポイントの作成、ラベルとしての使用、結合定義、公開条件や問い合わせにおける絞り込み条件の指定など)は、一切行わないようにしてください。
NULL値に置き換えられるデータを含む項目に管理ポイントを作成した場合、置き換え後のデータで作成されるので、意図しない問い合わせ結果となる可能性があります。
NULL値に置き換えられるデータを含む項目に結合を定義した場合、意図しない結合結果となる可能性があります。
このようなデータを検索する条件を問い合わせや公開条件に指定した場合、意図しない検索結果となる可能性があります。
文字コードが異なるデータソースから検索したデータを格納する項目の場合、項目にはNavigatorのコード系にコード変換された後のデータが格納されます。したがってnの決定にあたっては、変換によるデータ長の変更を考慮する必要があります。
コード変換には多くの注意事項があります。“Navigatorのコード系とShunsakuの文字コードが異なる場合の注意事項”を参照してください。
整数型
INTEGER
真数型
DECIMAL(p,s) 1≦p≦38、0≦s≦p
注意
数値型に変換可能な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値に置き換えられるデータを含む項目に結合を定義した場合、意図しない結合結果となる可能性があります。
このようなデータを検索する条件を問い合わせや公開条件に指定した場合、意図しない検索結果となる可能性があります。
XMLビューのデータに含むことができない文字
項目のデータとして使用するShunsakuの要素のデータには、以下のデータを含むことはできません。
Shunsakuから取り出したXMLビューの行データ中にこれらのデータを検出した場合、Navigatorはエラーを返却します。
制御文字(改行文字、タブ文字、復帰文字など)を含むデータ
文字列の末尾1文字(以上)が半角空白文字である文字型のデータ
特にXML形式のデータの場合、開始タグと終了タグの間がデータとなることから、以下の理由により、Navigatorでは含めることができない文字が意識しないで格納される可能性があります。
文字列の終了と終了タグの間を空ける
複数行で1つのデータを記述する
タブ文字と空白文字の区別を意識しないで記述している
XMLデータを作成するアプリケーションがユーザの入力をそのまま格納している
Navigatorで検索するXMLデータは、データを作成するアプリケーションにおいて上記の文字が存在する場合、取り除くなどの対策を講じてからShunsakuに格納してください。
使用できないXMLデータの例
XMLデータの記述 | データ | 使用できない理由 |
---|---|---|
<R><A>ABC </A></R> | ABC_ | 文字列ABCと終了タグ</A>の間に1文字の空白文字が存在するため、データの文字列末尾が1文字の空白文字となります。 |
<R><A>ABC </A></R> | ABC___ | 文字列ABCと終了タグ</A>の間に空白文字が3文字連続して存在するため、データの文字列末尾が連続する空白文字になります。 |
<R><A>AB | AB\nC | 1要素内で文字列ABCが複数行に改行されて記述されているため、データに改行文字が含まれています。 |
<R><A> ABC</A></R> | \tABC | 1要素内で開始タグと文字列ABCの間にタブ文字が存在するため、データにタブ文字が含まれています。 |
なお、文字列データの末尾が全角空白文字の場合はエラーとなりませんが、データ末尾の半角空白と同様にデータから除去するようにしてください。
末尾の全角空白は目で見るとその存在に気づかないため、検索時の完全一致(不一致)比較条件指定で正しく比較文字列を指定できなかったり、出力した問い合わせ結果を他製品で利用する場合に末尾の全角空白を意識するなどの問題があります。
また、1つの要素内にはテキスト、かつ要素でもないノード(コメントなど)は含めないでください。
要素やデータが存在しない場合および空要素の場合の扱い
XMLビューの項目のパス式に対応する要素のデータが、Shunsakuにおける1レコード内に存在しない場合、空要素の場合、および要素の内容にテキストデータが存在しない場合、Navigatorはそのレコードの要素に対応する項目データにNULL値を設定します。
ただし、XMLビューの最初の項目については、必ず要素およびデータがすべてのレコードに存在するパス式である必要があります。上記のようなパス式は、XMLビューの先頭項目には指定しないでください。
【例】
1レコードに同じパス式の要素が複数存在するXMLデータの注意
1つのXMLビューを構成する各項目は、パス式に対応する要素が、Shunsakuにおける1レコード内に複数存在していないことが必要です。
Shunsakuの1レコード内に項目のパス式が示す要素が複数存在する場合など、Shunsakuからの返信データの1件内に、複数のデータが1パス式に対応して返却された場合、NavigatorでのXMLビューの行への変換がエラーとなります。
例) Shunsakuの1レコード内に対応する要素が重複して存在するため、項目として使用できないパス式
以下の例におけるパス式のように、検索対象要素の上位ノードのパス式が重複している場合、項目に対応する要素自体は1レコードにそれぞれ1件しか存在しないため、Navigatorからの検索ではエラーとなりません。しかしこのような構造は、後の要素追加や変更などの改版時に誤ってNavigatorでは使用できない、あるいは意図しない検索を行うデータを作り出しやすいため、作成しないように注意してください。
例)パス式の上位ノードの要素がShunsakuの1レコード内に重複して存在する例
/A/B/C,/A/B/Dの各パス式が示す要素自体は1レコードに1つしか存在しませんが、それらのパス式の上位ノードである/A/Bというパス式の要素がShunsakuの1レコード内に2つ存在しています、このような場合Navigatorではエラーとなりません。
(定義済み)実体参照のNavigatorにおける表示方法と検索方法
Shunsakuで使用できる(定義済み)実体参照は以下の表のとおりです。
(定義済み)実体参照 | 表す記号 |
---|---|
< | < |
> | > |
& | & |
' | ‘ |
" | “ |
これらの実体参照と表す記号について、Navigatorの表示と検索の仕様を説明します。
なお、以下に示す仕様により、Shunsaku上の検索対象データに「表す記号」自体がそのまま含まれているデータが存在すると、Navigatorの問い合わせが正しい結果を返すことができない可能性があります。Shunsakuの検索対象データに「表す記号」を含める場合には、必ず(定義済み)実体参照に変換して記述するようにデータを作成してください。
(定義済み)実体参照の表示
XMLビューのデータとしてShunsakuから取得したXMLデータに「(定義済み)実体参照」が含まれている場合、それらの実体参照はNavigatorによって対応する「表す記号」に変換された上で、XMLビューの行データとなります。
問い合わせ、公開条件における(定義済み)実体参照の検索
Navigatorにおいて管理者、利用者は、XMLビューの公開条件、およびXMLビューへの問い合わせの条件に上記の表の「表す記号」自体をそのまま指定します。この場合、Navigatorは常にその「表す記号」を実体参照に変換してShunsaku検索APIの検索式パラメタに指定します。
したがって実体参照自体をNavigatorの上記条件に指定した場合、実体参照の一部がさらに変換されるため、管理者、利用者の意図したデータが検索されませんので注意してください。
Shunsakuの検索仕様では キーワードに「表す記号」を記述した場合、部分一致検索での「実体参照」と「表す記号」の両方の検索を行うことができます。しかし、Navigatorでは「実体参照のみでの検索」だけが可能です。「実体参照」と「表す記号」の両方を検索することはできません。「表す記号」はShunsaku上で検索対象データ中に含めないように注意してください。
XMLメタ定義ファイルに指定するXMLビューの検索式
XML辞書ファイルには、XMLビューのデータを絞り込むための検索式を定義することができます。この検索式は、XMLビューへの問い合わせ時に実行されるShunsakuへの検索要求に常に指定されます。この検索式の指定は問い合せ時の上記仕様とは異なり、XML辞書ファイルに登録された検索式の内容が、そのまま実体参照の「表す記号」への変換は行われずにShunsakuAPIの検索式パラメタに指定されます。したがって、XMLデータ上の定義済み実体参照を検索する検索式をXMLビューに指定したい場合、XML辞書ファイルにはShunsakuの指定書式のとおり、キーワードに定義済み実体参照を記述した検索式を登録してください。
なお、XMLメタ定義ファイルはXML形式のファイルであるため、コマンドがXMLファイルを読み込む時に、定義済み実体参照の変換が行われます。このため、XMLメタ定義ファイルに検索式のキーワードとして定義済み実体参照を記述するには特別の注意が必要です。詳細は“XMLメタ定義ファイル”の“14.3.2.5 TABLE要素”を参照してください。
Shunsakuの検索のキーワードにおけるエスケープが必要な文字の検索
Shunsakuは検索式の指定書式において、キーワードに以下の「検索する文字」を指定する場合、「\」を文字の前に指定するよう指示しています(詳細はShunsakuのマニュアルにおける検索式の説明を参照してください)。
検索する文字 | 指定方法 |
---|---|
... | \.\.\. |
\ | \\ |
= | \= |
(なお、Shunsakuのマニュアルでは、文字'<'と文字'>'についても同様の指定が必要であると説明しています。しかし、Navigatorから検索するShunsakuのXMLデータでは、文字'<'と 文字'>'は常に定義済み実体参照でだけ存在しなければならないため、文字'<'と 文字'>'についてこの記事に説明するような検索は行えません。“(定義済み)実体参照のNavigatorにおける表示方法と検索方法”を参照してください。)
問い合わせ、公開条件におけるエスケープが必要な文字の検索
Navigatorにおいて、管理者がNavigatorの提供する公開条件機能や、利用者が問い合わせ時に直接指定する条件にこれらの文字を指定する場合、利用者、管理者は検索する文字のまま指定すればよく、「\」によるShunsakuの指定形式での指定は不要です。Navigatorはこれらの文字が検索する条件に指定された場合、Shunsakuが必要とする指定形式に変換した上でShunsakuの検索APIに指定します。
XMLメタ定義ファイルに指定するXMLビューの検索式
XML辞書ファイルに登録するXMLビューの検索式の指定は、問い合せ時の上記仕様とは異なり、XML辞書ファイルに登録された検索式が、そのままShunsakuAPIの検索式パラメタに指定されます。したがってXMLメタ定義ファイルに記述する検索式では、上記表の「検索する文字」を「指定方法」にある指定形式でエスケープして記述する必要があります。
Shunsakuの検索式の仕様についての注意事項
Shunsakuのスキップキャラクタ指定によるNavigatorの部分一致比較への影響
Shunsakuにおける部分一致検索では、director用動作環境ファイルにスキップキャラクタとして指定された文字が比較対象外となります。このため、Navigatorの公開条件や問い合わせの条件に指定された「部分比較」および「どこかが一致する検索」において、指定された比較文字列によって検索されるデータの範囲は、Shunsakuのスキップキャラクタの指定によって異なります。スキップキャラクタの詳細および部分一致検索における比較結果への影響の例については、Shunsakuの説明書マニュアルの“director用動作環境ファイルのパラメタ”におけるスキップキャラクタの説明を参照してください。
定義済み実体参照に含まれる文字列による検索の注意
公開条件における「部分比較」、問い合わせレイアウトの条件指定において「どこかが一致する」を選択した条件を指定した場合、比較する文字列に定義済み実体参照の一部となる文字列を指定すると、Shunsakuの仕様により定義済み実体参照もあわせて検索されます。(&は、Navigator Serverが&に変換してShunsakuの検索式に指定するため、このような検索は行われません。)
例)
Navigatorの条件指定の文字列 | あわせて検索されてしまうShunsaku上の定義済み実体参照の例 |
---|---|
t; | < > " |
lt | < |
pos | ' |
quo | " |
この他にもShunsakuのXMLデータにおいて、文字データを他の指定書式によって記述する書式を採用した場合には、同様の意図しない検索が行われる可能性があります。このような場合には、事前にShunsakuの検索仕様の確認と検証を行い、問題があれば利用者への指導などの措置を行ってください。
数値データの比較
Shunsakuの検索式における数値比較では、Shunsaku上の要素のデータにおいて比較対照となる文字列の中に数値文字列以外の文字が含まれていても、先頭の数値文字列部分だけが比較されます。そのような要素から取得されるデータは数値文字列以外の文字列も含んでいるため、数値型としては使用できません。このようなデータを持つ要素を、数値型の項目として定義しないように注意してください。数値比較の詳細や注意すべき指定例については、Shunsakuのマニュアルにおける検索式の説明の、数値比較についての解説と例を参照してください。
文字参照の検索
Navigatorにおいて文字参照を含むShunsakuのデータを、XMLビューのデータとすることはできません。含まれた場合、意図しない問い合わせ結果となる場合があります。また、文字参照を公開条件機能や、問い合わせの条件の文字列に指定した場合も、意図した検索が行われません。