各ノードの必須ではない子は、ツリー内で古い順に並べられます。つまり、DOM では、必須ではない子ノードが追加された順序が記録されます。
フォームの処理の各手順に対して、その段階で必要となるデータ構造が格納されている DOM があります。スクリプトを使用すると、それぞれの DOM の検査と変更を実行できます。DOM には、内部の整合性を保つ役割がありますが、外部の整合性を保つことはできません。例えば、スクリプトでラジオボタンに対応するフィールドを割り当ててオンにすると、そのラジオボタンとセットになっている他のすべてのラジオボタンは、自動的にオフになります。これは内部の整合性の問題なので、フォーム DOM 自体によって管理されます。
一方、データ DOM では、例えば 1 つのオブジェクトの 2 つのプロパティに対して同じ名前を付けるというような、スクリプトによる XML ルール違反を回避する操作は何も実行されません。これは外部の整合性の問題なので、DOM ではなく、スクリプトの作成者が管理する必要があります。
フォームデザインにデータを組み込む場合は必ず、XML フォームオブジェクトモデルが使用され、テンプレートとデータを組み合わせて、その結果としてフォームが作成されます。この処理では、最初にフォームデザインの既存の XML DOM 表現と XML データを使用して、個別のモデルが作成されます。これらの個別のモデルには、オリジナルフォームデザインとオリジナル XML データの構造化表現が格納されます。テンプレート DOM はフォームデザインに対応し、データ DOM はユーザーが指定した XML データに対応します。
テンプレートモデルとデータモデルが作成された後、3 つ目のモデルとして、マージされた情報を表すフォーム DOM が作成されます。フォーム DOM は、XML データの特定の値に、フォームデザインによって定義されている表記ルールを適用する役割を持ちます。
インタラクティブフォームを作成する場合は、フォーム DOM が作成されるとフォームが完成し、ユーザーに配布する準備が整います。インタラクティブフォームデザインには、マージされるデータが関連付けられていることもありますが、ほとんどのインタラクティブフォームはユーザー入力データをサポートするようにデザインされています。
フォーム DOM の作成を含む、ここまでの処理は、すべてのフォームで共通です。一方、インタラクティブフォーム以外のフォームには、フォームデザインとマージするデータのセットがあります。レイアウトが固定されているフォームの場合、データのマージによって、フォームに対応する表記ルールが左右されません。つまり、データは対応するフィールドに、フィールドプロパティが変更されることなくマージされます。これに対して、レイアウトが流動的なフォームの場合は、フィールドにマージされるデータの量に合わせて、フィールドが拡張または縮小されます。
レイアウトが固定されているフォームとレイアウトが流動的なフォームのフォーム DOM の外観は非常に似ていて、ページに区切られていない 1 つの長いフォームです。これらの種類のフォームにデータと表記ルールを適用する場合、レイアウト情報に基づいてフォーマットを決める必要があります。フォーム DOM からレイアウト DOM が作成されます。レイアウト DOM は、フォームを各ページに分割し、ページ番号、ヘッダー、トレーラーなどのページベースのルールを適用します。次の図に、この処理を示します。
レイアウトが固定されたフォームまたはレイアウトが流動的なフォームにレイアウトルールが適用されると、これらのフォームが完成します。