apologies if this question is too vague. I'm involved in developing a system that primarily transforms the data from one format to another.
These are pretty much XML --> XML, XML <--> JSON, JSON --> XML conversions. The transformation logic can range from simple (meaning one to one mapping) to complex (looping, conditionals, value wrangling etc).
Currently, our transformation component supports XSLT and Velocity as transformation templating languages/technologies.
It seems to work well.
The problem we have is this is a manual effort for a developer coding it everytime when they work on a new requirement. This is where the bottleneck is. It takes time.
I wanted to explore if there's a simpler way where the data mapping is defined in an agnostic way by a non technical user (or a semi technical user) via a tool or a DSL.
And then this DSL is autogenerated into XSLT or Velocity templates under the hood.
I wanted a light-weight solution (preferably opensource) for this.
Came across Altova Mapforce studio (a commercial desktop tool) to develop the data mapping and generate code. Unfortunately, it is windows only and commercial.
Preferably if it is a web based tool (that could run on a browser), that would be ideal.
Alternatively, is there a general DSL standard available for data mapping (agnostic) and then have different technologies to generate a specific templates from it?
It's not difficult to define a simple transformation language that can handle a range of common transformations, and it's not difficult to implement this by translating it into XSLT. The problem you will hit is that the simplicity of the language is achieved by restricting what it can do. As it becomes more powerful and is used by more people for a wider range of purposes, you will find yourself reinventing XSLT (or Velocity). The problem is knowing when to stop to hit that 80:20 sweet spot.
As well as MapForce, you might look at Biztalk for inspiration. Personally, I find these graphical tools infuriating; I'm no good at guessing what the icons mean. But that's just me.