xml2odf [-o outputfile] [-s] [inputfile]
OpenDocument can be a complete office document in a single XML file. The script will take such a document and create a package. This is mainly useful as a postprocesser of a program producing XML, such as a stylesheet.
“Inputfile” is assumed to be an OpenDocument file in XML form. If there is no inputfile, the program will read from standard input. The flag -s adds correct suffix to the filename according to what mime type is found in the XML file, in cause you don´t know already what document type you are packaging.
If output file is not specified output will be to standard out.
Section 2.1.1 of Open Document Format for Office Applications says that the [content.xml] file contains the document content, along with the automatic styles needed for the document content. The [styles.xml] file contains all the named styles of a document, along with the automatic styles needed for the named styles. The application doesn´t know which automatic style is needed for what, so it puts the same set of automatic styles into both files.
One could assume that the inverse operation would be easier, but OpenOffice.org is quite happy to use the same names for two different automatic styles. For instance, a style used inside <style:footer> can have the same name as one used inside <office:text> but be a different paragraph style. This is reported as bug #90494 (http://www.openoffice.org/issues/show_bug.cgi?id=90494)
xml2odf -o testdocument -s xml-file
Doesn´t handle external data -- images and such.
The library used for the parsing of XML expands empty elements from <element/> to <element></element>. It should not have an effect on the document parsing.