Interpretar una regla de aplicación de múltiples consultas XPath en varios documentos XML
-
21-09-2019 - |
Pregunta
Tengo que construir un componente que tendría unos documentos XML en la entrada y comprobar el siguiente tipo de reglas:
XML1:/bookstore/book[price>35.00] != null
and (XML2:/city/name = 'Montreal'
or XML3://customer[@language] contains 'en')
Básicamente mi componente debe ser capaz de:
- sustituir los tokens XML con el documento XML correspondiente (antes de colon)
- solicite consulta XPath en este documento XML
- comprobar la salida XPath resultado esperado ( "=", "! =", "Contiene")
- seguir la sintaxis básica ( "y", "o" y los paréntesis)
- saber si la regla es verdadera o falsa
¿Conoce usted cualquier biblioteca que me podría ayudar? tal vez JavaCC?
Gracias
Solución 2
Alguien en la lista de correo JavaCC me señaló a la dirección correcta, mencionando Schematron . Me llevó a Probatron que parece ser la mejor aplicación java disponible.
sitio web Schematron afirma que el lenguaje es compatible con "salto a través de enlaces y entre documentos XML para comprobar las restricciones" pero parece Probatron no permite eso. Puede que no retocarlo o encontrar un truco para que (como la construcción de un documento XML temporal que contiene todas mis documentos fuente). Aparte de eso, se ve Probatron es la biblioteca adecuada para mí.
Otros consejos
Para evaluar XPaths recomiendo Jaxen .
Jaxen es una biblioteca de XPath de código abierto escrito en Java. Es adaptable a muchos diferentes modelos de objetos, incluyendo DOM, XOM, dom4j y JDOM. ¿También es posible escribir adaptadores que los árboles tratar a los no-XML como compilado el código de bytes de Java, Java Beans como XML, lo que le permite consultar estos árboles con XPath también.
El de Java XPath API ( Java 5 / javax.xml.xpath ) es también una opción, pero no he probado todavía.