ネイティブ XFA Property DOM
EnableJavaScript を有効にした通常実行では、フォームコンテナのプロパティの子がライブイベントツリーに含まれます。value、型付き value、font、fill、color、ui、border、edge の各ノードです
名前付きコンテナは SOM パスの中で自身の名前を使います。プロパティノードはクラス名を使い、実際の name 属性(通常は空)を保持します
型付き値と属性
const field = xfa.resolveNode("main.row[1].cell");
field.value.text.value = "25";
field.font.size = "18pt";
field.font.fill.color.value = "0,128,255";
field.ui.textEdit.multiLine = "1";
field.resolveNode("border.edge[1]").thickness = "3pt";
field.font.setAttribute("saved", "custom");
const saved = field.font.getAttribute("custom");
row[1].cell.value.text.value = 25
row[1].cell.font.size = "18pt"
フィールドの value ノードの下にある型付きの子は、フィールドのライブ rawValue を共有します。value.text.value、field.rawValue、バインド済み dataNode を通じた読み書きは互いに即時に反映されます
color のような value 属性を持つプロパティノードでは、value プロパティがその属性を読み書きします。スカラーコンテンツノードではテキストコンテンツを読み書きします
実効的なプロパティバインディングに存在する属性は、予約されたノード・エンジンメンバを除き、直接プロパティとして公開されます。getAttribute(name) は任意の属性を読み、setAttribute(value, name) は属性を書き込み、安全な新しい名前を即時に公開します
FormCalc は同じイベントツリーを通じてプロパティパスを解決し、スカラー属性を代入します。プロパティの兄弟は出現インデックスとクラスセレクタに対応します
ネイティブ永続化と描画
成功した書き込みは、ネイティブフォームパケット内の一致するコンテナ出現の下にプロパティノードを作成または更新します。テンプレートと他の繰り返し出現は既定値を保持します
プロパティ検索は、名前のないノードをスキップするのではなく、名前付きコンテナの下のクラスとローカル出現に従います。プロパティの name 属性を変更しても識別子は保たれ、保存済み XDP は実効上書きを再ロードします
保持されたプロパティハンドルは、インスタンスの挿入や移動を通じて公開済みオーナー識別子に追従します。インスタンス削除後のハンドル書き込みはトランザクションを中断して復元します
フォントのタイプフェイスとサイズは、インスタンスごとの伸長可能テキストの計測とリフローに参加します。flatten はフィールド出現ごとに実効的なフォント、色、ボーダー、段落、サポート対象 UI 属性を読み取ります
リッチテキスト draw は出現ごとに、実効的なフォント、段落、インライン CSS、スカラーコンテンツの各上書きを消費します。計測と run 配置も含みます
インスタンス作成は、複数の edge ノードを含むすべてのプロパティ兄弟の既定値を保持し、別の出現の上書きではなくテンプレート属性値を使います
UI 上書きはサポート対象のウィジェット選択を作成し、成功したイベントの後に実際のインスタンスごとのランタイム種別とネイティブフィールドフラグを変更します
予算と下位レベルのバインディング
プロパティの走査はイベントのノード、深さ、操作、バイト予算を共有します。ネイティブのテキストと属性の書き込みは MaxValueChars に従い、失敗した書き込みはネイティブのフィールド値、プロパティ上書き、スクリプト状態、出現順序を復元します
直接呼び出す側はxebdProperty を使い、Attributes と DefaultAttributes を供給します。後者が新しくクローンされたノードを初期化します
プロパティ属性アクションは、属性名、NUL 区切り、TXFAEventAction.Value 内の値を含みます。TXFAWidgetRuntime が検証し、ネイティブプロパティターゲットに適用します
対応範囲
イベントツリーには宣言されたプロパティノードとその実効属性が含まれ、サポート対象の書式・ウィジェットクラスにはスキーマ既定値があります。存在しないプロパティの作成により、サポート対象の書式パスがネイティブフォームパケット内に実体化されます
event、calculate、validate の各宣言は実行メタデータのままです。variables スクリプトはスクリプトオブジェクトのままで、通常のプロパティ編集がメタデータスクリプトを起動することはありません
追加のスキーマプロパティクラス、汎用的な削除と親の付け替え、名前空間修飾属性の変更、追加のレイアウトプロパティコンシューマ、さらなるリッチテキストやウィジェット編集機能は、別途の対象として続きます
関連 API
ライブ SOM 解決、ネイティブ Data DOM、HPDFXFAResolveFormInstanceProperty、インタラクティブ XFA ランタイム