Eén werkbank voor schema's en wat erbij hoort.
JSON Schema, XML Schema (XSD), recordbestanden en OpenAPI: lezen, tekenen, bewerken, toetsen, omzetten, bevragen en transformeren. De motoren zijn in Rust geschreven en naar WebAssembly vertaald, en ze draaien in de pagina, dus het werk gebeurt op je eigen machine.
Geen account, geen aanmelding. Wat je opent blijft in je tabblad.
Wat het doet
-
Twee weergaven van één schema
Een teksteditor met markeringen, aanvulling en doorklikbare verwijzingen, en ernaast een diagram dat je echt bewerkt: knopen toevoegen, hernoemen, verplaatsen en verwijderen, knippen en plakken, los of per blok. Wat op het klembord komt is de schematekst, dus een stuk past in elke andere editor. De twee lopen bij op een expliciete wisseling, niet op elke toetsaanslag, en de tekst zit nooit op slot.
-
Formaten en versies, elk op zijn eigen regels
JSON Schema draft-04, draft-06, draft-07, 2019-09 en 2020-12, geschreven in JSON of in YAML. XSD 1.0 en 1.1, met assertions en voorwaardelijke typetoekenning. OpenAPI 3.0, 3.1 en 3.2. Recordbestanden met vaste kolommen of met scheidingstekens. Een versie wordt nooit gegokt: is ze niet vast te stellen, dan zegt Schemantix dat en wacht het op jou.
-
Het leest zoals het werk leest
Elke knoop opent met één zin in gewone taal, afgeleid uit het schema zelf: "een lijst van 1 of meer regels; elke regel heeft een verplicht bedrag (een getal, 2 decimalen) en een optionele omschrijving (tekst, hoogstens 35 tekens)". De woorden van de standaard staan eronder, en bij elke optie staat een (?) die in één zin zegt wat ze doet en hoe elke standaard haar noemt.
-
Documenten toetsen naast hun schema
JSON-, XML- en YAML-documenten openen in hun eigen tabblad, gekoppeld aan het schema dat ze noemen of dat jij kiest, en worden getoetst terwijl je typt. Elke bevinding krijgt haar plek in het document (een JSON-pointer, of /order/item[2]/@qty) en leidt terug naar de schemaknoop waar ze vandaan komt. Je kunt ook halverwege beginnen, zodat een fragment getoetst wordt als het element dat het is.
-
Recordbestanden en COBOL-copybooks
Leg de veldgrenzen op een meetlat over een voorbeeldregel, of importeer een copybook: gepakte, zoned en binaire getallen, drijvende komma in IBM's notatie, herhalende groepen, varianten uit een REDEFINES en de EBCDIC-codepagina's. Een recordschema gaat ook weer terug als copybook.
-
Voorbeelddata, en ongeldige data
Maak JSON of XML uit een schema: types, verplichte velden, patronen en grenzen worden gevolgd. En het omgekeerde, voor wie moet testen wat er binnenkomt: documenten die elk op één aanwijsbaar punt tegen het schema ingaan.
-
Tests bij een schema, en hun dekking
Leg in een testbestand vast welke documenten dit schema hoort te accepteren en welke niet, draai ze en zie de uitkomst per geval. Schemantix stelt een set voor uit het schema zelf, en zegt na een run welk deel van het schema de tests hebben aangeraakt.
-
Een schema uit data die je al hebt
Wijs een of meer JSON- of XML-bestanden aan en krijg er een schema bij voorgesteld, met erbij gezegd wat het uit die voorbeelden wel en niet kan afleiden: één voorbeeld bewijst niet dat een eigenschap verplicht is.
-
Transformaties, met een debugger
Stylesheets zijn gewone documenten in de werkruimte. Schrijf XSLT 1.0, 2.0 of 3.0, controleer het, draai het, en loop er stap voor stap doorheen: welke template greep, welke knoop was aan de beurt, wat stond er op dat moment in een variabele.
-
Pijplijnen die je tekent
Een transformatie van meer dan één stap opent in een eigen editor: de brontree links, de blokken op een canvas, de doeltree rechts. Een draad in beide richtingen schrijft dezelfde afbeelding, een draad die niet door de controle komt wordt bij de draad geweigerd, en de XSLT en het streaming-oordeel volgen vanzelf.
-
Query's over wat open staat
XPath voor XML, JSONPath (RFC 9535) voor JSON, over elk document dat je toont, de schema's inbegrepen. Je kiest de XPath-versie die je wilt schrijven; het antwoord komt van de 3.1-motor.
-
Omzetten, en documenteren
Een XSD naar JSON Schema en terug, tussen drafts, tussen JSON en YAML. Data tussen XML, JSON, YAML, CSV en recordbestanden, een copybook-bestand naar een tabel of andersom. En een documentatiepagina uit een schema, waarin elke ingang opent met diezelfde zin in gewone taal.
-
Werkruimte
Open bestanden, een hele map of een zip-archief, met slepen of met de kiezer. Het venster splitst in tweeën, elk met zijn eigen strook tabbladen. Werk in uitvoering wordt bewaard in de opslag van je browser, zodat een gesloten tabblad niets kost.
-
Dezelfde motoren zonder pagina
Wat hier in de browser gebeurt doet schemantix ook op de opdrachtregel, voor een build die het antwoord wil zonder dat er iemand kijkt: toetsen, omzetten, bevragen, transformeren, documenteren. Het haalt even weinig over het netwerk als de pagina, namelijk niets.
Gemeten, niet beweerd
"Het ondersteunt XSLT 3.0" is een bewering. Een uitkomst tegen de testsuite van de werkgroep zelf is een meting. Welke suite dat is, van welke datum, en wat er buiten de noemer valt, staat per standaard in de documentatie van het project.
| Standaard | Suite | Uitkomst |
|---|---|---|
| JSON Schema | JSON-Schema-Test-Suite | 8.873 van 8.873 |
| XPath 3.1 | W3C QT3 | 22.218 van 22.218 gedraaid |
| XSLT 1.0 / 2.0 / 3.0 | W3C xslt30-test | 10.880 van 10.891 |
| XML Schema 1.0 / 1.1 | W3C xsdtests | 41.726 gevallen, 99,9% |
| JSONPath (RFC 9535) | JSONPath compliance test suite | 706 van 706 |
| XML 1.0 / 1.1, welgevormdheid | W3C XML conformance suite | 2.060 van 2.060 |
| YAML 1.2 | YAML test suite | 402 van 402 |
| OpenAPI 3.0 / 3.1 / 3.2 | De documenten waarmee de OAI zijn schema's test | 17 / 17, 45 / 45, 64 / 66 |
Niets wordt geüpload
Er is geen server om naartoe te uploaden. Schemantix is een statische pagina: het lezen, toetsen, tekenen, omzetten en transformeren gebeurt allemaal in je browser. De motor haalt ook uit zichzelf niets op: een schema dat naar een document op het web verwijst wordt als ontbrekend gemeld, en dat document wordt pas geladen als jij erom vraagt. Alles wat je opent wordt als vijandige invoer behandeld, tot en met patronen die geschreven zijn om een matcher te laten ontsporen.
Twee talen
De hele interface, de gebruikersgids en elke melding zijn er in het Nederlands en het Engels. De taal die je hier kiest is de taal waarin de applicatie opent.