Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


XML-EVENT

XML-EVENT 特殊レジスターは、XML パーサーと XML PARSE ステートメントで識別された処理プロシージャーとの間のイベント情報のやり取りに使用されます。XML パーサーは、処理プロシージャーに制御を渡す前に、XML-EVENT 特殊レジスターを XML イベントの名前に設定します。設定される特定のイベントおよび関連付けられる特殊レジスターは、XMLPARSE コンパイラー・オプション XMLPARSE(XMLSS) または XMLPARSE(COMPAT) の設定によって決まります。

XMLPARSE(XMLSS) が有効な場合、パーサーは、次の特殊レジスターを使用します。

XMLPARSE(COMPAT) が有効な場合、パーサーは、次の特殊レジスターを使用します。

パーサーは、XML 文書が国別データ項目にあると、関連付けられた XML テキストに XML-NTEXT を設定し、XML 文書が英数字データ項目にあると、XML-TEXT を設定します。 XMLPARSE(COMPAT) コンパイラー・オプションが有効な場合、パーサーは、XML 文書のデータ項目の型に関係なく、XML-NTEXT をいずれかの数字参照のテキストに設定します (イベント ATTRIBUTE-NATIONAL-CHARACTER および CONTENT-NATIONAL-CHARACTER の場合)。

XMLPARSE(XMLSS) コンパイラー・オプションが有効な場合、パーサーは、XML 文書が国別データ項目内にあり、XMLPARSE ステートメントに RETURNING NATIONAL 句が指定されていると、XML-NNAMESPACE および XML-NNAMESPACE-PREFIX を設定します。それ以外は XML-NAMESPACE および XML-NAMESPACE-PREFIX を設定します。

表 1 には、XMLPARSE(XMLSS) および XMLPARSE(COMPAT) オプションで構文解析する場合の XML イベントおよび特殊レジスターの内容を示しています。

XML-EVENT には、次のような暗黙の定義があります。

01  XML-EVENT USAGE DISPLAY PICTURE X(30) VALUE SPACE.

ネストされたプログラムで使用される場合、 この特殊レジスターは最外部プログラムの GLOBAL 属性で暗黙的に定義されます。

XML-EVENT を受け取りデータ項目として使用することはできません。

表 1. XML イベントおよび関連する特殊レジスターの内容
XML-EVENT XMLPARSE(XMLSS)1 XMLPARSE(COMPAT)1
ATTRIBUTE-CHARACTER 適用外5 XML-TEXT または XML-NTEXT には、属性値内の事前定義のエンティティー参照に対応する 1 文字が入ります。
ATTRIBUTE-CHARACTERS XML-TEXT または XML-NTEXT には、引用符またはアポストロフィで囲まれた値が入ります。 XML-TEXT または XML-NTEXT には、引用符またはアポストロフィで囲まれた値が入ります。値にエンティティー参照が含まれているときは、この値は属性値のサブストリングである場合があります。
ATTRIBUTE-NAME ネーム・スペースにない属性名の場合、XML-TEXT または XML-NTEXT には、属性名が入ります。

デフォルト以外のネーム・スペースにある名前を持つ属性の場合、属性名は、常に接頭部が付いており、接頭部 :ローカル部分 = "AttValue" の形式になっています。

XML-TEXT または XML-NTEXT にはローカル部分、XML-NAMESPACE または XML-NNAMESPACE にはネーム・スペース ID、XML-NAMESPACE-PREFIX または XML-NNAMESPACE-PREFIX には接頭部 がそれぞれ入ります。

XML-TEXT または XML-NTEXT には、属性名 (等号の左のストリング) が入ります。
ATTRIBUTE-NATIONAL-CHARACTER 適用外5

(ターゲットのコード化文字セットに対応するコード・ポイントのない数字参照は、ハイフン (マイナス記号) で置き換えられます。

XML 文書のタイプに関係なく、XML-TEXT は空で、長さがゼロになり、XML-NTEXT には数字参照に対応する 1 文字の国別文字が入ります2
COMMENT XML-TEXT または XML-NTEXT には、開始文字シーケンス「<!--」と終了文字シーケンス「-->」で囲まれたコメントのテキストが入ります。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
CONTENT-CHARACTER 適用外5 XML-TEXT または XML-NTEXT には、要素コンテント内の事前定義のエンティティー参照に対応する 1 文字が入ります。
CONTENT-CHARACTERS XML-TEXT または XML-NTEXT には、開始タグと終了タグに囲まれたエレメントの文字内容が入ります。 XML-TEXT または XML-NTEXT には、開始タグと終了タグに囲まれたエレメントの文字内容が入ります。文字内容のサブストリングにエンティティー参照または別のエレメントが含まれる場合は、これをこの文字内容のサブストリングにすることができます。
CONTENT-NATIONAL-CHARACTER 適用外5

(ターゲットのコード化文字セットに対応するコード・ポイントのない数字参照は、ハイフン (マイナス記号) で置き換えられます。

XML 文書のタイプに関係なく、XML-TEXT は空で、長さがゼロになり、XML-NTEXT には数字参照に対応する 1 文字の国別文字が入ります2
DOCUMENT-TYPE-DECLARATION XML-TEXT または XML-NTEXT には、文書タイプ宣言に指定されたルート・エレメントの名前が入ります。 XML-TEXT または XML-NTEXT には、開始文字シーケンス「<!DOCTYPE」と終了文字シーケンス「>」で囲まれた文書タイプ宣言全体が入ります。
ENCODING-DECLARATION XML-TEXT または XML-NTEXT には、引用符またはアポストロフィで囲まれた、XML 宣言内のエンコード宣言の値が入ります。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
END-OF-CDATA-SECTION XML-CODE および XML-EVENT を除くすべての XML 特殊レジスターは空で、長さがゼロになります。 XML-TEXT または XML-NTEXT には、ストリング「]]>」が入ります。
END-OF-DOCUMENT XML-CODE および XML-EVENT を除くすべての XML 特殊レジスターは空で、長さがゼロになります。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
END-OF-ELEMENT XML-TEXT または XML-NTEXT には、終了エレメント・タグまたは空エレメント・タグの名前のローカル部分が入ります。

エレメント名がデフォルト以外のネーム・スペースにある場合、XML-NAMESPACE または XML-NNAMESPACE にはネーム・スペース ID が入ります。

エレメント名がネーム・スペースにあり、接頭部が付いている (接頭部:ローカル部分 の形式になっている) 場合、XML-NAMESPACE-PREFIX または XML-NNAMESPACE-PREFIX には接頭部が入ります。

XML-TEXT または XML-NTEXT は、終了エレメント・タグの名前が入るか、空のエレメント・タグとなります。
END-OF-INPUT XML-CODE および XML-EVENT を除くすべての XML 特殊レジスターは空で、長さがゼロになります。

XML 文書の追加セグメントを構文解析するには、次のセグメントを ID-1 に移し、XML-CODE を 1 に設定します。

適用外6
EXCEPTION XML-CODE には、例外を示す固有のエラー・コードが入ります。

XML-TEXT または XML-NTEXT には、例外の原因となったエラーまたは異常状態の発生時点までの文書フラグメントが入ります4

他のすべての XML 特殊レジスターは空で、長さがゼロになります。

XML-CODE には、例外を示す固有のエラー・コードが入ります3

XML-TEXT または XML-NTEXT には、例外が検出された時点までの正常にスキャンされた文書部分が入ります。

NAMESPACE-DECLARATION XML-TEXT と XML-NTEXT の両方が空で、長さがゼロになります。

XML-NAMESPACE または XML-NNAMESPACE には、宣言されたネーム・スペース ID が入ります。空ストリングを指定することでネーム・スペースが「宣言されていない」場合は、XML-NAMESPACE および XML-NNAMESPACE は空で、長さがゼロになります。

ネーム・スペース宣言の形式が xmlns:接頭部 = "ネーム・スペース ID" である場合、XML-NAMESPACE-PREFIX または XML-NNAMESPACE-PREFIX には、接頭部が入ります。それ以外の場合、宣言がデフォルトのネーム・スペースを対象にし、属性名が xmlns であると、XML-NAMESPACE-PREFIX と XML-NNAMESPACE-PREFIX はともに空で、長さがゼロになります。

適用外6

(代わりに、ATTRIBUTE-NAME および ATTRIBUTE-CHARACTERS イベントがシグナル通知されます。)

PROCESSING-INSTRUCTION-DATA XML-TEXT または XML-NTEXT には、処理命令の残りの部分 (ターゲット名の後) が入り、終了シーケンス「?>」は含まれませんが、末尾の空白文字と先頭以外の空白文字は含まれます。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
PROCESSING-INSTRUCTION-TARGET XML-TEXT または XML-NTEXT には、処理命令の開始シーケンス「<?」の直後に出現する、処理命令のターゲット名が入ります。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
STANDALONE-DECLARATION XML-TEXT または XML-NTEXT には、XML 宣言内のスタンドアロン宣言の引用符またはアポストロフィで囲まれた値 ("yes" または "no") が入ります。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
START-OF-CDATA-SECTION XML-CODE および XML-EVENT を除くすべての XML 特殊レジスターは空で、長さがゼロになります。 XML-TEXT または XML-NTEXT には、ストリング「<![CDATA[」が入ります。
START-OF-DOCUMENT XML-CODE および XML-EVENT を除くすべての XML 特殊レジスターは空で、長さがゼロになります。 XML-TEXT または XML-NTEXT には、文書全体が入ります。
START-OF-ELEMENT XML-TEXT または XML-NTEXT には、開始エレメント・タグ名のローカル部分または空エレメント・タグ名のローカル部分が入ります。

エレメント名がネーム・スペースにある場合、XML-NAMESPACE または XML-NNAMESPACE にはネーム・スペース ID が入ります。

エレメント名がネーム・スペースにあり、接頭部が付いている (接頭部:ローカル部分 の形式になっている) 場合、XML-NAMESPACE-PREFIX または XML-NNAMESPACE-PREFIX には接頭部が入ります。

XML-TEXT または XML-NTEXT には、開始エレメント・タグまたは空エレメント・タグの名前 (エレメント・タイプともいいます) が入ります。
UNKNOWN-REFERENCE-IN-ATTRIBUTE 適用外5 XML-TEXT または XML-NTEXT には、エンティティー参照名 (区切り文字の「&」と「;」を除く) が入ります。
UNKNOWN-REFERENCE-IN-CONTENT 適用外5

XMLPARSE(XMLSS) の場合、パーサーは代わりに UNRESOLVED-REFERENCE イベントをシグナル通知する場合があります。

XML-TEXT または XML-NTEXT には、エンティティー参照名 (区切り文字の「&」と「;」を除く) が入ります。
UNRESOLVED-REFERENCE XML-TEXT または XML-NTEXT には、XML の内容のエンティティー名 (区切り文字の「&」と「;」を除く) が入ります。

詳細については、以下の『未解決の参照』を参照してください。

適用外6

(パーサーは、代わりに UNKNOWN-REFERENCE-IN-CONTENT をシグナル通知します。)

VERSION-INFORMATION XML-TEXT または XML-NTEXT には、引用符またはアポストロフィで囲まれた、XML 宣言内のバージョン情報の値が入ります。 XML-TEXT または XML-NTEXT の内容は、XMLPARSE(XMLSS) と同じです。
  1. EXCEPTION を除くすべてのイベントでは、XML-CODE にゼロが入ります。明記されている場合を除いて、ネーム・スペース XML レジスター (XML-NAMESPACE、XML-NNAMESPACE、XML-NAMESPACE-PREFIX、および XML-NNAMESPACE-PREFIX) は空で、長さがゼロになります。
  2. 65,535 (NX"FFFF") より大きいスカラー値を持つ国別文字は、2 つのエンコード・ユニット (「サロゲート・ペア」) を使用して表現されます。XML-NTEXT の内容に対する操作によって図形文字を構成するエンコード・ユニットが分割されると、 無効データが形成されるので、プログラマーはこのような分割が発生しないように考慮する必要があります。
  3. XMLPARSE(COMPAT) の場合、エンコード矛盾の例外は、構文解析が開始される前にシグナル通知されます。 このような例外の場合、XML-TEXT または XML-NTEXT は長さゼロになるか、文書のエンコード宣言値のみを含みます。XML 例外コードの詳細については、「Enterprise COBOL プログラミング・ガイド」を参照してください。
  4. END-OF-INPUT XML イベントが前に発生し、処理プロシージャーが新しい文書セグメントを提供していた場合、XML-TEXT または XML-NTEXT には新しいセグメントのみが入ります。

    構文解析の開始前に異常状態が発生した (例えば、エンコード仕様が無効である) 場合、XML-TEXT または XML-NTEXT は空で、長さがゼロになります。

    フラグメントには異常状態が含まれることもあれば、含まれないこともあります。例えば、属性名が重複している場合、フラグメントに正しくない属性が含まれます。無効文字の場合、フラグメントには、無効文字の直前までの文書テキストが含まれます (無効文字は含まれません)。

  5. 適用外。XMLPARSE(COMPAT) の場合のみ発生します。
  6. 適用外。XMLPARSE(XMLSS) の場合のみ発生します。

未解決の参照

未解決のエンティティー参照とは、文書タイプ定義 (DTD) で宣言されていないエンティティーの名前を参照することです。

XML 文書に文書タイプ宣言 (<!DOCTYPE ...>) が含まれない場合、文字内容の未解決のエンティティー参照で EXCEPTION XML イベントが発生します。パーサーが文字データの未解決の参照で EXCEPTION イベントの代わりに UNRESOLVED-REFERENCE イベントをシグナル通知するようにするには、XML 文書に少なくとも最小限の文書タイプ宣言を含めます。以下はその例です。

<!DOCTYPE rootName>

文書に文書タイプ宣言が含まれていても、パーサーは、常に属性値の未解決の参照で EXCEPTION XML イベントをシグナル通知します。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)