Search in sources :

Example 1 with PSReader

use of com.helger.schematron.pure.exchange.PSReader 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();
}
Also used : DoNothingPSErrorHandler(com.helger.schematron.pure.errorhandler.DoNothingPSErrorHandler) IPSQueryBinding(com.helger.schematron.pure.binding.IPSQueryBinding) IPSBoundSchema(com.helger.schematron.pure.bound.IPSBoundSchema) PSReader(com.helger.schematron.pure.exchange.PSReader) FileSystemResource(com.helger.commons.io.resource.FileSystemResource) PSPreprocessor(com.helger.schematron.pure.preprocess.PSPreprocessor) Document(org.w3c.dom.Document) PSSchema(com.helger.schematron.pure.model.PSSchema)

Example 2 with PSReader

use of com.helger.schematron.pure.exchange.PSReader in project ph-schematron by phax.

the class PSXPathBoundSchemaTest method testBindAllInvalidSchematrons.

@Test
public void testBindAllInvalidSchematrons() {
    for (final IReadableResource aRes : SchematronTestHelper.getAllInvalidSchematronFiles()) {
        System.out.println(aRes);
        try {
            // Parse the schema
            final PSSchema aSchema = new PSReader(aRes).readSchema();
            final CollectingPSErrorHandler aCEH = new CollectingPSErrorHandler();
            PSXPathQueryBinding.getInstance().bind(aSchema, null, aCEH);
            // Either an ERROR was collected or an exception was thrown
            assertTrue(aCEH.getErrorList().getMostSevereErrorLevel().isGE(EErrorLevel.ERROR));
        } catch (final SchematronException ex) {
            System.out.println("  " + ex.getMessage());
        }
    }
}
Also used : SchematronException(com.helger.schematron.SchematronException) IReadableResource(com.helger.commons.io.resource.IReadableResource) PSReader(com.helger.schematron.pure.exchange.PSReader) PSSchema(com.helger.schematron.pure.model.PSSchema) CollectingPSErrorHandler(com.helger.schematron.pure.errorhandler.CollectingPSErrorHandler) Test(org.junit.Test)

Example 3 with PSReader

use of com.helger.schematron.pure.exchange.PSReader 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));
    }
}
Also used : IPSErrorHandler(com.helger.schematron.pure.errorhandler.IPSErrorHandler) SchematronOutputType(org.oclc.purl.dsdl.svrl.SchematronOutputType) IPSBoundSchema(com.helger.schematron.pure.bound.IPSBoundSchema) IReadableResource(com.helger.commons.io.resource.IReadableResource) SVRLMarshaller(com.helger.schematron.svrl.SVRLMarshaller) IMicroDocument(com.helger.xml.microdom.IMicroDocument) PSReader(com.helger.schematron.pure.exchange.PSReader) PSSchema(com.helger.schematron.pure.model.PSSchema) ClassPathResource(com.helger.commons.io.resource.ClassPathResource) Test(org.junit.Test)

Example 4 with PSReader

use of com.helger.schematron.pure.exchange.PSReader in project ph-schematron by phax.

the class Issue48Test method validateAndProduceSVRL.

public static void validateAndProduceSVRL(@Nonnull final File aSchematron, final File aXML) throws Exception {
    final PSSchema aSchema = new PSReader(new FileSystemResource(aSchematron)).readSchema();
    final PSPreprocessor aPreprocessor = new PSPreprocessor(PSXPathQueryBinding.getInstance());
    final PSSchema aPreprocessedSchema = aPreprocessor.getAsPreprocessedSchema(aSchema);
    final String sSCH = new PSWriter(new PSWriterSettings().setXMLWriterSettings(new XMLWriterSettings())).getXMLString(aPreprocessedSchema);
    if (false)
        System.out.println(sSCH);
    final SchematronResourceSCH aSCH = new SchematronResourceSCH(new ReadableResourceString(sSCH, StandardCharsets.UTF_8));
    // Perform validation
    final SchematronOutputType aSVRL = aSCH.applySchematronValidationToSVRL(new FileSystemResource(aXML));
    assertNotNull(aSVRL);
    if (false)
        System.out.println(new SVRLMarshaller().getAsString(aSVRL));
}
Also used : SchematronOutputType(org.oclc.purl.dsdl.svrl.SchematronOutputType) XMLWriterSettings(com.helger.xml.serialize.write.XMLWriterSettings) SchematronResourceSCH(com.helger.schematron.xslt.SchematronResourceSCH) PSWriter(com.helger.schematron.pure.exchange.PSWriter) PSWriterSettings(com.helger.schematron.pure.exchange.PSWriterSettings) ReadableResourceString(com.helger.commons.io.resource.inmemory.ReadableResourceString) SVRLMarshaller(com.helger.schematron.svrl.SVRLMarshaller) PSReader(com.helger.schematron.pure.exchange.PSReader) FileSystemResource(com.helger.commons.io.resource.FileSystemResource) ReadableResourceString(com.helger.commons.io.resource.inmemory.ReadableResourceString) PSPreprocessor(com.helger.schematron.pure.preprocess.PSPreprocessor) PSSchema(com.helger.schematron.pure.model.PSSchema)

Example 5 with PSReader

use of com.helger.schematron.pure.exchange.PSReader in project ph-schematron by phax.

the class SchematronPreprocess method execute.

@Override
public void execute() throws BuildException {
    boolean bCanRun = false;
    if (m_aSrcFile == null)
        _error("No source Schematron file specified!");
    else if (m_aSrcFile.exists() && !m_aSrcFile.isFile())
        _error("The specified source Schematron file " + m_aSrcFile + " is not a file!");
    else if (m_aDstFile == null)
        _error("No destination Schematron file specified!");
    else if (m_aDstFile.exists() && !m_aDstFile.isFile())
        _error("The specified destination Schematron file " + m_aDstFile + " is not a file!");
    else
        bCanRun = true;
    if (bCanRun)
        try {
            // Read source
            final PSSchema aSchema = new PSReader(new FileSystemResource(m_aSrcFile)).readSchema();
            // Setup preprocessor
            final PSPreprocessor aPreprocessor = new PSPreprocessor(PSXPathQueryBinding.getInstance());
            aPreprocessor.setKeepTitles(m_bKeepTitles);
            aPreprocessor.setKeepDiagnostics(m_bKeepDiagnostics);
            aPreprocessor.setKeepReports(m_bKeepReports);
            aPreprocessor.setKeepEmptyPatterns(m_bKeepEmptyPatterns);
            aPreprocessor.setKeepEmptySchema(true);
            // Main pre-processing
            final PSSchema aPreprocessedSchema = aPreprocessor.getAsPreprocessedSchema(aSchema);
            // Write the result file
            new PSWriter(new PSWriterSettings().setXMLWriterSettings(new XMLWriterSettings())).writeToFile(aPreprocessedSchema, m_aDstFile);
            log("Successfully pre-processed Schematron " + m_aSrcFile + " to " + m_aDstFile);
        } catch (final SchematronReadException | SchematronPreprocessException ex) {
            _error("Error processing Schemtron " + m_aSrcFile.getAbsolutePath(), ex);
        }
}
Also used : XMLWriterSettings(com.helger.xml.serialize.write.XMLWriterSettings) PSWriter(com.helger.schematron.pure.exchange.PSWriter) PSWriterSettings(com.helger.schematron.pure.exchange.PSWriterSettings) PSReader(com.helger.schematron.pure.exchange.PSReader) FileSystemResource(com.helger.commons.io.resource.FileSystemResource) PSPreprocessor(com.helger.schematron.pure.preprocess.PSPreprocessor) PSSchema(com.helger.schematron.pure.model.PSSchema)

Aggregations

PSReader (com.helger.schematron.pure.exchange.PSReader)9 PSSchema (com.helger.schematron.pure.model.PSSchema)9 IReadableResource (com.helger.commons.io.resource.IReadableResource)5 Test (org.junit.Test)5 FileSystemResource (com.helger.commons.io.resource.FileSystemResource)4 IPSBoundSchema (com.helger.schematron.pure.bound.IPSBoundSchema)3 CollectingPSErrorHandler (com.helger.schematron.pure.errorhandler.CollectingPSErrorHandler)3 PSPreprocessor (com.helger.schematron.pure.preprocess.PSPreprocessor)3 IMicroDocument (com.helger.xml.microdom.IMicroDocument)3 ClassPathResource (com.helger.commons.io.resource.ClassPathResource)2 DoNothingPSErrorHandler (com.helger.schematron.pure.errorhandler.DoNothingPSErrorHandler)2 IPSErrorHandler (com.helger.schematron.pure.errorhandler.IPSErrorHandler)2 PSWriter (com.helger.schematron.pure.exchange.PSWriter)2 PSWriterSettings (com.helger.schematron.pure.exchange.PSWriterSettings)2 SVRLMarshaller (com.helger.schematron.svrl.SVRLMarshaller)2 XMLWriterSettings (com.helger.xml.serialize.write.XMLWriterSettings)2 SchematronOutputType (org.oclc.purl.dsdl.svrl.SchematronOutputType)2 ReadableResourceString (com.helger.commons.io.resource.inmemory.ReadableResourceString)1 SchematronException (com.helger.schematron.SchematronException)1 IPSQueryBinding (com.helger.schematron.pure.binding.IPSQueryBinding)1