原生 XFA exData XML

一般事件宿主會建立不存在的 exData 值屬性,並把真實的外部 XML 子節點匯入其原生表單出現個體;XHTML draw 內容在原生 XDP 持久化與重新載入後送達 rich text 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 子節點,與其他值選項互斥;缺少的 draw value 與 exData 子節點可以在同一事件中建立並匯入

exData 預設 maxLength=-1 與 transferEncoding=none,contentType、href、id、name、rid、use 與 usehref 屬性皆為空

事件宿主不在 exData 上公開純量值存取子;外部 XML 內容請使用 loadXML 與 saveXML

立即讀取、識別與交易

純原生 XML 操作會在腳本繼續執行前驗證並序列化每個請求;格式錯誤的 XML 會在腳本內擲出例外,可用 try/catch 處理而不改變目前內容

確定性的回應重播共用既有的腳本交易,不執行任何 UI、檔案、網路或傳輸副作用

同一事件中,後續的 saveXML 呼叫看得到先前成功的匯入與目前的 exData 屬性;保留的參考會在之後的事件中解析到目前的節點識別

只有被指定的重複出現個體收到原生內容;新出現個體以範本 XML 初始化,不會複製既有出現個體的匯入覆寫

以 overwrite=true 匯入空根節點會清空實際內容,並在持久化與重新載入後保持為空;它不會回退成範本內容

未處理的腳本錯誤與原生發布失敗會還原精確的原生 XDP 位元組,包括先前的 一般欄位寫入與 XML 變更

預算與已儲存內容的消費

腳本限制約束 XML 輸入與輸出位元組、原生元素與文字節點、深度、操作、經過時間與重播回應;widget 的 MaxValueChars 也會約束發布的 XML 值

FPC bridge 在 XML 回應與一般動作值中保留 UTF-8 位元組,包括變音字元與增補 Unicode

已儲存的 XHTML draw 內容使用既有 rich text 消費端的字型、尺寸、顏色與行內 CSS 行為;獨立的 PDF 閱讀器會驗證第一執行個體文字、取代後的樣式、新執行個體內容與明確清空

其餘 XML 整合目標

本次交付實作 exData 內容操作;其他 nodeclass 的 loadXML/saveXML 方法、Data DOM 結構匯入與一般外部節點變更仍是另外的目標

DTD 宣告與自訂實體目錄尚未實作;預先定義實體與十進位或十六進位字元參照受支援

元素內註解與處理指示在匯入、立即讀取、儲存、重新載入與回復全程保持原生;根節點之外的文件層級標記與完整的 XML 語彙往返仍是另外的目標

外部 href 解析、編碼的 exData 傳輸、maxLength 強制執行、外部媒體消費端與 Unicode rich widget 外觀仍是另外的實作目標

參考資料與相關 API

匯入根節點與取代語意遵循Adobe XFA Element API;XML 名稱、參照與空白遵循XML 1.0

詳見TXFAEventBinding、TXFAEventActionKind、Rich Text 屬性與互動式 XFA 執行環境