Интерпретация правила, применяющего несколько запросов XPath к нескольким документам XML.

StackOverflow https://stackoverflow.com/questions/2477898

Вопрос

Мне нужно создать компонент, который будет принимать на вход несколько XML-документов и проверять следующие правила:

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

По сути, мой компонент должен иметь возможность:

  • замените токены XML соответствующим XML-документом (перед двоеточием)
  • применить запрос XPath к этому XML-документу
  • проверьте вывод xpath на соответствие ожидаемому результату ("=", "!=", "содержит")
  • следуйте основному синтаксису («и», «или» и круглые скобки)
  • сказать, истинно или ложно правило

Знаете ли вы какую-нибудь библиотеку, которая могла бы мне помочь?может быть JavaCC?

Спасибо

Это было полезно?

Решение 2

Кто-то из списка рассылки JavaCC указал мне правильное направление, упомянув Схематрон.Это привело меня к Пробатрон это кажется лучшей доступной реализацией Java.

На веб-сайте Schematron утверждается, что язык поддерживает «переход по ссылкам и между XML-документами для проверки ограничений», но, похоже, Probatron этого не позволяет.Возможно, я не буду его настраивать или искать какой-нибудь трюк (например, создавать временный XML-документ, содержащий все мои исходные документы).Кроме того, похоже, что Probatron — подходящая мне библиотека.

Другие советы

Для оценки XPATH я рекомендую ДЖАКСЕН.

Джаксен это библиотека с открытым исходным кодом XPath, написанная на Java.Он адаптируется ко многим различным моделям объектов, включая DOM, XOM, DOM4J и JDOM.Возможно ли писать адаптеры, которые рассматривают не XML-деревья, такие как скомпилированный байтовый код Java или бобы Java как XML, что позволяет вам запросить эти деревья с XPath.

А API Java XPath (Java 5/javax.xml.xpath) тоже вариант, но я еще не пробовал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top