Free
- the full editor, on your own server
- all built-in schemas and dictionaries
- iframe and WebView2 integration
- community support
For authors who know the content and don't know XML
nodekind reads your schema and offers exactly what is allowed here, and nothing else. Nothing to configure per element. No XML on screen. Switch documents on the right and watch what changes.
In the browser, or inside your own application. One price per organisation, never per seat. DITA, DocBook, JATS, TEI or your own XSD. Apache-2.0 core.
An XSD says what is allowed: which elements, in which order, how often. It does not say what anything is called for the person who works with it. One 123-element schema we use daily carries seven lines of documentation in total.
nodekind keeps two things apart. Behaviour comes from the content model: what fits here, what does not, and why. Words come from a dictionary per vocabulary. Where a word is missing you see the schema name, never something invented.
The roles, what counts as a paragraph, a heading, a number, something you can move, the editor derives from the shape of the schema. That is why the same core edits four standards without a line of code per element, and why a new schema version breaks nothing.
Of the roles, derived from the schema. The rest is named by hand and stays visible on screen. Measure your own XSD in your browser.
Three things to do in the demo
A regulation, a set of parliamentary questions, a package leaflet, a water board rule. The margin, the names and the offer change with it. From the schema, not from code.
Open the demoClick in a paragraph. The margin lists what is allowed at this position, and says what is not, and why. You cannot produce an invalid document by accident.
Open the demoBusiness rules live in Schematron. nodekind runs them in the browser and shows the message with its fix, at the place where it goes wrong.
Open the demoMany schemas give identity to structural elements only. The paragraph, where the text lives, has none. Move it and a comparison of two versions sees a deletion plus an insertion.
nodekind assigns every node an identity when it is created and carries it along, in its own namespace next to the attributes of your standard. The same move then counts as one change instead of four. That saves work in every diff, every review and every publication.
Switch it on and every change carries the author's name and the time: moving, inserting, splitting, typing, renumbering. The way Word tracks it, but in the XML itself and on the paragraph.
<p nk:wId="nk-31" nk:auteur="N. de Vries" nk:tijdstip="2026-09-07T14:02:00Z"> The distance is not … </p>
In nodekind's own namespace, so outside your standard. Your pipeline does not see it; your editorial team does: in the margin, and behind every row of the comparison view. The name comes from your application; nodekind has no user accounts.
Off by default. Not there yet: accept or reject per change. We build that as soon as an editorial team asks for it.
For the person who integrates it
const editor = document.getElementById('editor');
let seq = 0;
function send(kind, extra = {}) {
const request = { nodekind: 1, id: ++seq, soort: kind, ...extra };
editor.contentWindow.postMessage(request, location.origin);
}
window.addEventListener('message', (e) => {
if (e.source !== editor.contentWindow) return;
const { soort, stand, xml } = e.data;
if (soort === 'gereed') {
send('instellen', { instellingen:
{ taal: 'en', auteur: user.name, auteurspoor: true } });
send('schemaversie', { versie: schema.id });
send('laad', { xml: document.xml });
}
if (soort === 'gewijzigd') showSave(stand);
if (soort === 'xml') store(xml);
});
Pricing
Oxygen Web Author: about € 670 / month for 5 concurrent users. Fonto, Xeditor: quote only. XMLmind ends all products on 3 April 2027.
No seats. nodekind has no user accounts; your application says who the author is. The price does not grow with the number of authors.
Rule of thumb. Your own schema or your own application: Embed. A standard schema in our interface: Team.
Team: your account goes off.
Embed: your signed profile pack (dictionary, business rules) expires; 30 days of grace with a notice in the margin. The open core keeps working, with schema names only.
No phone-home, no licence check in the core.
Contact
Attach an XSD and a document. We measure what the editor derives and send you the numbers.