MF 

XML 構文 - WRITE 文

XML 構文内の WRITE 文は、入出力ストリームへの XML ドキュメントの書き込み、または XML ドキュメントのメモリ内表現への XML 要素の追加を行う。

形式


XML Syntax - WRITE statement

構文規則:

  1. record-name-1 は、データ部の XD レコード宣言で定義された 01 レベルの集団項目の名前である。
  2. data-name-1 は、修飾が可能であり、IDENTIFIED BY 句を宣言に含むと同時にその宣言が file-name-1 の XD レコード宣言に含まれるデータ項目を参照する。

一般規則:

  1. KEY IS 句のない WRITE 文は、指定されたレコードを取得し、新しい内部表現を作成して (存在しない場合)、その内部表現をストリームに書き込む。
  2. XML ファイルが I-O で開かれている場合、次の条件を満たしていると、
    • 内部表現が READ 文で作成されている
    • 内部表現が WRITE、REWRITE、または DELETE KEY 文の組み合わせで変更されている
    • KEY IS 句のない WRITE 文が実行されている
    指定されたレコードの現在の内容は無視される。代わりに、READ で設定され、WRITE、REWRITE、または DELETE KEY 文で変更された内部表現がストリームに書き込まれる。
  3. WRITE KEY IS PLAIN-TEXT、data-name-2、または literal-1 は、XML ストリームに出力されるプレーン テキストを含む文字列値である。
  4. WRITE KEY IS PLAIN-TEXT は、「Content-type: text/xml」のような装飾になる。
  5. 実際には、WRITE KEY IS 文ではストリーム入出力を行わない。
  6. AT END および INVALID KEY はサポートされていない。代わりに XML ファイル状態変数を使用する。
  7. WRITE KEY IS は、指定されたノードを XML ドキュメントの内部表現 (現在位置の直後) に追加する。指定されたノードについて、包含ノードが必要な場合は、それらのノードも内部表現内に作成される。
  8. ALL を指定した場合、内包されるノードも XML ドキュメントの内部表現に追加される。それ以外の場合は、指定されたノードとその属性およびデータのみが追加される。ストリーム入出力は行われない。
  9. WRITE KEY IS PROCESSING-INSTRUCTION は、XML 処理命令ノードを現在位置の直後に追加する。シーケンシャル入出力では、他の WRITE 文が KEY 句を使用しない場合、処理命令は、その実行順序に応じて XML レコード全体の前または後に書き込まれる。ランダム入出力では、次のシーケンスを使用して、任意の既存ノードの直前または直後に処理命令を書き込むことができる。
    START  xml_file_record KEY IS xml_file_node
        IF write-after
           READ xml_file_record NEXT KEY IS xml_file_node
        END-IF
        WRITE  xml_file_record KEY IS PROCESSING-INSTRUCTION 'processing-id processing-data'

    この方法は、ルート ノードおよび処理命令「xml version="1.0"」を扱う場合などに役立つ。

  10. WRITE KEY IS PROCESSING-INSTRUCTION を使用する場合には、
    • data-name-2 は、定義されたレベル 78 または単純なデータ名である。
    • literal-1 は、XML 特有の処理命令を含む文字列値である。この文字列には、出力時に XML 区切り記号「<? 」および「?>」が付けられる。
  11. WRITE KEY IS PLAIN-TEXT は、プレーン テキスト ノードを現在位置の直後に追加する。シーケンシャル入出力では、他の WRITE 文が KEY 句を使用しない場合、プレーン テキストは、その実行順序に応じて XML レコードの前または後に書き込まれる。ランダム入出力では、次のシーケンスを使用して、任意の既存ノードの直前または直後にプレーン テキストを書き込むことができる。
    START  xml_file_record KEY IS xml_file_node
        IF write-after
           READ xml_file_record NEXT KEY IS xml_file_node
        END-IF
        WRITE  xml_file_record KEY IS PLAIN-TEXT  'processing-id processing-data'

    この方法は、CGI コンテキストで動作する「Content-type: text/xml」を指定する場合など、XML プログラムでプレーン テキスト データによって XML レコードを「装飾する」必要がある場合に役立つ。

  12. XML ドキュメントの内部表現が WRITE KEY、REWRITE KEY、または DELETE KEY 文によって変更され、その内部表現が CLOSE または READ (キーなし) 文でクリアされると、CLOSE または READ 文は、操作が正常終了したにもかかわらず書き込みは行われなかったことを示す -10 の状態を返す。