Search in sources :

Example 1 with PSDiagnostics

use of com.helger.schematron.pure.model.PSDiagnostics 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<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);
                    aDR.setText(_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(org.oclc.purl.dsdl.svrl.DiagnosticReference) PSDiagnostics(com.helger.schematron.pure.model.PSDiagnostics)

Example 2 with PSDiagnostics

use of com.helger.schematron.pure.model.PSDiagnostics in project ph-schematron by phax.

the class PSPreprocessor method _getPreprocessedDiagnostics.

@Nonnull
private static PSDiagnostics _getPreprocessedDiagnostics(@Nonnull final PSDiagnostics aDiagnostics) throws SchematronPreprocessException {
    final PSDiagnostics ret = new PSDiagnostics();
    if (aDiagnostics.hasAnyInclude())
        throw new SchematronPreprocessException("Cannot preprocess <diagnostics> with an <include>");
    for (final PSDiagnostic aDiagnostic : aDiagnostics.getAllDiagnostics()) ret.addDiagnostic(aDiagnostic.getClone());
    ret.addForeignElements(aDiagnostics.getAllForeignElements());
    ret.addForeignAttributes(aDiagnostics.getAllForeignAttributes());
    return ret;
}
Also used : PSDiagnostic(com.helger.schematron.pure.model.PSDiagnostic) PSDiagnostics(com.helger.schematron.pure.model.PSDiagnostics) Nonnull(javax.annotation.Nonnull)

Aggregations

PSDiagnostics (com.helger.schematron.pure.model.PSDiagnostics)2 PSXPathBoundDiagnostic (com.helger.schematron.pure.bound.xpath.PSXPathBoundDiagnostic)1 PSDiagnostic (com.helger.schematron.pure.model.PSDiagnostic)1 Nonnull (javax.annotation.Nonnull)1 DiagnosticReference (org.oclc.purl.dsdl.svrl.DiagnosticReference)1