Pregunta

Por lo que yo puedo decir, JAXP por defecto es compatible con el esquema XML de W3C y RelaxNG de Java 6 .

Puedo ver algunas APIs, en su mayoría experimentales o incompletos, en el schematron.com página de enlaces .

¿Hay un enfoque en la validación de schematron en Java que es completa, eficiente y se puede utilizar con la API JAXP?

¿Fue útil?

Solución

Jing apoya pre-ISO validación Schematron (tenga en cuenta que la aplicación de Jing se basa también en XSLT).

También hay implementaciones XSLT que se pueden invocar muy fácilmente de Java. Es necesario decidir qué versión de Schematron le interesa y luego obtener la correspondiente hoja de estilo - todos ellos deben estar disponibles a partir schematron.com. El proceso es muy simple simple, que implica básicamente 2 pasos:

  • XSLT aplicar el esqueleto en su esquema Schematron para obtener una nueva hoja de estilo XSLT que representa el esquema de Schematron en XSLT
  • aplicar el XSLT obtenido en el documento o documentos de ejemplo para validarlos

JAXP es sólo una API y que no requiere soporte para Relax NG de una aplicación. Es necesario comprobar la aplicación específica que se utiliza para ver si eso es compatible con Relax NG o no.

Otros consejos

Una aplicación Java puro Schematron se encuentra en https://github.com/phax/ph-schematron / Trae soporte tanto para el enfoque XSLT y el enfoque de Java puro.

Se puede extraer de SchematronAssert (divulgación: mi código). Está destinado principalmente para las pruebas unitarias, pero puede utilizarlo para código normal también. Se lleva a cabo mediante XSLT.

Las pruebas unitarias ejemplo:

ValidationOutput result = in(booksDocument)
    .forEvery("book")
    .check("author")
    .validate();
assertThat(result).hasNoErrors();

ejemplo validación independiente:

StreamSource schemaSource = new StreamSource(... your schematron schema ...);
StreamSource xmlSource = new StreamSource(... your xml document ... );
StreamResult output = ... here your SVRL will be saved ... 
// validation 
validator.validate(xmlSource, schemaSource, output);

El trabajo con una representación de objeto de SVRL:

ValidationOutput output = validator.validate(xmlSource, schemaSource);
// look at the output
output.getFailures() ... 
output.getReports() ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top