XmlSeedTemplate

Level 2 · Rebuildable structural projections

不只保存 XML,也讓文件成為可查詢的結構。

第一層保存階層、順序與內容;第二層把明示標記映射成跨文件的檢索維度、可定址節點與參照邊。第二層可回到來源,也可重建,不是另一份可獨立修改的知識。

瀏覽器內教學模擬。所有身分、權限與 XML 都是公開合成樣本;本頁不呼叫 XRepository API,不讀取或儲存你的文件。XML 是教學節錄,不是可直接 PUT 的完整文件;本頁解析器只示範 canonical 標記,不取代伺服器驗證。

  1. 01 · Canonical source

    XML 文件層

    element、text、hierarchy、order 與 x:* 明示標記。

  2. 02 · Derived structure

    抽象結構層

    DocumentType、dimension/value associations、anchors、reference edges。

  3. XRepository · Access boundary

    受範圍與權限約束的查詢

    Workspace membership + app + record ACL;索引不是存取憑證。

Framework · Mechanisms, not a business vocabulary

Framework 定義投影機制,不規定業務分類。

核心契約說明「XML 如何對應到第二層結構、如何查詢與授權」。維度名稱、業務值與文件種類由應用/模板定義;x:index 沒有一份要求所有應用共用的領域詞彙表。

核心 primitive 與投影邊界
機制對應的結構不推論什麼
DocumentType依 root/definition 契約建立種類投影不要求任何範例中的 doctype。
x:indexrecord ↔ dimension/value association;每 marker 一列不自動賦予型別、唯一性、workflow constraint 或 ACL。
x:id文件內明示 Anchor;與診斷 NodePath 分離不從普通欄位名稱或位置推論穩定 identity。
x:ref/x:ref-uri獨立的 local/HTTPS locators 與 Reference rows不互相配對或 fallback,不因存在 locator 而取得權限。
XRepository 查詢邊界Workspace / app scope、record ACL、current projection一個 equality GET 一對 index/value;結果是 records,不是 correlated XML nodes。

Conventions · Existing authority boundaries still apply

通用 metadata 慣例與既有強制邊界。

以下區分可沿用的命名慣例與既有契約,不把四項一概變成新的必填索引清單,也不放寬既有要求。目前適用的 XFramework/conforming template 必須保留 server-reserved、exactly-one 且匹配 route RecordId 的 IDENTITY;不能因其他名稱屬建議慣例,就把 identity 當作可選。

owner/audit 的權威仍在 Server。client 自填 XML 不會改變文件 owner 或稽核事實。沿用 profile 既有的欄位、位置與 Server 管理規則;這段說明不新增 index 必填要求,也不允許任意往 strict profile 插入 metadata。

業務專用詞彙應放在應用自己的規格與示例;資料夾專用欄位與附件編目名稱等,另列在應用維度字典,不混入這裡的通用建議。

Optional application examples · PUBLIC MOCK

應用實作範例(非 Framework 詞彙表)

以下 WorkPlan、Flow、Graph、Media Asset 只是公開合成 fixtures,不是 Framework 必備文件種類。沿用目前七筆樣本與同一套查詢機制,觀察應用如何自行選擇維度。你可以設計其他 doctype 與詞彙;本頁字典不是 server registry 或驗證 allowlist。

Application example A · Inspect the mapping

一個 XML marker,如何變成一筆 association?

例如修改 WorkPlan 應用選用的 WORK_ASSIGNEE 文字、增加同維度 marker,或改變節點順序,再重建。這個名稱不是核心保留詞;查詢層只抽出明示資料,不猜測業務語意。

本頁內建樣本的 DocumentType 對應 XML root local name;Workshop 文件則可由定義的 DocumentTypeKey、root 與 template pin 決定,不可只看 root 猜 identity。

第一層 · XML 節錄

WorkPlan 範例的 HTML template 如何宣告 marker?
<input data-x-name="assignee" data-x-index="WORK_ASSIGNEE">
           ↓ HTML → XML extraction
<assignee x:index="WORK_ASSIGNEE">Bob</assignee>
           ↓ server normalization → projection
(recordId, WORK_ASSIGNEE, "Bob", ordinal, NodePath)

data-x-index 是 HTML mapping;x:index 才是 XML architecture metadata。不能只因欄位叫 assignee 就假定它會被索引。

第二層 · XmlRecordIndexValue

XmlRecord ← IndexValue → IndexDimension

每個 marker 一筆;同一文件與同一維度都可重複
OrdinalDimensionKeyValue → NormalizedValueXML 來源

維度:trim → NFC → invariant uppercase。值:trim → NFC,保留大小寫與內部 XML whitespace。ValueHash 是 server 的 SHA-256 lookup accelerator,查詢仍核對完整值;本頁不偽造它。

同一文件的 anchors 與 references

x:id 命名文件內節點;x:ref 是同 Workspace/app 的 local locator;x:ref-uri 是獨立 HTTPS locator,不按序配對、不互為 fallback、不自動 fetch。NodePath 是可重建診斷位置,不是穩定 anchor。

Application example B · Query records, not XML nodes

把第二層結構交給 XRepository 查詢

點選情境,對照預計送出的 HTTP、equality 集合與結果。每個 equality GET 只有一組 index/value,回傳去重後的 record summaries;不是 XML 子節點或 SQL rows。

條件 1
條件 2

HTTP 計畫(不送出)

API 沒有 notEqual、XPath、range 或 typed comparison 參數。Saved View 用多次 equality GET 做交集/補集;值雖像日期、數字或狀態,這個 API 仍只比較文字。

模擬 record summaries

要看命中節點的語境,須再 GET 完整 XML;需要穩定定位時使用明示 anchor,不能把 Ordinal/NodePath 當持久 identity。

展開公開合成樣本的篩選原因(不是 API 回應)

真正的 API 不會回傳被 ACL 擋住的 record identity、內容或 count。本區僅為公開樣本的教學透視。

    Application example C · Optional vocabulary

    應用維度字典:各應用選擇了哪些語意?

    以下擷取目前範例應用的自訂維度,供設計自己的詞彙時參考;不是完整清單、Framework registry 或必備功能。新增應用維度不需要加入這份教學字典。DimensionKey 也不必等於 XML element name,只有實際標記的值才會進入 association。

    共同維度不等於共同 schema。TITLE 可來自根標題、Library 書名或 Flow route 標題;查詢命中整份 record。Catalog 的 title 是獨立摘要選取規則,不是該 record 所有 TITLE 值的集合。PLAN_OWNER/WORK_ASSIGNEE 不等於 DB owner,CURRENTSTATUS 不等於 visibility,CONTEXTID 不等於 Workspace。

    D · Back to the canonical source

    XRepository 的存取原則

    1. 授權與 scope。經登入 session 與有效 Workspace membership,server 以 Workspace + app + record ACL 限定可讀集合;shared 不是匿名公開。
    2. 查詢與讀回。例如 GET /api/workspaces/main/xml-records?app=xframework-workspace&index=TITLE&value=release 回 summaries;接著對選定 record 執行 GET …/xml-records/{recordId}?app=xframework-workspace 取得 XML 與 ETag。舊 /api/xml-records 已退役並回傳 410,不能省略 Workspace 或回退到 Main。
    3. 來源寫入與原子重建。Workspace 編輯完整 XML,送出必要 CSRF + exact If-Match;server 驗證/校正 envelope、儲存 XML,於同一交易替換 indices、anchors 與 references。412 必須重讀比較,不能直接改 SQL projection rows。
    4. Freshness。index 查詢只接受目前 projection rule version,且 投影對應目前 XML revision;stale 不代表沒有值。Reference resolver 還會重新檢查每個 target 的 ACL。

    Current:record-level equality、anchors、one-hop reference/backlink 與 Folder 集合組合。Target:跨多個 participant 的 correlated typed-relation query、通用推論與 RAG/向量檢索;不能由既有索引或 co-occurrence 推論已支援。

    回到系統設計說明 · 回到第一層 Library 範例應用