2010-07-01 85 views
1

我需要拿出某種規則引擎,在那裏我可以爲特定的XML文件的驗證規則。然後讀入規則並對xml聲明。XML驗證 - 什麼基於規則的引擎或框架,我應該使用

最好的方法是什麼?它是XPath還是XQuery,還是XSL或XSD?或者甚至可能是XMLUnit?

我需要做的東西像檢測時一定attibutes從類似的節點不同,例如:

<root> 
    <customers> 
    <customer name="Fred"> 
     <contact-details email="[email protected]"> 
    </customer> 
    <customer name="Barney"> 
     <contact-details email="[email protected]"> 
    </customer> 
    <customer name="Fred"> 
     <contact-details email="[email protected]"> 
    </customer> 
    </customers> 
</root> 

所以它會檢測上面的電子郵件地址是不同的,作爲一個規則。 還需要驗證xml中的數據與外部參考數據的關係,例如,郵編查詢等

任何建議,我應該用什麼來很容易地指定的規則,運行相當快? XML和外部數據適度大 - 可以爲每xml幾MB。

有些規則是簡單的,並且可以在XPath的做 - 檢查領域是一定的長度,或檢查某些頌歌已經填充某些屬性 - XSD適合這裏。但不用於檢查外部數據,或者執行上述操作。 XQuery是我想要的嗎?

如果你可以幫忙,謝謝。

-Justin

回答

0

是否有以上所有?

XSD將爲您提供基本的XML驗證。它將允許您確保元素具有正確的孩子和正確的屬性並且按照正確的順序等。如果您將XML與外部XML數據進行比較,那麼您將需要使用XMLUnit。如果您將XML中的字段與其他地方的外部字段進行比較(例如:確保郵政編碼是有效的郵政編碼),那麼您可能需要使用XPath。您需要了解每種工具的功能,因爲它們都可以協助進行驗證。

0

你應該看看Schematron

的Schematron的不同之處,從其他模式語言的基本概念 在 ,它不是基於語法,但是,分析 文檔中 發現樹模式。這種方法允許許多 種結構來表示 這是不方便的和基於語法的模式語言困難 。如果 你知道XPath或XSLT的表達 語言,你可以立即開始使用 的Schematron。

+0

感謝的Mads,我帶你去看看吧! 如何使它對外部參考進行驗證?我必須將它們合併到被測試的xml中嗎? 我喜歡這種方法,我可以在外部維護schematron規則,然後從這些構建一個schematron文檔,我應用這個xml。絕對可以工作! 再次感謝, 賈斯丁 – Justin 2010-07-02 08:41:40