バージョン 4.2.5
 —  Web テクノロジ  —

はじめに

次のトピックについて説明します。


XML ツールキットの特徴

Top of page

XML ツールキットの説明

目的

Natural XML ツールキットでは、Natural に追加の XML 機能を提供し、Natural アプリケーションと XML の統合を強化します。

一般的なアーキテクチャ

Natural XML ツールキットは、Natural プログラムの集合で構成されています。 XML ツールキットプログラムを顧客のアプリケーションに統合すると、XML データへのアクセスを可能にしたり、XML フォーマットのデータを Natural から提供したりできます。

Natural XML ツールキットでは、次の機能を呼び出します。

XML ツールキットの機能

  1. Natural データ定義と DTD の間のマッピング

  2. XML トークンから NAT データへの変換
    Natural データ構造を作成した後、XML ドキュメントを解析してそのデータ構造に保存する必要があります。 指定したデータを Natural データ構造に保存できる Natural の実装が生成されます。

  3. NAT データから XML ドキュメントへの変換(シリアライズ)
    シリアライズとは、Natural データ構造に保存されたデータを取得し、指定された記述に従って XML ドキュメントを作成する処理のことです。

XML ツールキット機能へのユーザーインターフェイスは、Natural ダイアログによって実装されます。 DTD はワークファイルとしてアクセスされ、生成された Natural オブジェクトは Natural システムファイルに直接保存されます。

Natural データ定義の DTD へのマップ

このマッピングは、Natural データ構造を XML タグと結合するための最初の手順であり、Natural データを XML タグとして表現するために必要となります。 以下の例は、Natural と DTD の間のマッピング、およびいくつかの明確な違いを示しています。

Natural PDA

                       Press ESC to enter command mode                        
 Mem: EMPL     Lib: SYSEXXT  Type: PARAMETER  Bytes:  1072  Line:    0 of:  26  
C T   Comment                                                                   
  *   *** Top of Data Area ***                                                  
    1 EMPLOYEE                                                                  
    2 ATTRIBUTES_OF_EMPLOYEE                                                    
    3 PERSONNEL-ID                     A          8                             
  *                                                                             
    2 FULL-NAME                                                                 
    3 FIRST-NAME                       A         20                             
    3 NAME                             A         20                             
  *                                                                             
    2 FULL-ADDRESS                                                              
    3 C@ADDRESS-LINE                   I          4                             
    3 ADDRESS-LINE                     A         20 (1:6)                       
    3 CITY                             A         20                             
    3 ZIP                              A         20                             
    3 COUNTRY                          A          3                             
  *                                                                             
    2 TELEPHONE                                                                 
    3 AREA-CODE                        A          6                             
    3 PHONE                            A         15                             
 

生成された DTD

<!ELEMENT EMPLOYEE (PERSONNEL-ID, FULL-NAME, FULL-ADDRESS, TELEPHONE, INCOME* )>

<!ELEMENT PERSONNEL-ID (#PCDATA ) >

<!ELEMENT FULL-NAME (FIRST-NAME, NAME )>
         <!ELEMENT FIRST-NAME  (#PCDATA )>
         <!ELEMENT NAME  (#PCDATA )>

<!ELEMENT FULL-ADDRESS (ADDRESS-LINE*, CITY, ZIP, COUNTRY )>
         <!ELEMENT ADDRESS-LINE  (#PCDATA )>
         <!ELEMENT CITY  (#PCDATA )>
         <!ELEMENT ZIP  (#PCDATA )>
         <!ELEMENT COUNTRY  (#PCDATA )>
...

生成された DTD は、後で XML ドキュメントへのシリアライズに使用されます(下記参照)。

データの XML へのシリアライズ

Natural プログラムの実行中、DEFINE DATA ステートメントに定義されたデータの内容は、"実際の" 内容で埋められます。 この内容は、シリアライズ中に XML 形式でダイナミック変数に書き込まれます。このとき、以前に生成された DTD が入力として使用されます。

データをシリアライズするプログラムは、XML ツールキットによって生成されます。

<?xml version="1.0" encoding="iso-8859-1" ?> 
<EMPLOYEE PERSONNEL-ID="30016509">
<FULL-NAME>
  <FIRST-NAME>ELSPETH</FIRST-NAME> 
  <NAME>TROWBRIDGE</NAME> 
</FULL-NAME>
<FULL-ADDRESS>
  <ADDRESS-LINE>91 BACK LANE</ADDRESS-LINE> 
  <ADDRESS-LINE>BILSTON</ADDRESS-LINE> 
  <ADDRESS-LINE>STAFFORDSHIRE</ADDRESS-LINE> 
  <CITY>BILSTON</CITY> 
  <ZIP>ST2 3KA</ZIP> 
  <COUNTRY>UK</COUNTRY> 
</FULL-ADDRESS>
<TELEPHONE>
  <PHONE>863322</PHONE>
  <AREA-CODE>0602</AREA-CODE>
</TELEPHONE>
...

DTD の Natural データ定義へのマップ

DTD の Natural データ構造へのマッピングにも、違いがあります。 DTD では XML ドキュメントに何人分のレコードが含まれるかを指定しないため、ツールキットでは、最大 "v" 人分のレコードが含まれることを想定します。 アプリケーションプログラマは、正確な数を把握すれば、この数に合わせてデータ構造を修正できます。 同じような制限がデータ長にも存在します。 DTD では、各人のレコードにデータ長に関する情報が含まれていません。 このため、ツールキットで、データ構造に長さ 253(現在の最大長)のフィールドを作成します。

* DTD E:\SAG\nat\4.2\fnat\SYSEXXT\RES\empl.dtd
COMPRESS &1& '<EMPLOYEE'
  ' PERSONNEL-ID="'EMPLOYEE.PERSONNEL-ID "'
  '>' INTO &1& LEAVING NO
/* now the children
COMPRESS &1& '<FULL-NAME'
  '>' INTO &1& LEAVING NO
/* now the children
COMPRESS &1& '<FIRST-NAME'
  '>'
  EMPLOYEE.FIRST-NAME
  '</FIRST-NAME>' INTO &1& LEAVING NO
COMPRESS &1& '<NAME'
  '>'
  EMPLOYEE.NAME
  '</NAME>' INTO &1& LEAVING NO
/*
COMPRESS &1& '</FULL-NAME>' INTO &1& LEAVING NO
COMPRESS &1& '<FULL-ADDRESS'
  '>' INTO &1& LEAVING NO
/* now the children
FOR &2& = 1 TO EMPLOYEE.C@ADDRESS-LINE
  COMPRESS &1& '<ADDRESS-LINE'
    '>'
    EMPLOYEE.ADDRESS-LINE(&2&)
    '</ADDRESS-LINE>' INTO &1& LEAVING NO
END-FOR
...

XML ファイルの解析および Natural データへの割り当て

* DTD E:\SAG\nat\4.2\fnat\SYSEXXT\RES\empl.dtd
DECIDE ON FIRST &1&
  VALUE 'EMPLOYEE'
    RESET INITIAL EMPLOYEE
  VALUE 'EMPLOYEE/@PERSONNEL-ID'
    /* #REQUIRED
    EMPLOYEE.PERSONNEL-ID := &3&
  VALUE 'EMPLOYEE/FULL-NAME'
    IGNORE
  VALUE 'EMPLOYEE/FULL-NAME/FIRST-NAME'
    IGNORE
  VALUE 'EMPLOYEE/FULL-NAME/FIRST-NAME/$'
    EMPLOYEE.FIRST-NAME := &3&
  VALUE 'EMPLOYEE/FULL-NAME/NAME'
    IGNORE
  VALUE 'EMPLOYEE/FULL-NAME/NAME/$'
    EMPLOYEE.NAME := &3&

...

Top of page

今後の方針

XML ツールキットによって、Natural で XML がより高度にサポートされるようになりました。 XML ツールキットは、最初にリリースされた後、拡張される可能性があります。 ただし、主な目標は、将来のリリースにおいて Natural の強力な言語の一部として XML 機能を実装することです。

Top of page

考慮事項と制限事項

XML ツールキットを使用する場合は、次の制限を考慮する必要があります。

非常に大きなデータ構造

データ構造のデータフィールドおよびグループの数が約 700 を超えた場合は、次のメッセージが表示されます。

Input Structure too big

解決策

データ構造をより小さいセクションに分割します。

Top of page