validate-with-xmllint
Wrapper for xmllint
. Easy validation of XML. XML Schemas and DTDs supported. Zero dependencies.
Features
- Validate schemaless XML file 👉
function validateXML(input: string | Buffer): Promise<void>
- Validate with DTDs 👉
function validateXMLWithDTD(input: string | Buffer): Promise<void>
- Validate with XML Schemas (XSD) 👉
function validateXMLWithXSD(input: string | Buffer, xsdfile: string | Buffer): Promise<void>
- Written in TypeScript
- Tests with good coverage included
- Zero NPM dependencies
- Availability of
xmllint
is verified during installation time - No network connections used during validations
Usage
Importing functions
const validateXML validateXMLWithDTD validateXMLWithXSD } = ;
Demos of passing validations
All the examples below return promises which will eventually resolve.
;; /** * All referenced DTD's must be available locally as `xmllint` * is invoked with `--nonet` which prevents network connections **/; /** * Path to XSD Schema file must be provided with the document **/;
Demos of failing validations
All the examples below return promises which will eventually reject with the output from xmllint
.
;; ; ;
See more demos within the tests.
FAQ
How to install
xmllint
?
You might already have it. Execute xmllint --version
and see what it prints out.
On Debian distros look up libxml2-utils
, on RedHat libxml2
. A recent version of xmllint
should be bundled by default on MacOS.
This pacakge runs a postinstall script to verify that you have xmllint
available.
How to see the actual errors in my XML?
The promise is rejected with the error output from xmllint
. The error contains all the available details. Expect to see something like this:
Error: xmllint exited with code 3 when executed with xmllint --schema /Users/aautio/foobar/validate-with-xmllint/test/xsds/valid-xsd.xsd --noout --nonet -:
-:2: element root: Schemas validity error : Element 'root': Missing child element(s). Expected is ( body ).
- fails to validate