XML / XSD 驗證器
伺服器端範例
驗證結果
XSD 結構描述
XML 文件
技術細節
XML / XSD 驗證器如何運作
工具功能說明
此 XML XSD 驗證器會透過伺服器端處理,依據 XML Schema 定義檢查 XML 文件。工具會驗證 Schema 中定義的結構、資料型別、元素順序與屬性需求。當驗證失敗時,會在可用的情況下回報包含行號與欄位號的特定錯誤。驗證器可處理命名空間、複合型別、序列限制,以及像是模式比對與值限制等 Schema facet。
範例:書籍目錄驗證
請看這個 XSD Schema,要求書籍必須有整數 ID 與十進位價格:
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>像 <book id="abc"><price>not-a-number</price></book> 這樣的無效 XML 會因為 ID 屬性與 price 元素都違反型別限制而驗證失敗。
常見使用情境
開發者在與 SOAP API 整合、驗證設定檔或處理資料交換格式時會使用 XML Schema 驗證。常見情境包括:依據已發布的 Schema 驗證 API 回應、部署前檢查設定檔,以及在 ETL 流程中確保資料品質。此驗證器特別適合在資料進入正式系統前,提早抓出型別不匹配、缺少必要元素與元素順序錯誤等問題。
驗證引擎與限制
此工具透過 libxmljs Node.js 綁定使用 libxml2,提供 XML Schema 1.0 相容性。為了安全起見,驗證器完全在伺服器端處理 Schema,且不會抓取外部資源或解析基於網路的匯入。為安全考量已停用外部實體處理(XXE)。只有在主 XSD 內容中提供所有被參照的 Schema 時,Schema include 與 import 才能運作。
- 網路存取:為安全起見已封鎖
- Schema 匯入:必須內嵌,不支援外部解析
- 外部實體:已停用(XXE 防護)
- 處理限制:適用合理的大小限制
伺服器端 vs 用戶端處理
用戶端的 XML 格式良好(well-formedness)檢查足以進行基本語法驗證。然而,XSD 驗證需要專門的引擎,因為瀏覽器不包含 XML Schema 處理器。伺服器端驗證可確保結果一致、處理繼承與匯入等複雜的結構描述功能,並提供與可能具惡意的 XML 內容之間的安全隔離。