XML PARSE 文は、COBOL 実行時システムの一部である XML パーサーとのインターフェイスに使用される。XML PARSE 文は、XML 文書を各部に分けて解析し、各部を 1 つずつ、利用者が書いた処理手続きへと渡す。
一般形式
構文規則
- identifier-1 は英数字または各国文字データ項目でなければならず、関数一意名であってはならない。また、XML 文書文字ストリームを含んでいるものとする。identifier-1 が各国文字データ項目の場合、その内容は CCSID 1200
(Unicode UTF-16) を使用して符号化されていなければならない。ここには、複数の符号化単位を使用して表現された文字が含まれてはならない。そのような文字を表現するには、"" や "" などの文字参照を使用すること。
- identifier-1 を動的長集団項目または動的長基本項目にすることはできない。
- procedure-name-1 は、処理手続き中の最初または唯一の節または段落を指定する。
- procedure-name-2 は、処理手続き中の最後の節または段落を指定する。
- codepage は、有効な符号化文字集合の一意名 (CCSID) を表す符号なしの整数データ項目または符号なしの整数定数でなければならない。
- identifier-1 が参照するデータ項目の項類が各国文字の場合、codepage の指定は CCSID 1200 (Unicode UTF-16) でなければならない。
- identifier-1 が参照するデータ項目の項類が英数字の場合、codepage の指定は CCSID 1208 (UTF-8) であるか、サポートされる 1140 または 1047 のいずれかでなければならない。
- identifier-2 の項類は英数字でなければならず、関数一意名であってはならない。
- identifier-2 を動的長集団項目または動的長基本項目にすることはできない。
- xml-schema-name-1 は、特殊名段落の XML-SCHEMA 句で定義されていなければならない。
- RETURNING NATIONAL 指定は、XMLPARSE(XMLSS) コンパイラ オプションが有効な場合にのみ記述できる。
- VALIDATING 指定は、XMLPARSE(XMLSS) コンパイラ オプションが有効な場合にのみ記述できる。
- ENCODING 指定は、XMLPARSE(XMLSS) コンパイラ オプションが有効な場合にのみ記述できる。
一般規則
- PROCESSING PROCEDURE 指定は、XML パーサーが生成するさまざまなイベントを取り扱う手続きの名前を指定する。この処理手続きは、XML イベントを取り扱う文により構成される。処理手続きの範囲には、この手続き中の CALL、EXIT、GO
TO、GOBACK、INVOKE、および PERFORM の各文により実行されるすべての文も含まれる。処理手続きの最後の文の後に、コンパイラによって復帰機構が組み込まれる。処理手続きは、STOP RUN 文で実行単位を終了することができるが、GOBACK
文または EXIT PROGRAM 文でパーサーへ戻ろうとしてはならない。
- ENCODING 指定は、identifier-1 のソース XML 文書の想定される符号化を指定する。
- identifier-1 が各国文字データ項目を参照する場合、返される XML 文書要素は常に Unicode UTF-16 形式となり、各国文字の特殊レジスタ XML-NTEXT、XML-NNAMESPACE、および XML-NNAMESPACE-PREFIX
で返される。
- RETURNING NATIONAL 指定が記述されており、identifier-1 が参照するデータ項目の項類が英数字の場合、XML 文書要素は自動的に Unicode UTF-16 表現に変換され、各国文字の特殊レジスタ XML-NTEXT、XML-NNAMESPACE、および
XML-NNAMESPACE-PREFIX で処理手続きに返される。
- RETURNING NATIONAL 指定が記述されておらず、identifier-1 が参照するデータ項目の項類が英数字の場合、XML 文書要素は英数字の特殊レジスタ XML-TEXT、XML-NAMESPACE、および XML-NAMESPACE-PREFIX
で処理手続きに返される。ただし、XML イベント ATTRIBUTE-NATIONAL-CHARACTER および CONTENT-NATIONAL-CHARACTER のテキストは例外で、常に特殊レジスタ XML-NTEXT で返される。
- VALIDATING 指定は、パーサーによる XML 文書の解析時に XML スキーマと照合して検証するように指定する。XML の検証に使用するスキーマは、処理されないテキストの形式で記述する必要がある。
- FILE キーワードが指定されていない場合は、identifier-2 で XML スキーマを含むデータ項目を参照しなければならない。
- FILE キーワードが指定されている場合は、xml-schema-name-1 で XML スキーマを含む既存のファイルを指定する。
解析で検証を実行する場合も、検証エラーやその他の文書のエラーによって例外が発生しない限りは、検証なしの解析と同様に通常の XML イベントが返される。
XML 文書が有効でない場合、パーサーは XML 例外を通知して処理手続きに制御を渡し、「EXCEPTION」を含む特殊レジスタ XML-EVENT と上位半語の戻りコード 24 および下位半語の理由コードを含む特殊レジスタ XML-CODE
を返す。
- ON EXCEPTION 指定は、XML PARSE 文で例外条件が発生した場合に実行される無条件文を指定する。例外条件は、XML 文書の処理中に XML パーサーがエラーを検出した場合に発生する。パーサーはまず、「EXCEPTION」を含むように設定された特殊レジスタ
XML-EVENT とともに、処理手続きに制御を渡して、例外 XML イベントを通知する。その後、特殊レジスタ XML-CODE に数値エラー コードを与える。
例外条件はまた、通常の XML イベントからパーサーに戻る前に、処理手続きで XML-CODE を -1 に設定して故意に解析を終了した場合にも発生する。この場合、パーサーは EXCEPTION XML イベントを通知しない。以下が適用される。
- ON EXCEPTION 指定が記述されている場合、制御が imperative-statement-1 に移される。
- ON EXCEPTION 指定が記述されていない場合、NOT ON EXCEPTION 指定が記述されていても無視され、制御が XML PARSE 文の最後に移される。
- XML 処理手続きが例外 XML イベントを取り扱い、パーサーに制御を返す前に XML-CODE をゼロに設定した場合、例外条件は発生しない。
- 取り扱われない例外がほかに発生せずにパーサーが終了した場合、NOT ON EXCEPTION 指定の imperative-statement-2 が指定されていれば imperative-statement-2 に制御が移される。
- NOT ON EXCEPTION 指定は、XML PARSE 処理の終了時に例外条件がまったく存在しない場合に実行される無条件文を指定する。以下が適用される。
- 例外条件が XML PARSE 処理の終了時にまったく存在しない場合、NOT ON EXCEPTION 指定の imperative-statement-2 が指定されていれば imperative-statement-2 に制御が移される。
- NOT ON EXCEPTION 指定が記述されていない場合、制御が XML PARSE 文の最後に移される。この場合、ON EXCEPTION 指定はあっても無視される。XML PARSE 文の実行後に、特殊レジスタ XML-CODE にはゼロが含まれる。
-
XMLPARSE"COMPAT" が設定されており、ネイティブ COBOL で実行されている場合、' などの XML 文字エンティティは個別のイベントとして出力される。XMLPARSE"XMLSS" が設定されており、JVM COBOL で実行されている場合、XML エンティティは、そのエンティティが表す単一の文字に変換され、そのエンティティを囲む一般的なテキストとともに単一のイベントを生成する。