Streaming beats building trees
In numbers
Why MerlinXSL
The platform
From sample to production
- 01DevelopMap visually, write XSLT or let AI propose from your examples. Every save is the next draft version.Result: Versioned mapping, one Git commit
- 02ValidateCompile with Saxon-HE, resolve modules, reject unsafe constructs and record paths that cannot stream.Result: Built version or a clear problem code
- 03TestTest cases compare exact or normalized XML / JSON. Turn any mapping example into a test case with one click.Result: Green suite per version
- 04PinA pipeline save pins the exact component versions it runs. A newer mapping changes nothing until you pin it.Result: Immutable pipeline version
- 05Deploy & promoteAll tests must pass before the first environment. Then promote through the chain, hot-swapped without restarts.Result: Live in DEV, TEST, PROD
One POST. The document streams back.
The runtime is stateless and has its own security chain: an API key per environment, no session, no cookie. Send XML, JSON, gzip, a file upload or an MTOM package; the result is written straight to the response while the input is still being read.
- 01REST endpoint per pipeline, or a specific installed version with /v/{n}
- 02SOAP 1.1 / 1.2 endpoint with MTOM / XOP in and out, faults with stable codes
- 03Captured fields as JSON with Accept: application/json
- 04RFC 9457 problem JSON for every failure — never half a document presented as success
Every pipeline, documented and callable
Captured from MerlinXSL with demo data: the runtime API of project Orders in the same explorer as the portal API — an endpoint per pipeline, version and SOAP binding, ready-to-paste clients from curl to COBOL, SQL and notebooks, the stable problem codes, and a live call with a PROD key.
How it stays fast
| Benchmark | 1 KB | 1 MB | 100 MB |
|---|---|---|---|
| Transform XML | 37 µs | 16.1 ms | 1.50 s |
| Transform JSON | 40 µs | 25.6 ms | 2.58 s |
| Split transform (512 MiB heap) | 32 µs | 19.9 ms | 1.91 s |
| Capture, streaming, full scan | 18 µs | 7.2 ms | 0.74 s |
| Capture, streaming, early exit | 15 µs | 10 µs | 28 µs |
| Pipeline detect → transform → extract | 135 µs | 26.1 ms | — |
JMH, single laptop (AMD Ryzen AI 9 HX PRO 370, Linux, JVM 25, generational ZGC). Indicative; your hardware and stylesheets decide the real numbers.
A real pipeline, 792 KB in
Per run
Over 1 MB
Benchmarks of the engine on generated order documents (see the table above for the machine). Up to 64 MiB per runtime request by default, configurable.
A transformation engine that cannot reach out.
Stylesheets are code. MerlinXSL treats them that way: the only URIs a stylesheet can resolve are the resources of its own project. No file:, no http:, no external result-document — the wall against SSRF and XXE is built into the processor.
- 01DTDs off, limits on depth, size, names, MTOM parts and wall-clock time
- 02API keys stored as SHA-256, compared in constant time, scoped to one environment
- 03Tenant → organization → user scoping checked on every access
- 04AI output is untrusted code: same validation as an upload
Where it fits
Sectors
- Banking & paymentsISO 20022 payment initiations and statements (pain, camt), SEPA files, statement data extracted for reconciliation.
- InsurancePolicy, claim and broker messages in many versions, routed by detection to the mapping that fits each version.
- E-invoicing & procurementOrders and ERP exports to UBL and Peppol BIS invoices, credit notes and order responses, with totals captured in the same run.
- Logistics & transportShipment, booking and status messages between carriers, forwarders and warehouses; customs declarations in XML.
- HealthcareHL7 FHIR resources in XML and JSON, lab and referral documents mapped between hospital and partner systems, on premise.
- Government & public sectorStatutory XML formats, tax and social-security filings, e-procurement — validated, versioned and kept inside your network.
- Energy & utilitiesMarket messages and meter data between suppliers, grid operators and billing, in high volume and under strict deadlines.
- Retail & e-commerceProduct feeds, orders and stock updates between webshop, marketplaces and ERP — JSON on one side, XML on the other.
- Publishing & mediaArticle and book XML (JATS, DITA, NewsML) transformed for web, print and syndication partners.
Ready to retire your transformation backlog?
Let's talk MerlinXSL.
Tell us about your transformation landscape, or ask for a trial licence. We reply within one business day — in Dutch or English.
2221 Heist-op-den-Berg (Pijpelheide)
Belgium