XML 構文解析用のインターフェースには、大きく分けてイベント・ベース とツリー・ベースの 2 種類があります。
イベント・ベース API の場合、パーサーはコールバックによって アプリケーションにイベントを報告します。 報告されるイベントは、文書の開始、エレメントの開始などです。 アプリケーションは、パーサーによって報告されるイベントを処理する ためのハンドラーを備えています。 Simple API for XML (SAX) は、業界標準のイベント・ベース API の 一例です。
ツリー・ベース API (文書オブジェクト・モデル (DOM) など) の場合、 パーサーは XML をツリー・ベースの内部表現に変換します。 ツリーをナビゲートするためのインターフェースが提供されています。
IBM PL/I は、XML 文書の構文解析用に SAX のようなイベント・ベースのインターフェースを提供します。パーサーは、対応する文書フラグメントへの参照を渡して、 アプリケーション提供のパーサー・イベント用のハンドラーを呼び出します。
パーサーには次の特性があります。
XML 文書の準拠レベルには適格性と有効性の 2 つがあり、 どちらのレベルも XML 標準に定義されています。 XML 標準は、http://www.w3c.org/XML/ に掲載されています。 これらの定義を要約すると、XML 文書が基本的な XML 文法と、 いくつかの特定の規則 (開始エレメントと終了エレメントの タグが一致していることなどの要件) に準拠していれば、 XML 文書は整形式です。さらに、整形式 XML 文書に文書タイプ宣言 (DTD) が 関連していて、文書が DTD に表された制約に準拠している場合、 その文書は有効です。
XML パーサーは有効性検査を行いませんが、適格性のエラーを 部分的に検査し、エラーを発見した場合は例外イベントを生成します。
それぞれのパーサー・イベントごとに、下記のコード例に示すように、 適切なパラメーターを受け入れて適切な戻り値を戻す PL/I 関数を用意する必要があります。 特に、戻り値は BYVALUE で戻す必要があることに注意してください。 また、これらの関数は、すべて OPTLINK リンケージを使用する必要があります。 DEFAULT(LINKAGE(OPTLINK)) オプションを使用してこのリンケージを指定するか、 または OPTIONS(LINKAGE(OPTLINK)) 属性を使用して、個々の PROCEDURE および ENTRY でこのリンケージを指定することができます。