DocumentFragment
は、 "軽量" または "最小" の Document
オブジェクトである。ごく普通に、文書ツリーの一部分の抽出や文書の新たな断片の作成を可能にしたい。カットのようなユーザー命令の実装や断片移動による文書の再整理を想像しなさい。そういう断片を保持するオブジェクトが切望されるし、この目的にNodeを用いるのはとても自然なことである。 Document
オブジェクトでもこの役割を満たせるのはその通りなのだが、基盤の実装によっては Document
オブジェクトは潜在的に重いオブジェクトになりかねない。ごく軽いオブジェクトがここでは要求される。 DocumentFragment
はそういうオブジェクトである。
更に、様々な操作 -- ノードを別の Node
の子供として挿入など -- は、 DocumentFragment
オブジェクトを引数にとってよい; これは、このノードの子のリストへ移動される DocumentFragment
の子ノード全てにおいて効果がある。
DocumentFragment
ノードの子は、文書の構造を定義する任意の下位ツリーの頂点を表す0個以上のノードである。 DocumentFragment
ノードは 整形式のXML文書 である必要がない(とはいえ、トップノードを複数所持可能である整形式XMLの解析される実体上に課される規則に従うことが必要である)。例えば、 DocumentFragment
が1個だけ子を持ち、その子ノードは Text
ノードかも知れない。そういう構造モデルはHTML文書も整形式XML文書も表さない。
DocumentFragment
が Document
(また実際には子をとってよい任意の他の Node
) に挿入される時、 DocumentFragment
の子供が Node
に挿入され、 DocumentFragment
自身は挿入されない。これは 兄弟 である複数のノードの生成を望む時に DocumentFragment
を非常に有用にする; DocumentFragment
はこれらの親として、 insertBefore
, appendChild
のような Node
インターフェイスの標準的なメソッドを使用できるように作用する。
interface DocumentFragment : Node { };