XML 的「有效」有不同層次
XML 格式化與驗證線上工具|XSD 1.0、XPath、樹狀檢視
縮排整齊只代表重新排版。先確認 XML 是否 well-formed,再分別檢查 XSD 1.0 規則、命名空間與 XPath 結果;格式化和壓縮會解析後重新序列化,註解、CDATA、DOCTYPE、處理指示與混合內容不保證原樣保留。
從 XML 原始碼一路確認到匹配節點
- 1
XML 原始碼
包含編碼、標記與宣告的輸入文字
- 2
Well-formed XML
標記正確巢狀、屬性有引號,而且只有一個根元素
- 3
資料樹狀結果
以解析後的鍵、屬性與值檢視結構,不解析 expanded name
- 4
通過 XSD 1.0 驗證
型別、元素順序、出現次數與限制符合貼上的 Schema
- 5
XPath 節點結果
以 XPath 3.1 引擎選取節點;目前沒有獨立 prefix map
Well-formed 不等於通過 XSD 1.0 驗證
Well-formed XML
解析器可以在不容錯修復的情況下,建立只有一個根元素且標記正確巢狀的 XML 文件。
Schema-valid XML
除了能解析,實例還必須符合你貼上的單一 XSD 1.0 所定義的元素、順序、出現次數與資料型別。
<invoice total="ten"/> 可以是 well-formed XML,卻不符合 XSD 的 decimal 型別。NAMESPACE CONTEXT
前綴只是別名,namespace URI 才是識別依據
同一個 namespace URI 可以使用不同前綴。本站目前沒有 XPath prefix → URI 綁定欄位,而且查詢是以 Document 為 context;來源裡的前綴不會自動成為查詢前綴,預設命名空間中的元素也不會被 //item 選中。請改用 XPath 3.1 expanded QName(Q{URI}local),或明確比對 local-name() 與 namespace-uri()。
來源:xmlns:inv="urn:example:invoice"查詢:Q{urn:example:invoice}item//Q{urn:example:invoice}item[@status="open"]外部實體與 Schema URL 是安全邊界
DevSexy 解析 XML 與 XSD 時不會抓取外部 DTD、Schema 或 entity URL。XSD 驗證只使用你直接貼上的 Schema,並啟用 NONET、NO_XXE 與停用系統 catalog 的解析選項,避免把格式化工具變成 XXE 或內網探測管道。
● 外部資源解析:停用
● 輸入處理:瀏覽器本機執行
依檢查目的準備正確的輸入
| Task | Required input | Operation |
|---|---|---|
| 整理簡單的資料型 XML | XML;先保留原始檔 | 格式化 / 壓縮 |
| 檢查基本語法 | XML | Well-formed 檢查 |
| 檢查文件結構與型別 | XML + 貼上的 XSD 1.0 | Schema 驗證 |
| 選取目標節點 | XML + XPath;命名空間需寫進查詢 | XPath 節點查詢 |
XML 格式化與驗證常見問題
- 01格式化 XML 就代表文件通過驗證嗎?
- 不代表。格式化前會先檢查 well-formed 語法,但無法證明文件符合 XSD。輸出還是解析後重新序列化的結果,處理註解、CDATA、DOCTYPE、處理指示或混合內容時,請保留原始檔並逐項比對。
- 02為什麼 XPath 查不到帶 namespace 的元素?
- 目前工具沒有 prefix map,來源文件的前綴也不會自動綁定到查詢。預設命名空間可改用 //Q{URI}item,或以 local-name() 和 namespace-uri() 明確比對。
- 03工具會從 URL 載入外部 XSD 或 DTD 嗎?
- 不會。外部資源解析已停用;XSD 1.0 驗證只使用你在參考欄直接提供的 Schema 內容,也不會解析外部 include 或 import。