2010-03-19 29 views
1

我需要建立這將需要一些XML文檔中輸入並檢查下列類型的規則組件應用多個XPath查詢:解釋規則上的多個XML文檔

XML1:/bookstore/book[price>35.00] != null 
and (XML2:/city/name = 'Montreal' 
    or XML3://customer[@language] contains 'en') 

基本上我的部件應該可以到:

  • 替代與相應的XML文檔的XML標記(冒號之前)
  • 此XML文檔
  • 枝上應用XPath查詢ck xpath輸出與預期結果(「=」,「!=」,「contains」)
  • 遵循基本語法(「和」,「或」和括號)
  • 確定規則是真還是假

你知道任何可以幫助我的圖書館嗎?也許JavaCC?

感謝

回答

0

有人在JavaCC郵件列表中指出我正確的方向,提及Schematron。它使我轉向了Probatron這看起來是最好的java實現。

Schematron網站聲稱,該語言支持「跳過鏈接和XML文檔以檢查約束」,但似乎Probatron不允許這樣做。我可能不會調整它或找到一個技巧(如構建一個包含我所有源文檔的臨時XML文檔)。除此之外,它看起來Probatron是適合我的圖書館。

0

爲了評估的XPath我建議JAXEN

Jaxen的是一個開源的XPath庫 用Java編寫的。它可以適應多種不同的對象模型,包括DOM,XOM,dom4j和JDOM在內的 。 是否也可以編寫將非XML樹(如 )編譯的Java字節碼或Java bean 作爲XML處理的適配器 ,從而使您可以使用XPath查詢 這些樹。

Java XPath API的Java 5/javax.xml.xpath的)也是一種選擇,但我還沒有嘗試過呢。

+0

對於xpath部分,我正在考慮使用JDK API。根據以下基準,它似乎比其他庫更快,我也沒有任何性能限制: http://www.asciiarmor.com/post/33736620/java-xpath-1-0-engine-comparison-performance 我的問題更多地涉及如何解釋規則和編排相應的解析。我應該更精確,對不起。 – Damien 2010-03-19 14:55:10

+0

我認爲如果你想在XPath中使用文件名,那麼你應該看看xquery。還有一個你可能想要研究的XPath lib叫做VTD-XML(我是其中的合作者) – 2010-03-20 08:24:54

+0

謝謝,我已經看到schematron應該能夠使用xquery而不是xpath,但不幸的是,不幸的是, ,Java實現(probatron)目前僅支持xpath。我要評估所有這些,並看看VTD-XML來構建我的解決方案。 – Damien 2010-03-21 07:56:47