use of com.thaiopensource.relaxng.impl.CombineValidator in project validator by validator.
the class VerifierServletTransaction method validatorByUrls.
/**
* @param validator
* @return
* @throws SAXException
* @throws IOException
* @throws IncorrectSchemaException
*/
private Validator validatorByUrls(String schemaList) throws SAXException, IOException, IncorrectSchemaException {
System.setProperty("nu.validator.schema.rdfa-full", "0");
schemaListForStats = schemaList;
Validator v = null;
String[] schemas = SPACE.split(schemaList);
for (int i = schemas.length - 1; i > -1; i--) {
String url = schemas[i];
if ("http://s.validator.nu/html5-all.rnc".equals(url)) {
System.setProperty("nu.validator.schema.rdfa-full", "1");
}
if ("http://c.validator.nu/all/".equals(url) || "http://hsivonen.iki.fi/checkers/all/".equals(url)) {
for (String checker : ALL_CHECKERS) {
v = combineValidatorByUrl(v, checker);
}
} else if ("http://c.validator.nu/all-html4/".equals(url) || "http://hsivonen.iki.fi/checkers/all-html4/".equals(url)) {
for (String checker : ALL_CHECKERS_HTML4) {
v = combineValidatorByUrl(v, checker);
}
} else {
v = combineValidatorByUrl(v, url);
}
}
if (imageCollector != null && v != null) {
v = new CombineValidator(imageCollector, v);
}
return v;
}
use of com.thaiopensource.relaxng.impl.CombineValidator in project validator by validator.
the class ValidationWorker method setupValidator.
private Validator setupValidator(Set<Schema> schemas) {
PropertyMapBuilder builder = new PropertyMapBuilder();
builder.put(ValidateProperty.ERROR_HANDLER, new ErrorHandler() {
public void error(SAXParseException exception) throws SAXException {
validationErrors.add(replaceSpecificValues(exception.getMessage()));
}
public void fatalError(SAXParseException exception) throws SAXException {
// should not happen
validationErrors.add(replaceSpecificValues(exception.getMessage()));
}
public void warning(SAXParseException exception) throws SAXException {
}
});
PropertyMap map = builder.toPropertyMap();
Validator rv = null;
for (Schema schema : schemas) {
Validator v = schema.createValidator(map);
if (rv == null) {
rv = v;
} else {
rv = new CombineValidator(rv, v);
}
}
return rv;
}
use of com.thaiopensource.relaxng.impl.CombineValidator in project validator by validator.
the class SimpleDocumentValidator method setUpValidatorAndParsers.
/* *
* Prepares a Validator instance along with HTML and XML parsers, and then
* attaches the Validator instance and supplied ErrorHandler instance to the
* parsers so that the ErrorHandler is used for processing of all document-
* validation problems reported.
*
* @param docValidationErrHandler error handler for doc-validation reporting
*
* @param loadExternalEnts whether XML parser should load remote DTDs, etc.
*
* @param noStream whether HTML parser should buffer instead of streaming
*/
public void setUpValidatorAndParsers(ErrorHandler docValidationErrHandler, boolean noStream, boolean loadExternalEnts) throws SAXException {
PropertyMapBuilder pmb = new PropertyMapBuilder();
pmb.put(ValidateProperty.ERROR_HANDLER, docValidationErrHandler);
pmb.put(ValidateProperty.XML_READER_CREATOR, new Jaxp11XMLReaderCreator());
RngProperty.CHECK_ID_IDREF.add(pmb);
PropertyMap jingPropertyMap = pmb.toPropertyMap();
validator = this.mainSchema.createValidator(jingPropertyMap);
if (this.hasHtml5Schema) {
Validator assertionValidator = assertionSchema.createValidator(jingPropertyMap);
validator = new CombineValidator(validator, assertionValidator);
validator = new CombineValidator(validator, new CheckerValidator(new TableChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new ConformingButObsoleteWarner(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new MicrodataChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new NormalizationChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new TextContentChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new UncheckedSubtreeWarner(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new UnsupportedFeatureChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new UsemapChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new XmlPiChecker(), jingPropertyMap));
}
HtmlParser htmlParser = new HtmlParser();
htmlParser.addCharacterHandler(sourceCode);
htmlParser.setCommentPolicy(XmlViolationPolicy.ALLOW);
htmlParser.setContentNonXmlCharPolicy(XmlViolationPolicy.ALLOW);
htmlParser.setContentSpacePolicy(XmlViolationPolicy.ALTER_INFOSET);
htmlParser.setNamePolicy(XmlViolationPolicy.ALLOW);
htmlParser.setXmlnsPolicy(XmlViolationPolicy.ALTER_INFOSET);
htmlParser.setMappingLangToXmlLang(true);
htmlParser.setHeuristics(Heuristics.ALL);
htmlParser.setContentHandler(validator.getContentHandler());
htmlParser.setErrorHandler(docValidationErrHandler);
htmlParser.setNamePolicy(XmlViolationPolicy.ALLOW);
htmlParser.setMappingLangToXmlLang(true);
htmlParser.setFeature("http://xml.org/sax/features/unicode-normalization-checking", true);
if (!noStream) {
htmlParser.setStreamabilityViolationPolicy(XmlViolationPolicy.FATAL);
}
htmlReader = getWiretap(htmlParser);
xmlParser = new SAXDriver();
xmlParser.setContentHandler(validator.getContentHandler());
if (lexicalHandler != null) {
xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler", lexicalHandler);
}
xmlReader = new IdFilter(xmlParser);
xmlReader.setFeature("http://xml.org/sax/features/string-interning", true);
xmlReader.setContentHandler(validator.getContentHandler());
xmlReader.setFeature("http://xml.org/sax/features/unicode-normalization-checking", true);
if (loadExternalEnts) {
xmlReader.setEntityResolver(entityResolver);
} else {
xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", false);
xmlReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
xmlReader.setEntityResolver(new NullEntityResolver());
}
xmlReader = getWiretap(xmlParser);
xmlParser.setErrorHandler(docValidationErrHandler);
xmlParser.lockErrorHandler();
}
Aggregations