Interpretare una norma applicare più query XPath su più documenti XML
-
21-09-2019 - |
Domanda
Ho bisogno di costruire un componente che avrebbe preso un paio di documenti XML in input e controllare quanto segue tipo di regole:
XML1:/bookstore/book[price>35.00] != null
and (XML2:/city/name = 'Montreal'
or XML3://customer[@language] contains 'en')
Fondamentalmente il mio componente deve essere in grado di:
- sostituire i token XML con il documento XML corrispondente (prima di due punti)
- applicare query XPath su questo documento XML
- controllare l'uscita XPath risultato atteso ( "=", "! =", "Contiene")
- seguire la sintassi di base ( "e", "o" e le parentesi)
- dire se la regola è vera o falsa
Sapete qualsiasi libreria che mi potrebbe aiutare? forse JavaCC?
Grazie
Soluzione 2
Qualcuno sulla mailing list JavaCC mi indicò la direzione giusta, menzionando Schematron . E mi ha portato a Probatron che sembra essere la migliore implementazione Java disponibili.
sito web Schematron sostiene che il linguaggio supporta "salto attraverso collegamenti e tra i documenti XML per verificare i vincoli" ma sembra Probatron non consente questo. Non posso modificarlo o trovare un trucco per questo (come la costruzione di un documento XML temporaneo contenente tutti i miei documenti di origine). A parte questo, sembra Probatron è la libreria giusta per me.
Altri suggerimenti
Per la valutazione query XPATH vi consiglio Jaxen .
Jaxen è una libreria open source XPath scritto in Java. È adattabile a molti modelli di oggetti diversi, compresi DOM, XOM, dom4j e JDOM. E 'anche possibile scrivere adattatori che gli alberi non XML, come trattare bytecode Java compilato o fagioli Java come XML, permettendo così di interrogare questi alberi con XPath troppo.
Il Java XPath API ( Java 5 / javax.xml.xpath ) è anche un'opzione, ma non l'ho ancora provato.