LixMには3つのフェーズがあります。
です。プリプロセスフェーズはモデルリストを利用可能にするための前処理、具体的には文字参照の解決やバリデーションなどを行うフェーズです。
アプリケー ション開発者にとってこのフェーズは特に重要ではないため詳細は省きますがLixMでは全ての文字実体参照はモデライズされた時点には文字実体として解決 されなければいけません。(この仕様はオプションです)また、モデライズされた時点で、Well-formed XML DocumentsかValid XML Documentsでなければいけません(この仕様は必須です)。
そのための処理が行われるのがこのフェーズです。
モデルリストを実際に利用可能にするためのフェーズです。
このフェーズへの移行はXMLModelizer#modelizeという名前の各メソッドによって行われます。このフェーズが無事終了すれば XMLModelizer#getList()によって取得されるモデルリストを利用可能になります。modelizeメソッドは LIXMPhaseExceptionをスローする可能性があります。
LIXMPhaseExceptionがスローされる原因はフェーズ実行中に問題が生じた場合です。LIXMPhaseExceptionは一般情報と呼ばれるより広義な問題点(java.lang.Exception
サブクラス
)とフェーズ情報および、例外メッセージを持っています。この例外をキャッチしてフェーズ実行を中断するか再開するかはアプリ
ケーションプログラマが決めてください。しかし、この例外が投げられた場合XML文章の扱いにとって致命的であることがほとんどです。よって、アプリケー
ションの処理事態を中断する可能性が高いでしょう。一般情報としてよく挙げられるのはFile
I/Oの問題やXML文章がNon-well-formedである事でしょう。
このフェーズは主にアプリケーション由来の処理になります。
その他のフェーズがどのタイミングで実行されるか仕様には定義されていません。どのタイミングでも何度でも実行されます。このフェーズを利 用する事でアプリケーション固有の処理をLixMの他のフェーズと結合できます。
このフェーズは実行されなくても構いません。
モデライズされたXML文章はモデルという一つのオブジェクトとしてリストへ格納されます。このモデルは字面出現順に格納されています。
XMLModelizer#getList()によって取得されたモデルリストへアクセスする方法は直接的にアクセスする方法と間接的にアクセスす
る方法があります。
XMLModelListのget(int)、getRootEndTag()、getRootStartTag()によってモデルリストの任 意の 位置、ルート要素の開始タグ・終了タグ、へと直接アクセスできます。これは位置情報を直接指定するアクセス方法です。
間接的にアクセスするにはXMLModelList#getCursor()を利用しカーソルというものを取得します。
この場合、位置情報はカーソルによって管理され幾つかの便利
なア
クセス方法が提供されます。
この方法を用いた場合、list.get(cursor.xxx)
という定型文でモデルを取得します。カーソルに
よって
提供されるアクセス方法は現在の位置にアクセスする、特定の位置にアクセスする、記憶された位置にアクセスするなどといったものがあります。詳しくは
Javadocを参照してください。
XMLModelList#get(int)はAbstractModelという抽象的なモデルを返します。getXMLType()や matchTypes(int)を利用し特定のサブクラスへキャストが必要になります。サブクラスでどのような情報を取得できるかはJavadocを参照 してください。