container モジュール
css.container モジュールのインターフェースはよく利用します。
コンテナオブジェクトは決まった型の値を持ちそれらにアクセスするために container モジュールのインターフェースを備えています。モジュールには様々なインターフェースが定義されていますがいくつかのグループに分かれています。
css.container.XElementAccess
このインターフェースはコンテナが保持している値の情報を与えてくれます。
getElementType メソッドから値の型を知ることができますが動的に値を判定することは滅多にありません。
hasElements メソッドは値が一つでもコンテナに保持されているかどうかを boolean 型で返します。
イテレーション
コンテナの要素全てに順にアクセスします。
css.container.XEnumerationAccess インターフェースの createEnumeration メソッドでイテレータを作成します。
イテレータの css.container.XEnumeration インターフェースのメソッドを利用して順にアクセスします。
doc = XSCRIPTCONTEXT.getDocument()
sheets = doc.getSheets()
enume = sheets.createEnumeration()
while enume.hasMoreElements():
sheet = enume.nextElement()
Named Container
要素が名前で管理されているコンテナです。コンテナの各要素にアクセスするには css.container.XNameAccess インターフェースのメソッドを利用します。
doc = XSCRIPTCONTEXT.getDocument() sheets = doc.getSheets() names = sheets.getElementNames() for name in names: if sheets.hasByName(name): sheet = sheets.getByName(name)
コンテナが css.container.XNameReplace インターフェースをサポートしているときには要素を名前を指定して置き換えることができます。
css.container.XNameContainer インターフェースでは要素の挿入と削除が行えます。
コンテナによりサポートしているインターフェースが異なるため注意が必要です。
Indexed Container
要素がインデックスで管理されているコンテナです。コンテナの各要素にアクセスするには css.container.XIndexAccess のメソッドを利用します。
doc = XSCRIPTCONTEXT.getDocument() sheets = doc.getSheets() for i in range(sheets.getCount()): sheet = sheets.getByIndex(i)
css.container.XIndexReplace インターフェースがサポートされておれば要素を置き換えることができます。また、css.container.XIndexContainer インターフェースでは要素の挿入と削除が行えます。
コンテナによりサポートされているインターフェースが異なるので注意してください。