use of com.helger.schematron.pure.bound.IPSBoundSchema in project ph-schematron by phax.
the class DocumentationExamples method validateXMLViaPureSchematron2.
public static boolean validateXMLViaPureSchematron2(@Nonnull final File aSchematronFile, @Nonnull final File aXMLFile) throws Exception {
// Read the schematron from file
final PSSchema aSchema = new PSReader(new FileSystemResource(aSchematronFile)).readSchema();
if (!aSchema.isValid(new DoNothingPSErrorHandler()))
throw new IllegalArgumentException("Invalid Schematron!");
// Resolve the query binding to use
final IPSQueryBinding aQueryBinding = PSQueryBindingRegistry.getQueryBindingOfNameOrThrow(aSchema.getQueryBinding());
// Pre-process schema
final PSPreprocessor aPreprocessor = new PSPreprocessor(aQueryBinding);
aPreprocessor.setKeepTitles(true);
final PSSchema aPreprocessedSchema = aPreprocessor.getAsPreprocessedSchema(aSchema);
// Bind the pre-processed schema
final IPSBoundSchema aBoundSchema = aQueryBinding.bind(aPreprocessedSchema, null, null, null, null);
// Read the XML file
final Document aXMLNode = DOMReader.readXMLDOM(aXMLFile);
if (aXMLNode == null)
return false;
// Perform the validation
return aBoundSchema.validatePartially(aXMLNode, FileHelper.getAsURLString(aXMLFile)).isValid();
}
use of com.helger.schematron.pure.bound.IPSBoundSchema in project ph-schematron by phax.
the class PSXPathBoundSchemaTest method testSchematronValidation.
@Test
public void testSchematronValidation() throws SAXException, SchematronException {
for (int i = 0; i < SCH.length; ++i) {
final IReadableResource aSchRes = new ClassPathResource("test-sch/" + SCH[i]);
final IReadableResource aXmlRes = new ClassPathResource("test-xml/" + XML[i]);
// Resolve all includes
final IMicroDocument aDoc = SchematronHelper.getWithResolvedSchematronIncludes(aSchRes);
assertNotNull(aDoc);
// Read to domain object
final PSReader aReader = new PSReader(aSchRes);
final PSSchema aSchema = aReader.readSchemaFromXML(aDoc.getDocumentElement());
assertNotNull(aSchema);
// Create a compiled schema
final String sPhaseID = null;
final IPSErrorHandler aErrorHandler = null;
final IPSBoundSchema aBoundSchema = PSXPathQueryBinding.getInstance().bind(aSchema, sPhaseID, aErrorHandler);
// Validate completely
final SchematronOutputType aSVRL = aBoundSchema.validateComplete(DOMReader.readXMLDOM(aXmlRes), aXmlRes.getAsURL().toExternalForm());
assertNotNull(aSVRL);
if (false)
System.out.println(new SVRLMarshaller().getAsString(aSVRL));
}
}
use of com.helger.schematron.pure.bound.IPSBoundSchema in project ph-schematron by phax.
the class PSXPathBoundSchemaTest method testBindAllValidSchematrons.
@Test
public void testBindAllValidSchematrons() throws SchematronException {
for (final IReadableResource aRes : SchematronTestHelper.getAllValidSchematronFiles()) {
// Parse the schema
final PSSchema aSchema = new PSReader(aRes).readSchema();
assertNotNull(aSchema);
CommonsTestHelper.testToStringImplementation(aSchema);
final CollectingPSErrorHandler aLogger = new CollectingPSErrorHandler();
assertTrue(aRes.getPath(), aSchema.isValid(aLogger));
assertTrue(aLogger.isEmpty());
// Create a compiled schema
final String sPhaseID = null;
final IPSErrorHandler aErrorHandler = null;
final IPSBoundSchema aBoundSchema = PSXPathQueryBinding.getInstance().bind(aSchema, sPhaseID, aErrorHandler);
assertNotNull(aBoundSchema);
}
}
Aggregations