Bidirectional Two-level Transformation of XML Schemas


This cabal package can be installed with:

$ cabal install multifocal

For a manual install, execute:

$ runhaskell Setup.lhs configure $ runhaskell Setup.lhs build $ runhaskell Setup.lhs install

For an example, try running the following steps:

  1. generate a target XML Schema file and an optimized lens executable from the source XML Schema file imdb.xsd according to the transformation imdb.2lt.

$ multifocal -i examples/imdb.xsd -t examples/imdb.2lt -o examples/imdb2.xsd -c examples/Imdb.hs -e

  1. compile the resulting file

$ ghc --make examples/Imdb.hs -o imdb

  1. Migrate a source XML document into a target XML document

$ ./imdb -s examples/imdb.xml -f -o examples/imdb2.xml

  1. Translate an updated target XML document back to the source

./imdb -s examples/imdb.xml -t examples/imdb2mod.xml -b -o examples/imdbmod.xml