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 を受け取りデータ項目として使用することはできません。
| 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) と同じです。 |
|
||
未解決の参照
未解決のエンティティー参照とは、文書タイプ定義 (DTD) で宣言されていないエンティティーの名前を参照することです。
XML 文書に文書タイプ宣言 (<!DOCTYPE ...>) が含まれない場合、文字内容の未解決のエンティティー参照で EXCEPTION XML イベントが発生します。パーサーが文字データの未解決の参照で EXCEPTION イベントの代わりに UNRESOLVED-REFERENCE イベントをシグナル通知するようにするには、XML 文書に少なくとも最小限の文書タイプ宣言を含めます。以下はその例です。
<!DOCTYPE rootName>文書に文書タイプ宣言が含まれていても、パーサーは、常に属性値の未解決の参照で EXCEPTION XML イベントをシグナル通知します。