XFA クエリノードコレクション
JavaScript と FormCalc のイベントは、スコープ内のノード出現を検査し、ランタイムイベントをまたいで独立したクエリリストを保持できます
const siblings = xfa.record.amount.all;
const retained = siblings.clone();
retained.remove(retained.item(0));
retained.insert(siblings.item(0), null);
retained.item(0).rawValue = "42";
出現プロパティ
node.all は、同じリテラル名を持つスコープ内ノードの、新しい順序付きクエリリストを返します。名前なしノードは代わりにクラス名を使います
node.classAll は、同じクラスを持つスコープ内ノードの、新しい順序付きクエリリストを返します。別の名前を持つノードを含みます
node.index と node.classIndex は、それぞれのスコープ内でのゼロベースの出現を返します
名前のない非プロパティコンテナは、正負の相対 SOM 出現を含め、名前付きスコープ検索に対して透明です。プロパティコンテナは自身のスコープを保持します
#field、*、Unicode 名のようなリテラル名は、これらのプロパティによって記述された名前としてマッチします
独立したリスト操作
| メンバー | 動作 |
|---|---|
length | リストエントリの現在数 |
item(index) | 参照されたノード。負・非整数・範囲外のインデックスでは null |
namedItem(name) | そのリテラル名を持つ最初の参照ノード。一致するノードがなければ null |
clone() | 同じノードを参照する、新しい独立したエントリストレージ |
append(node) | 同じ生きているノード参照を末尾に追加します。重複参照も含みます |
insert(node, before) | 生きているノード参照を、最初に一致する参照の前に挿入します。null は末尾に追加します |
remove(node) | 最初に一致する参照を削除します。存在しない参照はエラーを送出します |
resolveNodes、all、classAll が返すリストは独立したエントリストレージを使います。そのストレージを変えてもフォームとデータツリーはそのままですが、参照されたノードへの書き込みは実際のノードを変えます
フォーム・プロパティの node.nodes コレクションは生きた子ビューを公開します。その clone() メソッドは独立したクエリリストを返します。XFA の生きた子コレクションを参照してください
Data DOM の node.nodes も独立した clone() を供給します。既存の append、insert、remove メソッドはネイティブ構造動作を保持します。トランザクション的な XFA Data DOM 構造を参照してください
配列の反復、インデックス読み取り、列挙は参照されたノードを公開します。直接代入、削除、プロパティ再定義、プロトタイプ変更、拡張禁止は、クエリリストを変える前にエラーを送出します
永続化と安定した ID
スクリプトオブジェクトは、クエリリストやクローンをイベントをまたいで保持できます。各操作は現在のイベントリゾルバとトランザクション上限を使います
クエリされたインスタンスマネージャハンドルは、イベントをまたいで保持・クローンされたとき、操作を現在のイベントグラフへ振り向けます
生き残ったノードの名前変更や並べ替えは、保持されたリスト ID を保持します。繰り返しフォームインスタンスの削除は、その削除された参照を通じた読み書きを失敗させ、置換インスタンスを選択しません
独立リストは、保存された参照をクローンし、以前に保持された削除済みノード参照を、そのノードを逆参照せずに削除できます
クエリリストストレージはランタイムスクリプト状態です。XDP の保存はネイティブノード値と構造を永続化し、新しいランタイムは新しいスクリプトオブジェクトセッションを始めます
トランザクションと上限
無効なノードとメンバーシップ参照は、そのリスト操作がストレージを変える前に失敗します。捕捉されたエラーは、同じイベント内の以前の有効な操作を利用可能なままにします
捕捉されないイベントエラー、操作予算、経過時間の失敗は、クエリリストの変更、ネイティブ値、繰り返しインスタンス、保持されたスクリプトオブジェクト状態、ジャーナル状態を一緒に復元し、同じランタイムが再試行できます
TXFAFormScriptLimits.MaxArrayItems は各保持リストの長さを制限し、1 イベント中の累積リストオブジェクトと新規割り当てエントリを別々に制限します。ゼロ設定はイベントコンテキストのデフォルト 65,536 を使います
空のクローンはオブジェクト予算を消費し、非空のクローンはエントリ予算も消費します。保持されたリストは、別々の成功イベントをまたいでも上限付きのままです
FormCalc と PDF 消費
output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
xfa.datasets.data.main.amount.all.length, ":",
xfa.datasets.data.main.amount[1].classIndex)
リテラルな xfa.form、xfa.datasets、xfa.record パス上の FormCalc 出現選択はネイティブ SOM 解決を使います。コレクションプロパティの後のリストインデックスはそのコレクションをインデックスします
ランタイムバイトを XDP に保存し HPDFXFAWriteHeadlessPDF に渡すと、コミットされた値から、保持された生き残り繰り返しインスタンス参照を通じた編集も含め、実際のネイティブフィールドと外観が生成されます
TXFAHeadlessPDFOptions.Editable = False は、フラット化する代わりに、外観付きの読み取り専用ネイティブフィールドを作成します
カバレッジ
このインターフェイスは独立したクエリリストと出現メタデータを供給します。一般的なテンプレート・フォームノードの作成とクローン、追加のノードクラススクリプティング、スキーマ検証、外部メディアは別の作業です