Shape / columns · All operations
Restructure a document with a transform language
A variant of Parse nested values
Rewrite a JSON or XML document with a stylesheet, patch or transform program such as XSLT, a JSON patch or jq.
Status
- In arcform
Not built yet
arcform does not do this yet. Its place on the roadmap
What other tools call it
Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).
Apache Hop (2)
XSL pipelineread 2026-09-27Transform XML files with an XSL stylesheet into XML, HTML or text
XSL transformationread 2026-09-27Apply an XSL stylesheet to XML held in a field or file
Apache NiFi (4)
JSLTTransformJSONread 2026-09-27Transform JSON content with a JSLT transformation
JoltTransformJSONread 2026-09-27Restructure JSON content with a Jolt transform specification
JoltTransformRecordread 2026-09-27Apply a Jolt specification to each record of a FlowFile
TransformXmlread 2026-09-27Apply an XSLT stylesheet to XML content
Duckle (1)
jq Filterread 2026-09-25transform a JSON column with a jq program
EasyMorph (2)
Modify JSONread 2026-09-27Delete, replace or rename a JSON property, or reformat the JSON (paid editions only)
XSLT transformationread 2026-09-27Apply XSLT stylesheets to an XML file on disk; the in-memory table is untouched
KNIME Analytics Platform (3)
JSON Diffread 2026-09-27Compute a JSON patch describing the difference between two JSON columns
JSON Transformerread 2026-09-27Apply a JSON patch or merge patch to a JSON column
XSLTread 2026-09-27Apply XSLT stylesheets to the cells of an XML column
Pentaho Data Integration (1)
XSL Transformationread 2026-09-27Transform an XML stream with an XSL stylesheet
RapidMiner Studio (1)
Process XSLTread 2026-09-27Transform an XML document with an XSLT stylesheet
Talend (3)
tDSQL4JSONread 2026-09-27Transform JSON input into JSON output with a DSQL query
tXMLMapread 2026-09-27Map and route XML documents between inputs and outputs, optionally joined with flat data
tXSLTread 2026-09-27Transform an XML file into an output file with an XSL stylesheet
Background
A transformation language is a computer language designed to transform input text in a formal language into modified output text that meets a specific goal.[1] XSL Transformations (XSLT) 3.0 is a language designed primarily for transforming Extensible Markup Language (XML) documents into other XML documents.[2] JavaScript Object Notation (JSON) Patch expresses a sequence of operations to apply to a JSON document.[3]
When to use it
A JSON merge patch describes changes with a document that closely mimics the one being modified: members missing from the target are added, members present are replaced, and null removes a member.[4] A JSON merge patch cannot patch part of a target that is not an object, such as replacing just some of the values in an array.[4] Merge patch documents suit JSON documents that primarily use objects for their structure and do not make use of explicit null values.[4] Reach for a merge patch to set or remove fields, and for JSON Patch when an array element must change or the document holds nulls that matter. (Meridian's view)
JSON Patch applies its operations sequentially, each to the result of the one before, and if any operation fails the patch as a whole is not deemed successful.[3] A JSON Patch operation must be one of add, remove, replace, move, copy or test.[3] DuckDB's json_deep_merge works like json_merge_patch, except that a JSON null in the patch keeps the original value instead of deleting the key.[5] Check whether a pipeline calls a merge patch or a deep merge before trusting the nulls in a patch. (Meridian's view)
The method
An XSLT transformation is achieved by template rules, each associating a pattern, which typically matches nodes in the source document, with a sequence constructor.[2] XSLT can also process multiple source documents, generate multiple result documents and handle formats other than XML.[2] XSLT came out of the World Wide Web Consortium (W3C)'s eXtensible Stylesheet Language (XSL) effort of 1998–1999, and XSLT 1.0 was published as a W3C recommendation in November 1999.[6] The primary purpose of the changes in XSLT 3.0 is to allow transformations in streaming mode, where neither the source nor the result document is ever held in memory in its entirety.[2]
A jq program is a filter: it takes an input and produces an output, and filters can be combined by piping the output of one into another.[7] In jq, .foo? works like .foo but does not output an error when its input is not an object.[7]
JSON Patch was published as Request for Comments (RFC) 6902 in April 2013, and is suitable for use with the Hypertext Transfer Protocol (HTTP) PATCH method.[3] JSON Merge Patch is RFC 7396, published in October 2014, which obsoletes RFC 7386.[4]
Sources
- [1]Transformation language - Wikipediasecondary source
- [2]XSL Transformations (XSLT) Version 3.0standard
- [3]RFC 6902: JavaScript Object Notation (JSON) Patchstandard
- [4]RFC 7396: JSON Merge Patchstandard
- [5]JSON Processing Functions – DuckDBdocumentation
- [6]XSLT - Wikipediasecondary source
- [7]jq 1.8 Manualdocumentation