原生 XFA Property DOM

啟用 EnableJavaScript 的一般執行,會把表單容器的 property 子節點納入即時事件樹,包括 value、typed value、font、fill、color、ui、border 與 edge 節點

具名容器在 SOM 路徑中使用自己的名稱;property 節點使用類別名稱,並保留實際的 name 屬性(通常為空)

型別化值與屬性

const field = xfa.resolveNode("main.row[1].cell");
field.value.text.value = "25";
field.font.size = "18pt";
field.font.fill.color.value = "0,128,255";
field.ui.textEdit.multiLine = "1";
field.resolveNode("border.edge[1]").thickness = "3pt";
field.font.setAttribute("saved", "custom");
const saved = field.font.getAttribute("custom");

row[1].cell.value.text.value = 25
row[1].cell.font.size = "18pt"

欄位 value 節點下的型別化子節點共用欄位的即時 rawValue;透過 value.text.value、field.rawValue 與繫結 dataNode 的讀寫會立即互相反映

對帶 value 屬性的 property 節點(例如 color),value 屬性讀寫的是該屬性;對純量內容節點,讀寫的則是文字內容

生效 property 繫結中存在的屬性會以直接屬性公開,但保留的節點與引擎成員除外;getAttribute(name) 讀取任意屬性,setAttribute(value, name) 寫入屬性並立即公開一個安全的新名稱

FormCalc 透過同一棵事件樹解析 property 路徑並指派純量屬性;property 兄弟節點支援出現個體索引與類別選擇器

原生持久化與 render

成功的寫入會在原生表單封包中,為對應的容器出現個體建立或更新 property 節點;範本與其他重複執行個體保留各自預設值

property 查詢會沿具名容器往下按類別與本機出現個體進行,而不是跳過未命名節點;改變 property 的 name 屬性不會改變其識別,已儲存的 XDP 重新載入後仍保留生效的覆寫

保留的 property handle 會跟隨其已發布的 owner 識別,穿越執行個體插入與移動;在執行個體被移除後寫入 handle 會中止並還原交易

字型字體與尺寸參與每執行個體的可增長文字量測與重排;flatten 會為每個欄位出現個體讀取生效的 font、color、border、paragraph 與受支援的 UI 屬性

Rich text draw會為每個出現個體消耗生效的 font、paragraph、行內 CSS 與純量內容覆寫,包括其量測與 run 放置

執行個體建立保留所有 property 兄弟預設值,包括多個 edge 節點,並使用範本屬性值而不是另一個執行個體的覆寫

UI 覆寫會建立受支援的 widget 選擇,並在事件成功後改變實際的每執行個體執行階段類型與原生欄位旗標

預算與低階繫結

property 走訪共用事件的節點、深度、操作與位元組預算;原生文字與屬性寫入遵守 MaxValueChars,失敗的寫入會還原原生欄位值、property 覆寫、腳本狀態與執行個體順序

直接呼叫端使用xebdProperty 並提供Attributes 與 DefaultAttributes;後者用來初始化新複製的節點

property 屬性動作在 TXFAEventAction.Value 中包含屬性名稱、一個 NUL 分隔符與值;TXFAWidgetRuntime 會驗證並把它套用到原生 property 目標

涵蓋範圍

事件樹包含已宣告的 property 節點及其生效屬性,並為受支援的格式與 widget 類別提供結構描述預設值;不存在 property 的建立現在能在原生表單封包中實體化受支援的格式路徑

event、calculate 與 validate 宣告仍是執行中繼資料;variables 腳本仍是 script object,一般 property 編輯不會啟用中繼資料腳本

更多結構描述 property 類別、通用的移除與重新掛父、命名空間限定屬性變更、更多版面 property 消費端,以及更進一步的 rich text 或 widget 編輯功能,會以另外的目標繼續推進

相關 API

即時 SOM 解析、原生 Data DOM、HPDFXFAResolveFormInstanceProperty 與互動式 XFA 執行環境