@jacksierkstra/checkr
v0.0.18
Published
A pure validation library.
Downloads
31
Readme
Checkr
Checkr is a TypeScript-based XML validation library for validating XML documents against XSD schemas. It is designed to be lightweight, extensible, and dependency-free beyond pure TypeScript/JavaScript.
Features
- Pure TypeScript: No native dependencies, works in Node.js and browsers.
- Extensible Architecture: Supports plugin-like extensibility.
- Comprehensive Validation: Handles global elements, complex types, attributes, constraints, and more.
- XSD 1.0 Support: Covers basic to intermediate features like
xs:sequence,xs:choice, enumerations, and type restrictions.
Installation
npm install @jacksierkstra/checkror
yarn add @jacksierkstra/checkrUsage
import { Checkr } from "@jacksierkstra/checkr";
const xml = `<root><element>Value</element></root>`;
const xsd = `<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="element" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>`;
const validator = new Checkr();
const validation = validator.validate(xml, xsd);
validation.then(result => {
console.log('Valid: ', result.valid);
console.log('Errors: ', result.errors);
});Validation Pipeline
The validation process consists of multiple pipeline stages:
- Parsing: Convert XML and XSD into DOM structures.
- Global Validation: Check elements against global definitions.
- Node-Level Validation:
- Type validation (xs:string, xs:integer, etc.)
- Attribute validation (required vs optional, fixed values)
- Occurrence constraints (minOccurs, maxOccurs)
- Enumerations and pattern constraints
- Choice Validation: Ensure valid
xs:choiceconstraints. - Recursive Validation: Validate nested elements and structure.
Supported XSD Features
- ✅
xs:sequence,xs:choice - ✅
xs:element,xs:complexType - ✅
xs:enumeration,xs:pattern - ✅
xs:minLength,xs:maxLength - ✅ Attribute validation (
xs:attribute) - 🚧 Planned:
xs:allxs:extensionandxs:restrictionxs:key,xs:unique,xs:keyref- Namespaced imports (
xs:import,xs:include)
Running Tests
To run the test suite:
yarn testContributing
Contributions are welcome! Feel free to open issues and pull requests.
License
This project is licensed under the MIT License.
Maintained by @jacksierkstra
