Interprétez une règle l'application de plusieurs requêtes XPath sur plusieurs documents XML
-
21-09-2019 - |
Question
Je dois construire un composant qui prendrait quelques documents XML en entrée et vérifier le type de règles suivantes:
XML1:/bookstore/book[price>35.00] != null
and (XML2:/city/name = 'Montreal'
or XML3://customer[@language] contains 'en')
En gros devrait être en mesure de mon composant:
- remplacer les jetons XML avec le document de XML correspondant (avant deux points)
- appliquer requête XPath sur ce document XML
- vérifier la sortie de XPath contre résultat attendu (les "=", "! =", "Contient")
- suivre la syntaxe de base ( "et", "ou" et entre parenthèses)
- dire si la règle est vraie ou fausse
Connaissez-vous une bibliothèque qui pourrait me aider? JavaCC peut-être?
Merci
La solution 2
Quelqu'un sur la liste de diffusion JavaCC me montra la bonne direction, en mentionnant Schematron . Il m'a conduit à Probatron qui semble être la meilleure application java disponible.
site web Schematron prétend que la langue prend en charge « saut à travers des liens et entre les documents XML pour vérifier les contraintes », mais il semble Probatron ne permet pas. Je ne peux pas le tordre ou de trouver un truc pour que (comme la construction d'un document XML temporaire contenant tous mes documents source). En dehors de cela, il semble Probatron est la bibliothèque pour moi.
Autres conseils
Pour évaluer XPath je recommande Jaxen .
Jaxen est une bibliothèque XPath open source écrit en Java. Il est adaptable à beaucoup de différents modèles d'objet, y compris DOM, XOM, dom4j et JDOM. Est-il également possible d'écrire des adaptateurs qui traitent des arbres non-XML tels que compilé byte code Java ou beans Java comme XML, vous permettant ainsi d'interroger ces arbres avec XPath aussi.
Le API Java XPath ( Java 5 / javax.xml.xpath ) est également une option, mais je l'ai pas encore essayé.