@xml-tools/validation
Version:
XML validation APIs
38 lines (31 loc) • 829 B
JavaScript
const { accept } = require("@xml-tools/ast");
const { defaultsDeep, flatMap } = require("lodash");
function validate(options) {
const actualOptions = defaultsDeep(options, {
validators: {
attribute: [],
element: [],
},
});
let issues = [];
const validateVisitor = {
visitXMLElement: function (node) {
const newIssues = flatMap(actualOptions.validators.element, (validator) =>
validator(node)
);
issues = issues.concat(newIssues);
},
visitXMLAttribute: function (node) {
const newIssues = flatMap(
actualOptions.validators.attribute,
(validator) => validator(node)
);
issues = issues.concat(newIssues);
},
};
accept(actualOptions.doc, validateVisitor);
return issues;
}
module.exports = {
validate: validate,
};