XML-SAX (XML 文書の構文解析)

コード 演算項目 1 拡張演算項目 2
XML-SAX{(E) }   %HANDLER(handlerProc : commArea) %XML(xmlDoc {: オプション })

ヒント: XML および XML 文書の処理の基本概念に ついて十分理解していない場合は、以下のセクションを読み進める前に、 Rational Development Studio for i ILE RPG プログラマーの手引きのセクション『XML 文書の処理』を参照すると理解に役立ちます。

XML-SAX は XML 文書の SAX 構文解析を開始します。 XML-SAX 命令コードは、文書の構文解析を開始する XML パーサーを呼び出すことにより開始します。 パーサーによる要素の開始の検出、属性名の検出、および要素の終了の検出などのイベントが発生した場合、パーサーはそのイベントを記述したパラメーターで処理プロシージャー handlerProc を呼び出します。 処理プロシージャーが戻ると、パーサーは次のイベントが検出されるまで構文解析を継続し、再度処理プロシージャーを呼び出します。 パーサーがその文書の構文解析を完了すると、XML-SAX 命令の後のステートメントに制御が渡されます。

第 1 オペランドは %HANDLER 組み込み関数にする必要があります。 handlerProc は SAX イベントを処理するために呼び出されるプロシージャーを指定するプロトタイプ名であり、commArea はパーサーから処理プロシージャーに受け渡される通信域パラメーターです。 通信域パラメーターは、処理プロシージャーの第 1 プロトタイプ・パラメーターを同じタイプである必要があります。 それにより、XML-SAX 命令コードを指定するプロシージャーが処理プロシ ージャーと通信する方法、および処理プロシージャーがあるイベントから次 のイベントに構文解析に関連する情報を保管する方法が提供されます。 %HANDLER について詳しくは、%HANDLER (handlingProcedure : communicationArea )を参照してください。

第 2 オペランドは %XML 組み込み関数にする必要があり、構文解析される XML 文書およびその構文解析方法を制御するオプションを識別します。 %XML について詳しくは、%XML (xmlDocument {:options })を参照してください。

命令拡張 E を指定すると、以下の状況コードを処理できます。
00351
XML 構文解析時のエラー。
00352
無効な XML オプション。
00354
XML 構文解析の準備時エラー。

状況 00351 の場合、パーサーからの戻りコードは、PSDS の 368 から 371 桁目のサブフィールド「外部戻りコード」に配置されます。 このサブフィールドは、命令の開始時にゼロに設定され、命令の終了時にはパーサーにより戻された値に設定されます。 このサブフィールドは、XML-SAX 命令のあるモジュール内にのみ関係します。 SAX イベント処理プロシージャーは、パーサーからの情報をパラメーターとして受け取ります。

構文解析の開始前に例外が発生した場合には、イベント処理プロシージャーは呼び出されません。 例えば、指定されたファイルが検出されなかった場合、その命令は状況コード 00354 で即時に終了し、イベント処理プロシージャーに制御が移されることはありません。

構文解析時にエラーが発生した場合は *XML_EXCEPTION イベントを使用して処理プロシージャーが呼び出され、処理プロシージャーが戻ったときに構文処理が終了し、XML-SAX 命令は状況コード 00351 で失敗します。 パーサーからの戻りコードは、PSDS の 368 から 371 桁目の「外部戻りコード」サブフィールドに配置されます。

%XML オプション・ストリングにおいて不明、無効、または無関係のオプションが検出された場合、XML-SAX は状況コード 00352 で失敗します。 PSDS の 368 から 371 桁目の外部戻りコード・サブフィールドは、命令の開始時に設定された初期値のゼロから更新されません。