得たので検証成功とする。妥当性を検証しないプロセッサ外部解析対象実体の参照:置換テキストをインクルードするまたは、インクルードしない場合は、読み込まなかった旨をアプリケーションに伝える妥当性を検証するプロセッサ外部解析対象実体の参照:置換テキストをインクルードすると説明したので、次のように整理できます。(Name)をkeyに一般実体テーブルを検索する。あるなら、置換テキストRepTextを取得する。(RepText)を得る。一般実体のトークン列をそのままに、読み込まなかった旨をアプリケーションに通知する。(Name)をkeyに一般実体テーブルを検索する。あるなら、置換テキストRepTextを取得する。(RepText)を得る。以下のものは許されない、致命的なエラーになる。実体宣言のEntityValueに現れた場合は除く。・属性値の中に外部実体の参照が有る場合の1つ目と3つ目から、次のようにできます。あるなら、致命的エラーとする。あるなら、致命的エラーとする。あるなら、致命的エラーとする。あるなら、致命的エラーとする。あるなら、致命的エラーとする。2つ目についてはDTDの中で構文に現れないパラメータ実体参照を念頭に書かれたものであるため、構文にはないにせよ、実装方法によっては、文字参照や一般実体参照を認識するかもしれず、その場合を考慮に入れて書いてあります。本コラムが作成するプログラムは、文字参照や一般実体参照を認識しないように実装するのでここの仕様を実装することはありません。/AttValueを説明しています。(Name)をkeyにパラメータ実体テーブルを検索し、それがパラメータ実体であるなら、置換テキストRepTextを取得する。(RepText)を得る。あるなら、置換テキストRepTextを取得する。(RepText)を得る。定義から導出した処理を使って例を検証します。得たので検証成功とする。次の例は整形式ではない。構文解析AttValue中に>遭遇し、トークンの作成に失敗(字句解析エラー)よって整形式でないことを検出できる。あるなら、システム識別子と(もしあれば)公開識別子および、関連付けられた記法のシステム識別子と(もしあれば)公開識別子をアプリケーション通知用データとして抽象構文木に追加する。何もせずに次のトークンを読む処理を続ける。(Name)をkeyにパラメータ実体テーブルを検索する。1-2.パラメータ実体であるなら、置換テキストRepTextを取得する。1-3.置換テキストRepTextの先頭と末尾に#x20を追加してRepText2にする。(;)の代わりにRepText2を得る。1-5.文脈中の入力バッファにRepText2を差し戻す。パラメータ実体のトークン列をそのままに、読み込まなかった旨をアプリケーションに通知する。(Name)をkeyにパラメータ実体テーブルを検索する。1-2.パラメータ実体であるなら、置換テキストRepTextを取得する。1-3.置換テキストRepTextの先頭と末尾に#x20を追加してRepText2にする。(;)の代わりにRepText2を得る。1-5.文脈中の入力バッファにRepText2を差し戻す。検証するプロセッサの状況毎にまとめます。必要があれば前回までの内容を含めます。前々回の議論より「出現した位置」毎の仕様は細かい場合分けになります。これによって、マークアップ宣言自体が「外部/内部サブセットが無い」という条件を無視できるようになり、無用な部分を削除できます。10646のコードポイントを参照することで置換テキストRepTextを得る。(RepText)を返す。(RepText)を返す。10646のコードポイントを参照することで置換テキストRepTextを得る。(RepText)を返す。(RepText)を返す。場合システム識別子と(もしあれば)公開識別子および、関連付けられた記法のシステム識別子と(もしあれば)公開識別子をアプリケーション通知用データとして抽象構文木に追加する。この場合、実際に開始タグの内容として呼び出すまでエラーとはしない。10646のコードポイントを参照することで置換テキストRepTextを得る。(RepText)を返す。(RepText)を返す。場合システム識別子と(もしあれば)公開識別子および、関連付けられた記法のシステム識別子と(もしあれば)公開識別子をアプリケーション通知用データとして抽象構文木に追加する。10646のコードポイントを参照することで置換テキストRepTextを得る。(RepText)を返す。整形式性制約エラー3-3-3.再帰用のスタックに既に同名の実体名が無い場合3-3-3-1.再帰用のスタックに実体名を追加する3-3-3-2.置換テキストRepTextを取得する。(RepText)を返す。整形式性制約エラー1-3-3.再帰用のスタックに既に同名の実体名が無い場合1-3-3-1.再帰用のスタックに実体名を追加する1-3-3-2.置換テキストRepTextを取得する。1-3-3-3.置換テキストRepTextの先頭と末尾に#x20を追加してRepText2にする。1-3-3-4.パラメータ実体のトークン列の代わりにRepText2を得る。1-3-3-5.文脈中の入力バッファにRepText2を差し戻す。長くなりましたので次回に続きます。通信系と自動車関連のシステム開発の下請けを経て、現在は家業を継いでIT系の仕事から離れています。本コラムは趣味で研究している内容がメインです。書籍「プログラミング思考のレッスン」を読んでみた。利用規約ITmediaはアイティメディア株式会社の登録商標です。