PL/I での XML パーサー サポート

PL/I は、SAX に類似した、XML ドキュメントを構文解析するための イベント ベースのインターフェイスを提供しています。このパーサーは、リファレンスを対応するドキュメント フラグメントに渡すことで、パーサー イベント用のアプリケーション指定ハンドラーを起動します。

イベント ベースの API の場合、パーサーはコールバックを介してアプリケーションにイベントをレポートします。イベントには、ドキュメントの開始、要素の開始、ドキュメントの終了、およびその他のドキュメントに関連するアクティビティが含まれます。アプリケーションは、パーサーからレポートされる各イベントを処理する、ハンドラーを提供する必要があります。シンプルな SAX API は、その他の言語 (C など) 用に用意された SAX インターフェイスに従います。これには、標準は存在しません。

PL/I SAX パーサーには、PLISAXA、PLISAXB、および PLISAXC 組み込みサブルーチンが含まれます。PLISAXD 組み込みサブルーチンはまだサポートされていません。

パーサーは、次の動作が可能です。

XML ドキュメントの整合性には、整合性と妥当性という 2 つのレベルがあり、どちらも XML 標準で定義されています。原則的に、基本的な XML 文法とその他のいくつかの特定のルール (開始 / 終了要素タグ名の一致に関する要件など) に準拠していれば、XML ドキュメントは適格になります。また、適格な XML ドキュメントには、ドキュメント タイプ宣言 (Document Type Declaration; DTD) で表されている制約に準拠した、関連する DTD が含まれています。

PL/I 関数は、適切なパラメーターを受け入れ、各パーサー イベントに対して適切な戻り値を返す必要があります。また、戻り値は BYVALUE として戻る必要があります。

XML パーサー サポートの制限事項

-ebcdic オプションを使用してプログラムをコンパイルする場合、コールバック イベント ロジックでは、入力フォーマットが EBCDIC であってもコールバックに渡されるデータは ASCII であることが考慮されている必要があります。このため、データは使用前にコールバック内で変換される必要があります。さらに、FIXED BIN(31) として渡されるリファレンス値はすべて、ASCII 文字エンコーディング用です。

Intel Chip 上でプログラムが動作している場合、そのプログラムは -bigendian コンパイラ オプションを使用してビルドされたものとみなされます。-bigendian コンパイラ オプションを使用せずにプログラムをコンパイルした場合は、使用前にパラメーター タイプをビッグエンディアンからリトルエンディアンに変換する必要があります。