科技 · 實用指南
ElementTree 出現「unbound prefix」?修復 XML 前先證明命名空間
先保留原始位元組,區分損壞的完整文件與脫離祖先作用域的片段;只有權威 URI 能證明綁定時才注入命名空間。

ElementTree 在限定名稱使用的前綴沒有作用域內宣告時拋出 unbound prefix。同一錯誤可能是無效完整文件,也可能是失去祖先 xmlns 的有效片段。先保存原始位元組再分類。
不要猜 URI,也不要把 register_namespace() 當成解析修復。從完整文件、schema、產生者合約或祖先節點證明綁定,只在記憶體 wrapper 注入已證明宣告,並核對展開名、屬性、文字、tail 與修復清單。
修復前保存證據
讀取並雜湊原始位元組,記錄解析器、Python 版本、錯誤行列與附近前綴。原件與修復副本分開。
上游若只傳片段,要記錄截斷邊界,不能當成無效完整文件。
先判定作用域遺失原因
檢查完整文件與祖先鏈的 xmlns。祖先有宣告時從權威文件恢復 URI;沒有依據就拒絕或隔離。
同一前綴可在不同作用域映射不同 URI,拼寫不是身分證據。
分開解析、查詢與序列化控制
register_namespace() 影響輸出,find() 映射影響查詢,兩者都不能修補未宣告輸入。
URI 已證明時,只在記憶體 wrapper 加一個宣告並記錄變更與來源摘要。
隔離寬鬆恢復
寬鬆解析器可能閉合標籤、丟棄 token 或修別的問題,只能隔離用於取證。
比較恢復結果與原件;變更超過單一已證明綁定就失敗。
按語義身分驗收
斷言 {URI}local 元素與屬性、節點數、順序、文字、tail 和業務識別碼。
保存原件摘要、URI 來源、wrapper、診斷與驗收;可解析不代表語義相同。
