識別子、演算子およびリテラル
この項では、予約されているキーワードと句、およびそれらの使用方法について示します。サポートされている演算子の定義、XML抽出フィールドの参照とリテラルの使用に関するルールも示されています。
キーワード
キーワードとキーワード句には、いくつかのカテゴリがあります。
-
コマンドおよび列ヘッダー・キーワード
-
コマンド・パラメータおよび関数パラメータ・キーワード
-
フィールドレベル・キーワード
-
式キーワード
コマンドおよび列ヘッダー・キーワード
コマンドおよび列ヘッダーのキーワードは、次に示すように<>で囲んで、すべて大文字の太字にして使用する必要があります。
-
<LEVEL> - データ表の最初のエントリ。表をXML要素に関連付け、表の階層を指定します。
-
<END LEVEL> - 現在のレベルの終わりを宣言します。表の終わりまたはスタンドアロン表で使用できます。
-
<POSITION> - データ・フィールド行の最初の列の列ヘッダーで、レコード内のデータ・フィールドの開始位置を指定します。
-
<LENGTH> - データ・フィールド行の2番目の列の列ヘッダーで、データ・フィールドの長さを指定します。
-
<FORMAT> - データ・フィールド行の3番目の列の列ヘッダーで、データ型と書式設定を指定します。
-
<PAD> - データ・フィールド行の4番目の列の列ヘッダーで、埋込みスタイルと埋込み文字を指定します。
-
<DATA> - データ・フィールド行の5番目の列の列ヘッダーで、データソースを指定します。
-
<COMMENT> - データ・フィールド行の6番目の列の列ヘッダーで、自由書式コメントを入力できます。
-
<NEW RECORD> - 新しいレコードを指定します。
-
<DISPLAY CONDITION> - レコードの印刷時の条件を指定します。
-
<TEMPLATE TYPE> - FIXED_POSITION_BASEDまたはDELIMITER_BASEDのいずれかのテンプレート・タイプを指定します。
-
<OUTPUT CHARACTER SET> - 出力の生成時に使用する文字セットを指定します。
-
<NEW RECORD CHARACTER> - 実行時に、明示的および暗黙的に新規レコードを示すために使用する文字を指定します。
-
<DEFINE LEVEL> - テンプレートの書式固有のレベルを定義します。
-
<BASE LEVEL> - レベル定義および連結定義コマンド用のサブコマンド。
-
<GROUPING CRITERIA> - レベル定義コマンド用のサブコマンド。
-
<END DEFINE LEVEL> - レベルの終わりを表します。
-
<DEFINE SEQUENCE> - テンプレート・フィールドで使用するレコードまたは抽出要素ベースの順序を定義します。
-
<RESET AT LEVEL> - 順序定義コマンド用のサブコマンド。
-
<INCREMENT BASIS> - 順序定義コマンド用のサブコマンド。
-
<START AT> - 順序定義コマンド用のサブコマンド。
-
<MAXIMUM> - 順序定義コマンド用のサブコマンド。
-
<MINIMUM> - 順序定義コマンド用のサブコマンド。
-
<MAXIMUM LENGTH> - データ・フィールド行の最初の列の列ヘッダーで、データ・フィールドの最大長を指定します。DELIMITER_BASEDテンプレートでのみ使用します。
-
<END DEFINE SEQUENCE> - 順序定義コマンドの終わりを表します。
-
<DEFINE CONCATENATION> - 親レベル・フィールドの文字列として参照可能な、子レベル要素の連結を定義します。
-
<ELEMENT> - 連結定義コマンド用のサブコマンド。
-
<DELIMITER> - 連結定義コマンド用のサブコマンド。
-
<END DEFINE CONCATENATION> - 連結定義コマンドの終わりを表します。
-
<SORT ASCENDING> - レベルのインスタンスに対する書式固有のソート。
-
<SORT DESCENDING> - レベルのインスタンスに対する書式固有のソート。
-
<SORT ASCENDING NUMBER> - レベルのインスタンスに対する数値のソート。
-
<SORT DESCENDING NUMBER> - レベルのインスタンスに対する数値のソート。
コマンド・パラメータおよび関数パラメータ・キーワード
コマンド・パラメータと関数パラメータのキーワードは、すべて大文字の太字ではないフォントで入力する必要があります。
-
PERIODIC_SEQUENCE - 順序定義コマンドのリセット・レベル・サブコマンドで使用します。順序番号がテンプレートの外部でリセットされることを示します。
-
FIXED_POSITION_BASED、DELIMITER_BASED - テンプレート・タイプ・コマンドで使用し、テンプレートのタイプを指定します。
-
RECORD、LEVEL - 順序定義コマンドの増分基準サブコマンドで使用します。RECORDでは、新しいレコードで使用されるたびに順序が増分されます。LEVELでは、レベルの新しいインスタンスでのみ順序が増分されます。
フィールドレベル・キーワード
この項では、キーワードのリストを示し、各キーワードのデータ型を説明します。
-
Alpha -
<FORMAT>
列で、データ型が英数字であることを指定します。 -
Number -
<FORMAT>
列で、データ型が数値であることを指定します。 -
Integer -
<FORMAT>
列で、Numberキーワードとともに使用します。数字の整数部分を抽出します。その機能はINTEGER関数と同様ですが、INTEGER関数は式内で使用するのに対し、Integerキーワードは<FORMAT>
列でのみ使用します。 -
Decimal -
<FORMAT>
列で、Numberキーワードとともに使用します。数字の小数部分を抽出します。その機能はDECIMAL関数と同様ですが、DECIMAL関数は式内で使用するのに対し、Decimalキーワードは<FORMAT>
列でのみ使用します。 -
Date -
<FORMAT>
列で、データ型が日付であることを指定します。 -
L、R -
<PAD>
列で、埋込み側(左または右)を指定します。
式キーワード
式で使用するキーワードと句は、大文字の太字で指定する必要があります。
-
IF THEN ELSE IF THEN ELSE END IF - これらのキーワードは、常にグループとして使用します。これらは、IF制御構造式を指定します。
-
IS NULL、IS NOT NULL - これらの句は、IF制御構造で使用します。これらは、式がNULLであるかどうかをテストするためのブール条件の一部を形成します。
演算子
演算子には、ブール・テスト演算子と式演算子という2つのグループがあります。
ブール・テスト演算子には、=、<>、<、>、>=および<=があります。これらはIF制御構造でのみ使用できます。式演算子には、()、||、+、-および*があります。これらは任意の式で使用できます。
この表に演算子をリストし、その使用方法を説明します。
記号 | 使用方法 |
---|---|
= |
テストと等しい。IF制御構造でのみ使用されます。 |
<> |
テストに等しくない。IF制御構造でのみ使用されます。 |
> |
テストより大きい。IF制御構造でのみ使用されます。 |
< |
テストより小さい。IF制御構造でのみ使用されます。 |
>= |
テスト以上。IF制御構造でのみ使用されます。 |
<= |
テスト以下。IF制御構造でのみ使用されます。 |
() |
関数の引数および式グループのデリミタ。()内の式グループは常に最初に評価されます。()は、ネスト可能です。 |
| |
|
|| |
文字列連結演算子。 |
+ |
加算演算子。オペランドのいずれかが数字でない場合は、暗黙の型変換を実行できます。 |
- |
減算演算子。オペランドのいずれかが数字でない場合は、暗黙の型変換を実行できます。 |
* |
乗算演算子。オペランドのいずれかが数字でない場合は、暗黙の型変換を実行できます。 |
DIV |
除算オペランド。オペランドのいずれかが数字でない場合は、暗黙の型変換を実行できます。/は、XPATH構文の一部であるため使用されません。 |
IN |
テストのいずれかのメンバーと等しい。 |
NOT IN |
IN演算子を否定します。テストのどのメンバーとも等しくありません。 |
XML抽出フィールドへの参照とXPATH構文
XML要素は、任意の式で使用できます。
実行時に、XML要素は対応するフィールド値に置き換えられます。フィールド名では、大文字と小文字が区別されます。
XML抽出フィールドをテンプレートで使用する場合は、XPATH構文に従う必要があります。これは、PublisherエンジンがXML要素を正しく解釈するために必要です。
Publisherの書式設定のプロセス中は、コンテキスト要素とみなされる抽出要素が常に存在します。Publisherが表内のデータ行を処理するときは、表のレベル要素がコンテキスト要素になります。たとえば、PublisherがPayment表内のデータ行を処理するときは、Paymentがコンテキスト要素になります。抽出要素の参照に使用する相対XPATHは、コンテキスト要素の観点から指定されます。
たとえば、Paymentデータ表でPayeeName要素を参照する場合は、次の相対パスを指定します。
Payee/PayeeInfo/PayeeName
XML要素階層の各レイヤーは、バックスラッシュ「/」で区切られます。この表記法は、ネストされているすべての要素に使用します。レベルの直属の子要素の相対パスは、要素名自体になります。たとえば、TransactionID要素名は、Payment表でそのまま使用できます。
子レベル表内で親レベル要素を参照するには、「../」の表記法を使用できます。たとえば、Payment表でBatchName要素を参照する必要がある場合は、../BatchName
と指定できます。「../」により、Batchがコンテキストとして提供されます。このコンテキスト内では、BatchNameがBatchの直属の子であるため、BatchName要素名を直接使用できます。この表記法では、どの階層レベルの親要素も指定できます。たとえば、Paymentデータ表で(RequestHeader内の)RequesterParty要素を参照する必要がある場合は、次のように指定できます。
../../TrxnParties/RequesterParty
テンプレート内の任意の場所で任意の抽出要素を参照するには、絶対パスを使用できます。絶対パスは、バックスラッシュ「/」で始まります。前述のPayment表の例のPayeeNameの場合は、/BatchRequest/Batch/Payment/Payee/PayeeInfo/PayeeNameという絶対パスを使用します。
絶対パスの構文を使用すると、パフォーマンスが向上します。
レベル定義、順序定義、連結定義などの設定コマンドによって定義される識別子は、グローバルな識別子であるとみなされます。これらは、テンプレート内のどこでも使用できます。絶対パスも相対パスも不要です。設定コマンドのベース・レベルおよびリセット・レベルも指定できます。Publisherでは、これらの正しいコンテキストを検索できます。
相対パスの構文を使用する場合は、次のコマンドで、ベース・レベルに対して相対的に指定する必要があります。
-
連結定義コマンドの要素サブコマンド
-
レベル定義コマンドのグルーピング基準サブコマンド
順序定義コマンドの開始位置サブコマンド内で抽出フィールドを参照する場合は、絶対パスで指定する必要があります。
レベル・コマンドで抽出要素を参照するためのルールは、データ・フィールドのルールと同じです。たとえば、Batchレベル表とネストされているPaymentレベル表がある場合は、Payment表でPayment要素名をそのまま使用できます。Payment表のレベル・コマンドを評価する際のコンテキストは、Batchであるためです。
ただし、Paymentレベルが省略されていて、Batch表の直下にInvoiceレベル表がある場合は、Payment/InvoiceをInvoice表のレベル要素として指定する必要があります。
テンプレートに必要なXPATH構文は、UNIXやLINUXのディレクトリ構文とほとんど同じです。コンテキスト要素は現行ディレクトリに相当します。そのため、ファイルを現行ディレクトリに対して相対的に指定したり、「/」で始まる絶対パスを使用したりできます。
最後に、レベル定義コマンドのグルーピング基準サブコマンドの結果として抽出フィールドを参照するには、一重引用符で囲んで指定する必要があります。これにより、グルーピング基準として抽出フィールドの値ではなく、抽出フィールド自体を使用するようにPublisherエンジンに認識させることができます。
eText出力をブラウザで表示する際のノート
レポート・データに簡体字中国語が含まれていて、<OUTPUT CHARACTER SET>がGBKに設定されている場合、エンコーディングにgbk2312を使用しているInternet Explorer 7では中国語が正しく表示されません。
この問題は、日本語や韓国語など英語以外の他のエンコードでも同様に発生する場合があります。出力は、eTextテンプレートで文字セットをGBKに設定し、ブラウザのエンコードをGBKまたはGB2312に設定している場合は、Firefox 3.5で正しく表示されます。この問題は、<OUTPUT CHARACTER SET>をutf-8に設定することで回避できます。これはブラウザの表示にのみ関する問題であることに注意してください。テキスト・ファイルは正しく生成されます。