複数の XML ドキュメントに複数の xpath クエリを適用するルールを解釈する
-
21-09-2019 - |
質問
いくつかの XML ドキュメントを入力として受け取り、次の種類のルールをチェックするコンポーネントを構築する必要があります。
XML1:/bookstore/book[price>35.00] != null
and (XML2:/city/name = 'Montreal'
or XML3://customer[@language] contains 'en')
基本的に、私のコンポーネントは次のことができるはずです。
- XML トークンを対応する XML ドキュメント (コロンの前) に置き換えます。
- この XML ドキュメントに xpath クエリを適用する
- xpath 出力を予想される結果 (「=、「!=」、「含む」) と照合して確認します。
- 基本的な構文 (「and」、「or」、および括弧) に従います。
- ルールが真か偽かを判断する
私に役立つ図書館を知っていますか?たぶんJavaCCでしょうか?
ありがとう
解決 2
JavaCCのメーリングリスト上の誰かが Schematronのに言及し、正しい方向に私を指摘しました。これは Probatron に利用可能な最善のJava実装であるように思われます。
に私を導きましたSchematronのウェブサイトの請求言語のサポートしていることを「リンク間でジャンプとXML文書間の制約をチェックするために」Probatronがそれを許可していないようです。私はそれを微調整するか、(すべての私のソースドキュメントを含む一時XMLドキュメントを構築するなど)そのためのトリックを見つけることないかもしれません。それとは別に、それはProbatronが私のために右のライブラリであるに見えます。
他のヒント
XPATH を評価する場合に推奨するのは ジャクセン.
ヤクセン はオープンソースの XPath ライブラリです Javaで書かれています。に適応可能です 多くの異なるオブジェクトモデル、 DOM、XOM、dom4j、および JDOM を含みます。アダプタを書くことも可能ですか? これは、 コンパイル済み Java バイト・コードまたは Java Bean を XML として作成し、クエリを実行できます。 XPath のこれらのツリーも同様です。
の Java XPath API (Java 5 / javax.xml.xpath)もオプションですが、まだ試していません。