Content deleted Content added
m Remove links to disambiguation page Transformation |
m Cleaned up using AutoEd |
||
Line 9:
Data element to data element mapping is frequently complicated by complex transformations that require [[one-to-many]] and many-to-one transformation rules.
The code generation step takes the data element mapping specification and creates an [[executable program]] that can be run on a computer system.
When the mapping is indirect via a mediating [[data model]], the process is also called '''data mediation'''.
==Transformational languages==
There are numerous languages available for performing data transformation.
* [[XSLT]] - the XML transformation language
* [[TXL (programming language)|TXL]] - prototyping language-based descriptions using source transformation
Although transformational languages are typically best suited for transformation, something as simple as regular expressions can be used to achieve useful transformation.
<pre>
Line 37:
In other words, all instances of a function invocation of foo with three arguments, followed by a function invocation with two invocations would be replaced with a single function invocation using some or all of the original set of arguments.
Another advantage to using regular expressions is that they will not fail the null transform test.
==Difficult problems==
There are many challenges in data transformation.
▲There are many challenges in data transformation. Probably the most difficult problem to address in C++ is "unstructured preprocessor directives". These are preprocessor directives which do not contain blocks of code with simple grammatical descriptions - example:
<pre>
void MyFunc ()
{
# ifdef FOO
# endif
}
</pre>
A really general solution to handling this is very hard because such preprocessor directives can essentially edit the underlying language in arbitrary ways.
However, because such directives are not, in practice, used in completely arbitrary ways, one can build practical tools for handling preprocessed languages. The
==See also==
Line 72 ⟶ 71:
* [[Refinement]] (contrast)
* [[Identity transform]]
* [[
==External links==
|