LOTUS DOMINO の XML


DocumentFragment
Node を継承します。DocumentFragment は最小の Document オブジェクトです。このオブジェクトは文書ツリーの一部を抽出したり、新規の文書の一部を作成する必要がある場合に有用です。

たとえば、文書の一部を切り取ったり移動して並べ直すようなユーザーコマンドを実装することを想定してみましょう。この場合文書の断片を格納できるオブジェクトが必要です。格納オブジェクトには Node を使用することが考えられます。Document オブジェクトも使用できますが、Document は根底にある実装によって、潜在的に巨大なオブジェクトになります。Document と比較して、非常に軽量なオブジェクトであるのが DocumentFragment オブジェクトです。DocumentFragment は、そのようなオブジェクトです。

さらに、別の Node の子ノードとしてノードを挿入するなどのさまざまな処理では、DocumentFragment オブジェクトを引数として取ることが考えられます。この結果、すべての DocumentFragment はこの Node の子のリストに移動されます。

DocumentFragment ノードの子ノードは、文書の構造を定義するサブツリーの上部を表しているゼロ以上のノードです。DocumentFragment ノードは整形式の XML 文書である必要はありません (整形式の XML で解析されたエンティティの課す規則に従う必要はあります。最上部のノードが複数の場合もあります)。たとえば、DocumentFragment には子ノードが 1 つしかなく、その子ノードが Text ノードであるとします。このような構造モデルは、HTML でも整形式の XML 文書でもありません。

DocumentFragment が Document (あるいは実際に子ノードを取るその他の Node) に挿入されたとき、DocumentFragment ではなくその子ノードが Node に挿入されます。この仕様はユーザーが同レベルのノードを作成したいときに大変便利です。ユーザーが insertBefore() や appendChild() などの標準のメソッドを Node インターフェースから使用できるように、DocumentFragment はこれらのノードの親ノードのように機能します。