.. _flatxml: Flat XML ******** The Translate Toolkit is able to process flat XML files using the :doc:`flatxml2po ` converter. Flat XML (:wp:`eXtensible Markup Language `) is a simple monolingual file format similar to a very basic form of the :doc:`android` format. Flat in this context means a single level of elements wrapped in the root-element with no other structuring. .. _flatxml#conformance: Conformance =========== * Single-level XML with attributes identifying a resource: .. code-block:: xml Hello World! Translated value. * Customizable element- and attribute-names (including namespaces): .. code-block:: xml Hello World! Translated value. * Value whitespace is assumed to be significant (equivalent to setting ``xml:space="preserve"``): .. code-block:: xml The format assumes xml:space="preserve". There is no need to specify it explicitly. This assumption only applies to the value element; not the root element. * Non-resource elements and attributes are preserved (assuming the same file is also used when converting back to XML): .. code-block:: xml This needs to be translated 42 Some important string * Indentation can be customized to match an existing and consistent style: .. code-block:: xml This file uses 8 spaces for indent Tabs can also be used; but this is limited to the Python API at this point No indent (all in one line) is also supported End-of-file *always* has a LF to satisfy VCS .. note:: To avoid potential issues and extraneous changes in diffs, this format always forces an ending linefeed by default for compatibility with various :wp:`Version control systems ` (such as :wp:`Git`). .. _flatxml#non-conformance: Non-Conformance =============== While the format is flexible, not all features are supported: * Mixed element/attribute names (as well as different namespaces for root- and value-element) and nested structures additional child elements. This format intentionally focuses on a simple structure that can be used by other languages (such as :wp:`XSLT`). * Comments are preserved on roundtrips, but are not carried over into the resulting :doc:`po`. * XML Fragments and non-wellformed XML. .. _flatxml#references: References ========== * `XML specification `_