Thanks to the efforts of the ODX standardization its possible to describe the command sets of an electric control module in a formal syntax.
But to use these information in OOBD or other tools, it's nessesary to transform these ODX syntax into a format which is understood by the tools.
This is what OpenDiagX do. Honestly OpenDiagX is nothing more as a simple XSLT transformer, but as the ODX input format and output format needed for OOBD (and SKDS) are so different, the author decided to wrap some software around the translation process - which means that an XSLT specialist could maybe do the whole translation only in xslt - but the author can't..
The software is available in two variants: OpenDiagXGUI and OpenDiagXCL. The GUI version is mainly for testing purposes, while the CL (Command Line) is made to use in batch or make files. Both programs do basically the same, so we have a very short look into the command line syntax
opendiagxcl input-xslt-file output-xslt-file inputfile outputfile
and look deeper into the GUI variant, as this explains it all:
When the program is started, it first scans its two subfolders “input” and “output” for contained *.xslt files. The found files are then shown in the two selection boxes “Input-Format” and “Output-Format”.
Then the user chooses the “Input” file by using the file browser button on the right and presses “Start”
Then the following sequence starts:
- The input file is loaded. It must be a valid XML file
- The input is transformed via XSLT using the transformation rules given by the selected “Input-Format”
- After that OpenDiagX goes though the internal file representation and makes it's own format out of it. Also this internal format is an XML tree
- Finally this internal XML is transformed via the “Output-Format” rules and displayed in the text field.
- From there the result can be saved as file.
When using the output format “plain” (included in the OOBD software repository), the output is a 1:1 copy of the internal data representation.
Also the input format “mdx” is also just a 1:1 translation of the input, because the program reads in reality the MDX format (a OEM specific dialect) instead of “real” ODX. But when having a working ODX-MDX XSLT file handy, this can be copied into the “input” folder and than OpenDiagX could read ODX files directly.