原生 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 執行環境