XML 文書の中にエラーがあるのを検出すると、XML パーサーは XML 例外イベントを生成し、制御を処理プロシージャーに渡します。
パーサーは、以下の情報を特殊レジスターに入れて提供します。
XMLPARSE(XMLSS) の場合、例外コードは下記の関連参照の z/OS XML System Services で記述されています。XMLPARSE(COMPAT) の場合、例外コードは下記の関連参照の XML PARSE 例外で記述されています。
すべての他の XML 特殊レジスターは空で、長さゼロです。
XMLPARSE(XMLSS) の場合
XMLPARSE(XMLSS) が有効である場合には、 パーサーに戻る前に XML-CODE をゼロに設定しても、例外発生後に構文解析を続行することはできません。 処理プロシージャーからパーサーに戻ると、パーサーは、XML PARSE ステートメントの ON EXCEPTION 句が指定されている場合はその句に制御を渡します。 指定されていない場合には、パーサーは XML PARSE ステートメントの最後に制御を渡します。 XML-CODE には、パーサーが設定した元の例外コードが含まれます。
XMLPARSE(COMPAT) の場合
XMLPARSE(COMPAT) が有効である場合、 例外コードの数字が次の範囲のいずれかである場合には、処理プロシージャーで例外を処理して、構文解析を続行することができます。
例外コードがその他のゼロ以外の値である場合は、構文解析を続けることはできません。 エンコード方式の矛盾の例外 (50 から 99 および 300 から 399) は、文書の構文解析が 開始される前にシグナル通知されます。 このような例外の場合、XML-TEXT または XML-NTEXT は長さがゼロになるか、文書のエンコード宣言値のみが入ります。
1 から 49 の範囲の例外は XML 仕様に基づく致命的エラーです。したがって、ユーザーが例外を処理しても、パーサーは通常の構文解析を続けることはできません。ただし、パーサーでは、文書の終わりに到達するまで、あるいは継続不能の原因となるエラーが検出されるまで、その他のエラーの走査を続けます。このような例外の場合、パーサーでは、END-OF-DOCUMENT イベント以外については、追加の標準イベントをシグナル通知しません。
関連概念
XML-CODE