LixM SE 1.2u1(1.7.1)

org.lixm.core.list
インタフェース XMLModelList<E extends XMLModel>

型パラメータ:
E - AbstractModel
すべてのスーパーインタフェース:
java.util.Collection<E>, DynamicModel, java.lang.Iterable<E>
既知のサブインタフェースの一覧:
XMLDocumentList<E>
既知の実装クラスの一覧:
AttributesList

public interface XMLModelList<E extends XMLModel>
extends java.util.Collection<E>, java.lang.Iterable<E>, DynamicModel

このインターフェイスの実装はRandomAccessでマークすることを奨めます。

リストに格納されるべきモデルの詳細

格納されるべきモデル

このリストには整形式または妥当なXMLのみが格納されます。
つまり実装ではモデライズの時点で整形式または妥当なXMLである事を確認し、 生成されるリストではそのどちらかである事を保障しなければいけません。

参照

LIXMではXMLにおける参照はモデライズの際に解決しておかなければいけません。
リストの中に実体参照が出てきてはいけないと言う事です。 しかし、外部実体の扱いはこの仕様では未定義です。

その理由は以下の通りです。

本当に必要なものを直感的に扱える事

実体参照はXML内に直接含める事の出来ない特殊文字を現すための仕組みであり、 XMLにアクセスし実体参照を取得するという事はつまりは、 その実体参照が現している文字そのものが必要であるという事です。

このため、XMLを扱う過程で最終的にXMLの必要な情報にアクセスする段階では 特殊文字とその他の文字を区別する必要はありません。

さらに、単なる文字一つを取得するために実体参照から文字への変換を取得するコードを 逐一挿入していては煩雑で見通しの悪いソースコードが出来上がってしまうでしょう。

このため、LIXMでは実体参照は扱いません。

このような弱点はDOMにもあります。 DOMにはプラットフォーム中立性ためにノードと呼ばれる独自の概念が存在します。
このノードはLIXMではモデルに該当しますが、DOMはこの任意のノードの取得方法が とても直感的ではなく、かつ煩雑になりがちです。

LIXMはDOMとは違ったアプローチによりXML内の情報へ 直感的に低レベルで一般的なアクセスを可能とする事が目的です。

文書型やカタログはモデルとしてリストに含まない

LIXMでは文書型やカタログは特別にモデル化しないという事です。 結果的に文書型モデルやカタログモデルはリストには存在しないという事です。

これらのモデル化が必要なのはバリデータや高レベルなものではスキーマコンパイラ等になるでしょう。

Dynamic Model(動的モデル)

Dynamic Modelとは1.6系統になって導入された新しい概念で、 モデルの内容を動的に変更できる仕様です。

1.5系(未公開)のLixMまでモデルの内容を変更する事は出来ませんでした。 従来のLixMではXML構成要素のメタな情報にアクセスする事が目的であったため、 構成要素の内容変更はフットプリントの点からサポートはされませんでした。

しかし、これでは既存のXML文章以外の入力からのモデライズしか対応は困難です。 これはつまり、事前に記憶装置にXML文章が存在している必要があります。 たとえばメモリ上に新たなXML文章を構築する場合ではこれは不便な事です。

そのような目的を達成するためにDynamic Model(動的モデル)仕様が追加されました。

Dinamic Modelの詳しい仕様は こちらを参照してください。

導入されたバージョン:
1.5
バージョン:
1.7.1
作成者:
tasogare

メソッドの概要
 boolean add(E model)
          リストの指定位置にモデルを追加
 E get(int index)
          リストの指定した位置のモデルを取得
 boolean isEmpty()
          リストにモデルが格納されているか?
 java.util.Iterator<E> iterator()
          イテレータを返します。
 void set(E model, int index)
          リストの指定した位置のモデルを設定
 int size()
          リスト内の総モデル数を返します。
 
インタフェース java.util.Collection から継承されたメソッド
addAll, clear, contains, containsAll, equals, hashCode, remove, removeAll, retainAll, toArray, toArray
 
インタフェース org.lixm.optional.v15.model.dynamic.DynamicModel から継承されたメソッド
isSealed, setSeal
 

メソッドの詳細

get

E get(int index)
リストの指定した位置のモデルを取得

パラメータ:
index - 取得するモデルのリスト内での絶対位置
戻り値:
E 指定した位置に存在するモデル

set

void set(E model,
         int index)
         throws java.lang.IllegalArgumentException,
                java.lang.ArrayIndexOutOfBoundsException,
                java.lang.IllegalStateException

リストの指定した位置のモデルを設定

パラメータ:
model - 設定するモデル
index - 位置
例外:
java.lang.IllegalArgumentException - 不正なモデルが渡された場合
java.lang.ArrayIndexOutOfBoundsException - 引数indexsize()の範囲外の場合
java.lang.IllegalStateException - モデルがシールされている場合
導入されたバージョン:
1.6.1

add

boolean add(E model)
            throws java.lang.UnsupportedOperationException
リストの指定位置にモデルを追加

定義:
インタフェース java.util.Collection<E extends XMLModel> 内の add
パラメータ:
model - 追加するモデル
例外:
java.lang.UnsupportedOperationException

isEmpty

boolean isEmpty()
リストにモデルが格納されているか?

定義:
インタフェース java.util.Collection<E extends XMLModel> 内の isEmpty
戻り値:
空の場合は真、そうでない場合は偽を返します。

size

int size()
リスト内の総モデル数を返します。

定義:
インタフェース java.util.Collection<E extends XMLModel> 内の size
戻り値:
実際に存在するモデル数より1大きい数値が返ります。

iterator

java.util.Iterator<E> iterator()
                                                throws java.lang.UnsupportedOperationException
イテレータを返します。

定義:
インタフェース java.util.Collection<E extends XMLModel> 内の iterator
定義:
インタフェース java.lang.Iterable<E extends XMLModel> 内の iterator
例外:
java.lang.UnsupportedOperationException - サポートしない場合

LixM SE 1.2u1(1.7.1)

Copyright © 2005-2008 tasogare. All rights reserved.