DocumentFragment (Org.W3C.DOM Package)

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

断片を移動することで 文書を切り取ったり並べ替えたりするユーザーコマンドを実装することを 考えてみます。このような断片を保持できるオブジェクトが必要になりますが、 この目的では Node を使用するのが自然です。この操作に Document オブジェクトを使用することもできますが、 その基礎となる実装によっては Document オブジェクトが 複雑なオブジェクトになっている可能性があります。この目的で本当に必要なのは、 ごく単純なオブジェクトです。DocumentFragment は、そのようなオブジェクトです。

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

DocumentFragment ノードの子は、文書の構造を定義する任意のサブツリーのトップノードを表す 0 個以上のノードです。DocumentFragment ノードは 整形式 XML 文書である必要はありません。ただし、 整形式 XML 文書の解析対象エンティティに課される規則 (複数の トップノードを持つことができる) には従う必要があります。例えば、DocumentFragment が 子を 1 つ持ち、その子ノードを Text ノードにすることができるとします。このような構造モデルは、HTML 文書も 整形式 XML 文書も表しません。

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