ネイティブ XFA exData XML
通常のイベントホストは存在しない exData 値プロパティを作成し、実際の外部 XML の子をネイティブフォーム出現へインポートします。XHTML の draw コンテンツは、ネイティブ XDP の永続化と再ロードを経てリッチテキスト PDF コンシューマに届きます
XML のインポートと読み取り
const content = row.label.value.exData;
content.contentType = "text/html";
content.loadXML(
'<body xmlns="http://www.w3.org/1999/xhtml">' +
'<p><span style="font-size:18pt;color:#0000FF">Changed</span></p>' +
'</body>',
false,
true
);
const currentXML = content.saveXML();
const readableXML = content.saveXML("pretty");
loadXML(source, ignoreRoot=true, overwrite=false) は整形式の XML ドキュメント文字列を受け取り undefined を返します。ignoreRoot は集約ルートの子を追記し、false はルート自身を追記します
overwrite はインポート前に既存コンテンツを置き換えます。既定の false はドキュメント順にコンテンツを追記し、以前インポートした子を保持します
saveXML() は現在の exData 要素とそのコンテンツを、UTF-8 の XML 宣言とフラグメント文字列として返します。省略可能なリテラル pretty は混合テキストと CDATA の空白を保ったまま、要素のみのコンテンツにインデントを付けます
インポートされた要素名、名前空間宣言、名前空間修飾属性、リテラル Unicode、文字参照、混合テキスト、CDATA はネイティブ XML のままです。マークアップが素の rawValue 文字列として保存されることはありません
作成と既定値
value プロパティは exData の子を 1 つまで許容し、他の値の選択肢とは排他です。存在しない draw 値と exData の子は同じイベント中に作成・インポートできます
exData の既定は maxLength=-1 と transferEncoding=none で、contentType、href、id、name、rid、use、usehref の各属性は空です
イベントホストは exData 上にスカラー値アクセッサを公開しません。外部 XML コンテンツには loadXML と saveXML を使ってください
即時読み取り、識別子、トランザクション
純粋なネイティブ XML 操作は、スクリプト実行を続ける前に各リクエストを検証・シリアライズします。不正な XML はスクリプト内で throw され、現在のコンテンツを変更せずに try/catch で処理できます
決定論的な応答リプレイは既存のスクリプトトランザクションを共有し、UI、ファイル、ネットワーク、トランスポートの副作用を実行しません
同じイベント中の後続の saveXML 呼び出しは、以前の成功したインポートと現在の exData 属性を見ます。保持された参照は、以降のイベントで現在のノード識別子を解決します
ネイティブコンテンツを受け取るのは対象の繰り返し出現だけです。新しい出現は、既存出現のインポート済み上書きをコピーするのではなく、テンプレート XML から初期化されます
overwrite=true で空のルートをインポートすると実際のコンテンツが消去され、永続化と再ロードの後も空のままです。テンプレートコンテンツに戻ることはありません
未処理のスクリプトエラーとネイティブ公開の失敗は、正確なネイティブ XDP バイトを復元します。以前の通常フィールド書き込みと XML 変更も含みます
予算と保存済み消費
スクリプトの上限は、XML の入出力バイト、ネイティブの要素ノードとテキストノード、深さ、操作、経過時間、リプレイ応答を制限します。ウィジェットの MaxValueChars も公開 XML 値を制限します
FPC ブリッジは、XML 応答と通常のアクション値を通じて UTF-8 バイトを保持します。アクセント付き文字や補助 Unicode も含みます
保存された XHTML の draw コンテンツは、既存のリッチテキストコンシューマのフォント、サイズ、色、インライン CSS の動作を使います。独立した PDF リーダーが、最初のインスタンスのテキスト、置き換え後のスタイル、新しいインスタンスのコンテンツ、明示的な消去を検証します
XML 統合の残る対象
今回の実装は exData コンテンツ操作です。他の nodeclass の loadXML/saveXML メソッド、Data DOM の構造インポート、一般的な外部ノード変更は、別途の対象です
DTD 宣言とカスタム実体カタログは未実装です。定義済み実体と 10 進・16 進の文字参照には対応しています
要素内のコメントと処理命令は、インポート、即時読み取り、保存、再ロード、ロールバックを通じてネイティブのままです。ルート外のドキュメントレベルマークアップと完全な XML レキシカル往復は、別途の対象です
外部 href の解決、エンコードされた exData 転送、maxLength の強制、外部メディアコンシューマ、Unicode リッチウィジェットアピアランスは、別途の実装対象です
リファレンスと関連 API
インポートのルートと置き換えのセマンティクスはAdobe XFA Element API に、XML の名前、参照、空白はXML 1.0 に従います
TXFAEventBinding、TXFAEventActionKind、リッチテキストプロパティ、インタラクティブ XFA ランタイムを参照してください