XML イベントの処理
パーサーが処理プロシージャーに渡すイベントを
判別するには、XML-EVENT 特殊レジスターを使用します。
XML-EVENT には、'START-OF-ELEMENT' 等のイベント名が含まれています。
パーサーは、XML PARSE ステートメント内の XML の ID のタイプに応じて、
特殊レジスター XML-TEXT または XML-NTEXT にイベントの内容を入れて渡します。
イベントは、基本的に、このサンプル XML 文書で発生する順番に示されています。
「サンプル XML テキスト」の下に示されているテキストは、このサンプルから来るものです。
正確なテキストは、区切り文字「<<>>」に囲まれています。
<?xml version="1.0" encoding="ibm-1140" standalone="yes" ?>
<!--This document is just an example-->
<sandwich>
<bread type="baker's best" />
<?spread please use real mayonnaise ?>
<meat>Ham & turkey</meat>
<filling>Cheese, lettuce, tomato, etc.</filling>
<![CDATA[We should add a <relish> element in future!]]>
</sandwich>junk
- START-OF-DOCUMENT
-
- 説明
- 文書の構文解析の最初に、1 回発生します。ここでは XML テキストは文書全体であり、
それは LF (ライン・フィード) や NL (改行) 等の、行の制御文字を含みます。
- サンプル XML テキスト
- このサンプルの場合のテキストは、長さ 336 文字です。
-
-
- VERSION-INFORMATION
-
- 説明
- オプションの XML 宣言の中で、バージョン情報に対して発生しま
す。
XML テキストは、バージョンの値を含みます。XML 宣言 とは、
使用されている XML のバージョンと文書のエンコード方式を指定する XML テキストです。
- サンプル XML テキスト
- <<1.0>>
-
-
- ENCODING-DECLARATION
-
- 説明
- XML 宣言の中で、オプションのエンコード宣言に対して発生します。
XML テキストは、エンコード方式の値を含みます。
- サンプル XML テキスト
- <<ibm-1140>>
-
-
- STANDALONE-DECLARATION
-
- 説明
- XML 宣言の中で、オプションのスタンドアロン宣言に対して発生します。
XML テキストは、スタンドアロン値を含みます。
- サンプル XML テキスト
- <<yes>>
-
-
- DOCUMENT-TYPE-DECLARATION
-
- 説明
- パーサーが、文書タイプ宣言 (DTD) を検出すると発生します。
文書タイプ宣言は、文字シーケンス「<!DOCTYPE」で始まり、
「>」の文字で終わります。その間の中身については、かなり複雑な文法
規則によって記述されています。
(「XML specification」を参照してください。)
このイベントに対しては、XML テキストは、開始文字シーケンスと終了文字シーケンスを含む宣言文全体を含みます。
このイベントは、XML テキストが区切り文字を含む、唯一のイベントです。
- サンプル XML テキスト
- サンプルには文書タイプ宣言がありません。
-
-
- COMMENT
-
- 説明
- XML 文書中のコメントに対して発生します。XML テキストは、
コメント開始区切り (「<!--」) および
コメント終了区切り (「-->」) の間のデータを含みます。
- サンプル XML テキスト
- <<This document is just an
example>>
-
-
- START-OF-ELEMENT
-
- 説明
- 各エレメント開始タグまたは空エレメント・タグに対して 1 回ずつ発生します。XML テキストには、
エレメント名が設定されます。
- サンプル XML テキスト
- START-OF-ELEMENT イベントとして発生する順番に挙げると次のようになります。
- <<sandwich>>
- <<bread>>
- <<meat>>
- <<filling>>
-
-
- ATTRIBUTE-NAME
-
- 説明
- エレメント開始タグまたは空エレメント・タグ中の各属性に対して、有効な属性名を認識する度に 1 回ずつ発生します。
XML テキストは、属性名を含みます。
- サンプル XML テキスト
- <<type>>
-
-
- ATTRIBUTE-CHARACTERS
-
- 説明
- 属性値の各断片に対して発生します。XML テキストは、断片を含みます。
属性値は、たとえ複数行にまたがって分かれている場合でも、通常は単一のストリングのみで構成されます。
しかし、属性値が複数のイベントで構成されることはあります。
- サンプル XML テキスト
- ATTRIBUTE-CHARACTERS イベントとして発生する順番に挙げると次のようになります。
- <<baker>>
- <<s best>>
サンプルの「type」属性の値が、3 つの断片から成り立っていることに注目してください。
ストリング「baker」単一の文字「'」、およびストリング「s best」です。
単一の文字「'」の断片は、ATTRIBUTE-CHARACTER イベントとして、別に渡されます。
-
-
- ATTRIBUTE-CHARACTER
-
- 説明
- 属性値の中で、事前定義エンティティー参照である
「&」、「'」、「>」、「<」、
および「"」に対して発生します。
事前定義エンティティーについては、「XML specification」を参照してください。
- サンプル XML テキスト
- <<'>>
-
-
- ATTRIBUTE-NATIONAL-CHARACTER
-
- 説明
- 属性値の中で、「&#dd..;」または「&#hh..;」という形式の
数字参照 (Unicode のコード・ポイントまたは「スカラー値」) に対して発生します。
ただし、ここでは「d」および「h」はそれぞれ 10 進数および 16 進数の桁を表しています。
- サンプル XML テキスト
- このサンプルには、数字参照は含まれていません。
-
-
- PROCESSING-INSTRUCTION-TARGET
-
- 説明
- パーサーが、処理命令 (PI) の開始文字シーケンスである、
「<?」に続く名前を認識すると発生します。PI により、XML 文書はアプリケーション用の特殊な命令を含むことができます。
- サンプル XML テキスト
- <<spread>>
-
-
- PROCESSING-INSTRUCTION-DATA
-
- 説明
- PI のターゲットに続くデータに対して発生します。
データは、PI の終了文字シーケンス (「?>」) までのものですが、終了文字シーケンスは含みません。
XML テキストに含まれる PI データは、後続のスペース文字を含みま
すが、先行のスペース文字は含みません。
- サンプル XML テキスト
- <<please use real mayonnaise >>
-
-
- CONTENT-CHARACTERS
-
- 説明
- このイベントは、XML 文書の基本部分、つまりエレメントの開始タグと終了タグの間の文字データを表します。
XML テキストはこのデータを含み、それはたとえ複数行にまたがって分かれている場合でも、
通常は単一のストリングのみで構成されます。
エレメントの内容が参照または他のエレメントを含む場合は、
内容全体は複数のエレメントから構成されます。
パーサーはまた、プログラムの CDATA セクションのテキストを渡すために、
CONTENT-CHARACTERS イベントを使用します。
- サンプル XML テキスト
- CONTENT-CHARACTERS イベントとして発生する順番に挙げると次のようになります。
- <<Ham >>
- << turkey>>
- <<Cheese, lettuce, tomato, etc.>>
- <<We should add a <relish> element in
future!>>
サンプルの「meat」エレメントの内容はストリング
「Ham」、文字「&」、およびストリング「 turkey」から成り立っていることに注目してください。
単一の文字「&」の断片は、CONTENT-CHARACTER イベントとして、別に渡されます。
また、この 2 つのストリング断片のそれぞれの先行のスペースおよび
後続のスペースに注目してください。
-
-
- CONTENT-CHARACTER
-
- 説明
- エレメント・コンテントの中で、事前定義エンティティー参照である「&」、「'」、「>」、「<」、
および「"」に対して発生します。
事前定義エンティティーについては、「XML specification」を参照してください。
- サンプル XML テキスト
- <<&>>
-
-
- CONTENT-NATIONAL-CHARACTER
-
- 説明
- エレメント・コンテントの中で、「&#dd..;」または「&#hh..;」という形式の
数字参照 (Unicode のコード・ポイントまたは「スカラー値」) に対して発生します。
ただし、ここでは「d」および「h」はそれぞれ 10 進数および 16 進数の桁を表しています。
- サンプル XML テキスト
- このサンプルには、数字参照は含まれていません。
-
-
- END-OF-ELEMENT
-
- 説明
- 各エレメント終了タグまたは空エレメント・タグに対して、
パーサーがタグの終了を示す不等号括弧を認識したときに 1 回ずつ発生します。
XML テキストは、エレメント名を含みます。
- サンプル XML テキスト
- END-OF-ELEMENT イベントとして発生する順番に挙げると次のようになります。
- <<bread>>
- <<meat>>
- <<filling>>
- <<sandwich>>
-
-
- START-OF-CDATA-SECTION
-
- 説明
- CDATA セクションの先頭で発生します。CDATA セクションは、ストリング 「<![CDATA[」で開始し、
ストリング「]]>」で終了します。
これらのセクションは、XML マークアップとして認識される可能
性がある文字を含むテキスト・ブロックを「エスケープ」するため
に使用されます。
XML テキストは、開始文字シーケンスの「<![CDATA[」を必ず含みます。
パーサーは、これらの区切り文字の間の、
CDATA セクションの内容を、単一の CONTENT-CHARACTERS イベントとして
渡します。
- サンプル XML テキスト
- <<<![CDATA[>>
-
-
- END-OF-CDATA-SECTION
-
- 説明
- パーサーが CDATA セクションの終端を認識すると発生します。
- サンプル XML テキスト
- <<]]>>>
-
-
- UNKNOWN-REFERENCE-IN-ATTRIBUTE
-
- 説明
- 属性値の中で、
上記の ATTRIBUTE-CHARACTER で示されている
5 つの事前定義エンティティー参照以外のエンティティー参照ついて発生します。
- サンプル XML テキスト
- サンプルは、不明エンティティー参照を含みません。
-
-
- UNKNOWN-REFERENCE-IN-CONTENT
-
- 説明
- エレメント・コンテント中で、
上記の CONTENT-CHARACTER で示されている事
前定義エンティティー参照以外のエンティティー参照について発生します。
- サンプル XML テキスト
- サンプルは、不明エンティティー参照を含みません。
-
-
- END-OF-DOCUMENT
-
- 説明
- 文書の構文解析が完了したときに発生します。
- サンプル XML テキスト
- END-OF-DOCUMENT イベントの
XML テキストは空です。
-
-
- EXCEPTION
-
- 説明
- XML 文書処理中のエラーが検出されたときに発生します。
構文解析が開始する前に通知される、
エンコード方式の矛盾による例外に関しては、XML-TEXT は長さ 0 であるか、
文書のエンコード宣言の値のみを含みます。
- サンプル XML テキスト
- 例外が発生した位置 (<sandwich> エレメントの終了タグの後の余分な「junk」) を含む、
その個所までに構文解析した文書の部分です。
-
-
関連リファレンス
『XML-EVENT』(「ILE COBOL 言語解説書」)
『4.6 Predefined entities』(「XML specification」www.w3.org/TR/REC-xml#sec-predefined-ent)
『2.8 Prolog and document type declaration』(「XML specification」www.w3.org/TR/REC-xml#sec-prolog-dtd)
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.