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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top