原生 XFA Bind SOM
互動式 runtime 會對實際的原生 dataset 節點解析 bind dataRef 路徑;直接編輯、script 的 rawValue 指派與已實體化的隱藏表單值,讀取的都是同一個選定資料值
選擇器
| 運算式 | 選取結果 |
|---|---|
$data..Detail.Price[1] | 符合的 descendant Detail 底下第二個 Price |
$data.main.*.Detail[1].Price[1] | 以要求的後綴收斂 wildcard 分支 |
$data.main.*[1].Detail.Price[1] | 把 wildcard 限制在其明確的第二個 sibling 符合項 |
$data.main.#dataGroup[1].Detail.Price[1] | 在 sibling 索引之前先採用原生 Data DOM 的群組分類 |
$data..Detail[*].Price[1] | 讓每個符合的 Detail occurrence 都參與後綴查找 |
$data.main.Price\.Tax | 選取名稱字面即為 Price.Tax 的 XML 元素 |
命名空間限定的 xfa:dataNode 屬性存在時,由它決定 dataGroup 與 dataValue 的分類;否則以實際的元素子節點區分群組與值
註解、processing instructions 與一般文字節點不作為資料元素參與
隱含欄位名稱綁定把點視為 XML 名稱的一部分;明確的 selector 路徑用反斜線跳脫 selector 的字面字元
交易與原生持久化
編輯成功時會更新選定的 dataset 葉節點與既有別名,包括 value 屬性已實體化的隱藏欄位;未選取的 sibling 與重複 occurrence 保留原值
驗證失敗、操作配額用盡或期限到期時,會逐位元組還原原生 dataset 與 form packets;runtime 設定的單調時鐘也同樣約束綁定走訪
SaveToBytes 持久化的是實際原生 XML,而不是只有事件的視圖;重新開啟儲存的 XDP 會再次讀取選定的資料值
建立與剩餘涵蓋範圍
確定性的具名路徑可以建立缺失的 index-zero 元素;後綴解析失敗或走訪中斷時,會移除該次查找所建立的配置
wildcard、descendant、class 與 [*] 路徑只選取既有節點,不會配置語意不明的缺失分支
XFA dataRef 規格使用完整限定的 Data DOM 路徑;既有的相對綁定路徑仍是相容性功能,會在提供的 occurrence context 內解析
相對路徑在提供的 occurrence 中找不到時,不會去搜尋其他記錄;未解析的間接綁定可改用該 occurrence 獨立的原生表單值,不會配置語意不明的 dataset 路徑
相對的 [+n] 與 [-n] 索引屬於未限定的 script 參照,不作為完整限定的綁定索引接受
屬性 selector、一般述詞、全部 node-class 結構性 XML 操作、全域綁定指派政策,以及以 picture 為基礎的 canonical 值驗證,仍是獨立的涵蓋目標