ネイティブ Data DOM XML

ユニット: HPDFXFARuntime

メソッド

dataNode.loadXML(xml, ignoreRoot = true, overwrite = false);
const compact = dataNode.saveXML();
const readable = dataNode.saveXML("pretty");

これらのスクリプトメソッドは、TXFAWidgetRuntime イベント内の datasets、dataGroup、dataValue ノードで使えます

saveXML は宣言付きの UTF-8 XML を、選択されたノードをドキュメント要素として返します。省略可能な pretty 引数は要素のみのコンテンツにインデントを追加します

loadXML は整形式の XML ドキュメントを 1 つ受け取ります。ignoreRoot はその子を選択されたノードへインポートし、False ならソースのドキュメント要素を子としてインポートします

overwrite はインポート前にターゲットの既存コンテンツを削除します。既定の False はコンテンツを追記し、既存の子識別子を保持します

選択されたノードは自身の識別子と属性を保持します。インポートされた子の属性と名前空間マッピングは保存されます

即時のグラフとバインディング

const record = xfa.datasets.data.main;
record.loadXML("<main><amount>42</amount></main>", true, true);
const amount = record.amount;
amount.value = "43";
if (this.parent.amount.rawValue !== "43") throw new Error("Missing binding update");

ネイティブ解析に成功すると、インポートされた子は直ちに現在のスクリプトグラフに組み込まれます。通常のプロパティと SOM セレクタは、イベント公開の前にそれらの新しいノードを解決します

データセルはバインド済みフィールドエイリアスと双方向に同期します。隠しフィールド、新たに供給されたバインドターゲット、既存の子孫・ワイルドカード・クラス・数値インデックスの各 dataRef セレクタも含みます

スカラーからグループへのインポートはターゲットのデータクラスを更新し、インポートされた子要素を公開します。空にされた dataValue の値は空文字列です

新しいデータ要素のインポートは、未解決バインディングのために無関係な曖昧データリーフを確保しません

識別子と繰り返しスコープ

overwrite は古い子ハンドルを無効化し、新しい子識別子を公開します。スクリプトオブジェクトは新しくインポートされたデータハンドルを保持し、以降のイベントで使えます

追記は既存のハンドルを保持します。繰り返し行の内側でのインポートは、その行のネイティブデータスコープとバインド済みフィールドを変更します

XML インポートは、同じイベント中に addInstance で作成された出現の内側でも機能します

datasets コンテンツの置き換えは $data と $record を新しいネイティブルートへ更新し、生き残ったフォームとスクリプトオブジェクトの識別子を付け直すため、レキシカルモジュール状態はフォームスコープに紐付いたままです

コンテンツと永続化

ネイティブインポートと保存済み XDP は、通常テキスト、CDATA、コメント、処理命令を順序どおり保持します

コメントと処理命令は通常の Data DOM 要素選択の外に留まり、表示フィールドテキストにはなりません

インポートされたノードは、異なる祖先の既定名前空間の下でも名前空間 URI を保持します。名前空間を持たない要素のための明示的な空の既定名前空間も含みます

外部の接頭辞付き属性は展開名を保持し、Unicode ローカル名、アクセント付きテキスト、補助文字はネイティブの保存と再ロードを越えて生き残ります

読み取り専用の saveXML はフォームプロパティを実体化せず、保存済み XDP バイトも変更しません

検証とロールバック

ネイティブ XML パーサーは、グラフ変更の前に整形式性、名前空間と属性の妥当性、XML 文字、宣言の位置、実体の構文を検査します

不正な入力は JavaScript で捕捉できます。以前のネイティブおよびスクリプトグラフは引き続き利用可能で、後から有効な変更をコミットすることもできます

失敗したイベントは、ドキュメントバイト、ウィジェット値、インポート済みグラフ、識別子、スクリプトオブジェクトのレキシカル状態を復元します。ネイティブ XML インポート適用後の失敗も含みます

各ネイティブ JavaScript セッションは、応答リプレイのためのエンジン再構築の間も実際の DLL モジュールを保持します。エンジン、コンテキスト、ジャーナルは独立したままで、モジュール参照は最後のネイティブエンジン解体後に解放されます

XML の解析とシリアライズは、操作、深さ、ノード、バイト、経過時間の各予算を、ランタイムの元のイベント期限と値文字数制限とともに強制します

インポートは外部実体を解決せず、ファイル、ネットワーク、UI の操作も行いません。DTD 宣言はこのパーサーで拒否されます

現在の対応範囲

このイベントランタイム統合は現在、Windows の Win32 と Win64 が対象です。ポータブル Linux ランタイム統合は未着手です

この統合はネイティブ XML のインポートとシリアライズ、および現在のバインディング再評価を提供します。単独の createNode、任意のデータ属性変更、親の付け替え、レコードウィンドウのナビゲーション、バインディング述語、グローバルバインディングポリシーは、別途のオブジェクトモデル対象です

関連 API

ネイティブ Data DOM、ネイティブ Bind SOM、TXFAEventBinding、TXFAEventAction、インタラクティブ XFA ランタイム