ネイティブ XFA Data DOM
EnableJavaScript を有効にした通常実行では、xfa.datasets、$data、$record の各リゾルバパスと FormCalc アクセッサを通じて、ドキュメントのネイティブ datasets ツリーが公開されます
データノードは安定したネイティブ識別子を持ち、フォームノードと同じライブ SOM リゾルバを使います。名前、クラスセレクタ、出現選択、親の走査、述語、ノードレベル解決に対応します
ルートとクラス
| オブジェクトまたはパス | 意味 |
|---|---|
xfa.datasets | datasets パケットノード。なければ null |
xfa.datasets.data と $data | datasets パケットの下のデータルート |
$record | 現在の非レコード処理モデルにおける data の下の最初のレコードルート |
dataGroup | 子要素を含むデータ要素。明示的に宣言された空グループも含みます |
dataValue | 値を運ぶデータ要素 |
formNode.dataNode | フォームフィールドやサブフォームにバインドされたノード。データバインディングがなければ null |
XFA データ名前空間の dataNode 属性でグループや値のクラスを明示的に選択できます。名前空間接頭辞は特定のつづりを要求するのではなく、解決されます
読み書き
dataValue は value を rawValue の書き込み可能なエイリアスとして公開します。どちらのアクセッサも同じバインド済みデータセルとネイティブデータノードを更新します
const value = xfa.resolveNode("$record.row[1].cell");
value.rawValue = "25";
target.rawValue = xfa.resolveNode("main.row[1].cell").rawValue;
$record.row[1].cell = 25
target = row[1].cell
var p = Ref($record.row[1].cell)
p = 30
バインド済みフィールドへの書き込みは対応するデータ値を即時に更新し、データ値への書き込みは同じスクリプト内でバインド済みフィールドの読み取りを即時に更新します。ネイティブ公開は実際のデータノードに書き込みます
実体化されたスカラー値プロパティは、フィールドやデータへの書き込みの後にネイティブフォーム内容を同期します。共有データのエイリアスや新規繰り返しインスタンスのデータ公開も含みます
バインドされたフォームフィールドを持たないデータ要素もアクセス・書き込み可能なままです。成功したトランザクションはその変更を保存済み XDP に保持します
bind match=none のフォームフィールドはテンプレート既定値を保ち、編集を自身の出現の Form DOM 値に保存します。合成データノードは公開せず、兄弟出現も変更しません
データ値はフォームイベントホストと Unicode、値サイズ、実行の各予算を共有します。グループノードは書き込み可能な生の値ではなく構造的なアクセスを提供します
繰り返しインスタンスと保持された参照
フォームインスタンスの挿入、移動、削除は同じスクリプト内で対応するライブ Data DOM を更新します。新しく暗黙バインドされた行は、公開前にデータノード経由でテンプレート既定値を公開します
出現数 0 のプロトタイプでも最初のデータグループと値を作成できます。ネイティブ公開が新しいノードに実際の識別子を与えるため、スクリプトオブジェクトは以降のイベントにまたがってデータハンドルを保持できます
保持されたデータ参照は識別子によって移動に追従します。グループ削除後の参照使用はイベントを失敗させ、ランタイムのロールバックはネイティブの出現順序、値、スクリプトオブジェクトのカウンタを復元します
スクリプトオブジェクトが保持するインスタンスマネージャは現在のスコープを解決します。初期出現数が 0 のマネージャも含みます
ネイティブ XML コンテンツ
datasets、dataGroup、dataValue ノードはloadXML と saveXML を公開し、ネイティブ解析、同一スクリプト内のグラフ更新、トランザクション性のある公開を提供します
XML インポートはコメント、処理命令、CDATA、展開された名前空間、Unicode 名を保持しつつ、非テキストノードが通常の Data DOM 子選択や表示フィールド値に入らないようにします
インポートされた値はバインド済みフィールドの読み取りを即時に同期します。既存の dataRef が別の接尾辞を選んでいるフィールドや、以前は未解決だったターゲットが利用可能になったフィールドも含みます
トランザクションと下位レベルの呼び出し側
TXFAWidgetRuntime はデータドメインのバインディングを構築し、フォームフィールドをネイティブデータ値に接続し、データ書き込みと新しい識別子バインディングを適用し、エンジンやネイティブ公開の失敗後には正確な XDP 状態を復元します
下位レベルのイベント呼び出し側はTXFAEventBindingDomain とTXFAEventBinding の DataIdentity、DataBindingEnabled フィールドを使って、同等のオブジェクト関係を供給します
xeakBindDataIdentity アクションは新しい仮想データハンドルを、公開されたネイティブデータ識別子にバインドします。下位レベルのアプリケーションは、返されたデータ変更と識別子バインディングをトランザクション的に適用しなければなりません
オブジェクトモデルの残る対応範囲
レコードウィンドウのナビゲーション、単独のデータノード作成や親の付け替え、任意のデータ属性、完全なテンプレートプロパティノード編集は、別途の統合対象です
インスタンスのミラーリングは既存の暗黙データバインディングのインスタンスマネージャ動作に従います。明示的バインディングの追加のインスタンス操作には、さらなるバインディング統合が必要です
関連 API
ライブ SOM パス、FormCalc リファレンス、HPDFXFAExecuteJavaScriptEvent、インタラクティブ XFA ランタイム