Search in sources :

Example 1 with DiagnosticReference

use of com.helger.schematron.svrl.jaxb.DiagnosticReference in project ph-schematron by phax.

the class Issue016Test method testIssue16.

@Test
public void testIssue16() throws Exception {
    final File schematronFile = new ClassPathResource("issues/github16/sample_schematron.sch").getAsFile();
    final File xmlFile = new ClassPathResource("issues/github16/test.xml").getAsFile();
    final SchematronOutputType outputType = SchematronUtil.validateXMLViaXSLTSchematronFull(schematronFile, xmlFile);
    assertNotNull(outputType);
    final List<SVRLSuccessfulReport> succeededList = SVRLHelper.getAllSuccessfulReports(outputType);
    for (final SVRLSuccessfulReport succeededReport : succeededList) {
        LOGGER.info("Report Test: " + succeededReport.getTest());
    }
    int i = 1;
    final List<SVRLFailedAssert> aFailedList = SVRLHelper.getAllFailedAssertions(outputType);
    for (final SVRLFailedAssert failedAssert : aFailedList) {
        LOGGER.info(i++ + ". Location:" + failedAssert.getLocation());
        LOGGER.info("Test: " + failedAssert.getTest());
        LOGGER.info("Text: " + failedAssert.getText());
        final List<DiagnosticReference> diagnisticReferences = failedAssert.getDiagnisticReferences();
        for (final DiagnosticReference diagnisticRef : diagnisticReferences) {
            LOGGER.info("Diag ref: " + diagnisticRef.getDiagnostic());
            LOGGER.info("Diag text: " + diagnisticRef.getContentAtIndex(0));
        }
    }
    if (aFailedList.isEmpty()) {
        LOGGER.info("PASS");
    } else {
        LOGGER.info("FAIL");
    }
}
Also used : SchematronOutputType(com.helger.schematron.svrl.jaxb.SchematronOutputType) SVRLFailedAssert(com.helger.schematron.svrl.SVRLFailedAssert) DiagnosticReference(com.helger.schematron.svrl.jaxb.DiagnosticReference) SVRLSuccessfulReport(com.helger.schematron.svrl.SVRLSuccessfulReport) File(java.io.File) ClassPathResource(com.helger.commons.io.resource.ClassPathResource) Test(org.junit.Test)

Example 2 with DiagnosticReference

use of com.helger.schematron.svrl.jaxb.DiagnosticReference in project ph-schematron by phax.

the class PSXPathValidationHandlerSVRL method _handleDiagnosticReferences.

/**
 * Handle the diagnostic references of a single assert/report element
 *
 * @param aSrcDiagnostics
 *        The list of diagnostic reference IDs in the source assert/report
 *        element. May be <code>null</code> if no diagnostic references are
 *        present
 * @param aDstList
 *        The diagnostic reference list of the SchematronOutput to be filled.
 *        May not be <code>null</code>.
 * @param aBoundAssertReport
 *        The bound assert report element. Never <code>null</code>.
 * @param aRuleMatchingNode
 *        The XML node of the XML document currently validated. Never
 *        <code>null</code>.
 * @throws SchematronValidationException
 */
private void _handleDiagnosticReferences(@Nullable final List<String> aSrcDiagnostics, @Nonnull final List<? super DiagnosticReference> aDstList, @Nonnull final PSXPathBoundAssertReport aBoundAssertReport, @Nonnull final Node aRuleMatchingNode) throws SchematronValidationException {
    if (CollectionHelper.isNotEmpty(aSrcDiagnostics)) {
        if (m_aSchema.hasDiagnostics()) {
            final PSDiagnostics aDiagnostics = m_aSchema.getDiagnostics();
            for (final String sDiagnosticID : aSrcDiagnostics) {
                final PSXPathBoundDiagnostic aDiagnostic = aBoundAssertReport.getBoundDiagnosticOfID(sDiagnosticID);
                if (aDiagnostic == null)
                    _warn(aDiagnostics, "Failed to resolve diagnostics with ID '" + sDiagnosticID + "'");
                else {
                    // Create the SVRL diagnostic-reference element
                    final DiagnosticReference aDR = new DiagnosticReference();
                    aDR.setDiagnostic(sDiagnosticID);
                    final PSRichGroup aRich = aDiagnostic.getDiagnostic().getRich();
                    if (aRich != null) {
                        aDR.setLang(aRich.getXmlLang());
                        if (aRich.hasXmlSpace())
                            aDR.setSpace(aRich.getXmlSpace().getID());
                        aDR.setIcon(aRich.getIcon());
                        aDR.setSee(aRich.getSee());
                        aDR.setFpi(aRich.getFPI());
                    }
                    aDR.getContent().add(_getErrorText(aDiagnostic.getAllBoundContentElements(), aRuleMatchingNode));
                    aDstList.add(aDR);
                }
            }
        } else
            _warn(m_aSchema, "Failed to resolve diagnostic because schema has no diagnostics");
    }
}
Also used : PSXPathBoundDiagnostic(com.helger.schematron.pure.bound.xpath.PSXPathBoundDiagnostic) DiagnosticReference(com.helger.schematron.svrl.jaxb.DiagnosticReference) PSDiagnostics(com.helger.schematron.pure.model.PSDiagnostics) PSRichGroup(com.helger.schematron.pure.model.PSRichGroup)

Aggregations

DiagnosticReference (com.helger.schematron.svrl.jaxb.DiagnosticReference)2 ClassPathResource (com.helger.commons.io.resource.ClassPathResource)1 PSXPathBoundDiagnostic (com.helger.schematron.pure.bound.xpath.PSXPathBoundDiagnostic)1 PSDiagnostics (com.helger.schematron.pure.model.PSDiagnostics)1 PSRichGroup (com.helger.schematron.pure.model.PSRichGroup)1 SVRLFailedAssert (com.helger.schematron.svrl.SVRLFailedAssert)1 SVRLSuccessfulReport (com.helger.schematron.svrl.SVRLSuccessfulReport)1 SchematronOutputType (com.helger.schematron.svrl.jaxb.SchematronOutputType)1 File (java.io.File)1 Test (org.junit.Test)1