Difference between revisions of "GnuCash XML format"
m (added assertion to sample code) |
(Move category to top; update links;) |
||
(23 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[Category:XML]] | |
+ | This article collects some notes about the XML file format of GnuCash. It is descriptive, and neither normative nor authoritative. | ||
− | Beginning with version 1.6, the primary GnuCash storage mechanism is an | + | Beginning with version 1.6, the primary GnuCash storage mechanism is an XML file. The file is optionally compressed with gzip, which is a preference that is set at <u>E</u>dit→Preferences→General→Use file compression. |
− | + | [{{URL:git}}gnucash/blob/stable/libgnucash/backend/xml/DTD/gnucash-v2.rnc gnucash-v2.rnc] is a non-normative RELAX NG schema for the XML file format. There are also DTD schema definitions in [{{URL:git}}gnucash/tree/stable/libgnucash/backend/xml/DTD libgnucash/doc/xml], but these are outdated and do not define the current format correctly. | |
+ | |||
+ | Many elements in the XML file are identified by Globally Unique Identifiers (GUID). GnuCash includes its own GUID implementation. | ||
==Character encoding== | ==Character encoding== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | With GnuCash 1.9.0, GnuCash writes the XML document using UTF-8 encoding and includes the appropriate encoding declaration in the opening XML text declaration. | |
− | |||
− | |||
− | + | ==Validation== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | The RELAX NG schema file mentioned above can be used to validate an uncompressed GnuCash XML data file. This requires that you: | |
+ | * save your GnuCash data file in uncompressed format | ||
+ | * use an XML validator--e.g., [{{URL:GH}}relaxng/jing-trang Jing], which will be used in this example. | ||
− | + | As stated above, the GnuCash data file is by default stored using gzip compression. You must first save your data file in an uncompressed state. The easiest way to do this is to change the storage preference and save your file. (Remember to reset the preference afterwards). | |
− | |||
− | + | Then download jing and run the following command | |
− | + | <Syntaxhighlight lang="sh"> | |
− | + | jing -c path-to-gnucash-v2.rnc path-to-your-datafile.gnucash | |
− | + | </Syntaxhighlight> | |
+ | jing will report any validation errors it finds. | ||
− | + | ;Note:The validation should not be considered authoritative, as the schema is not updated or tested very often. So validation errors can just as easily be due to errors in the schema than due to errors in the data file. | |
− | = | + | ''Based on information provided by Baptiste Carvello in [{{URL:Bugs}}show_bug.cgi?id=680887 bug 680887].'' |
− | |||
==External links== | ==External links== | ||
− | * | + | * https://gnucashtoqif.us/ - GnuCash XML → [{{URL:wp}}QIF QIF] conversion tool |
− | + | *: [https://gnucashtoqif.us/#mozTocId164261 Notes about file format] | |
− | * | + | * [{{URL:WA}}20070219085556/http://edseek.com/archives/2005/08/18/gnucash-export-to-gnumeric-and-csv/ GnuCash export to Gnumeric and CSV], using [{{URL:wp}}XSLT XSLT] -- '''Note:''' With '''GnuCash 3.2''', users can export to CSV directly from the program. |
− | * [http://edseek.com/archives/2005/08/18/gnucash-export-to-gnumeric-and-csv/ GnuCash export to Gnumeric and CSV], using [ | ||
− | |||
− | |||
− |
Latest revision as of 22:16, 8 October 2024
This article collects some notes about the XML file format of GnuCash. It is descriptive, and neither normative nor authoritative.
Beginning with version 1.6, the primary GnuCash storage mechanism is an XML file. The file is optionally compressed with gzip, which is a preference that is set at Edit→Preferences→General→Use file compression.
gnucash-v2.rnc is a non-normative RELAX NG schema for the XML file format. There are also DTD schema definitions in libgnucash/doc/xml, but these are outdated and do not define the current format correctly.
Many elements in the XML file are identified by Globally Unique Identifiers (GUID). GnuCash includes its own GUID implementation.
Character encoding
With GnuCash 1.9.0, GnuCash writes the XML document using UTF-8 encoding and includes the appropriate encoding declaration in the opening XML text declaration.
Validation
The RELAX NG schema file mentioned above can be used to validate an uncompressed GnuCash XML data file. This requires that you:
- save your GnuCash data file in uncompressed format
- use an XML validator--e.g., Jing, which will be used in this example.
As stated above, the GnuCash data file is by default stored using gzip compression. You must first save your data file in an uncompressed state. The easiest way to do this is to change the storage preference and save your file. (Remember to reset the preference afterwards).
Then download jing and run the following command
jing -c path-to-gnucash-v2.rnc path-to-your-datafile.gnucash
jing will report any validation errors it finds.
- Note
- The validation should not be considered authoritative, as the schema is not updated or tested very often. So validation errors can just as easily be due to errors in the schema than due to errors in the data file.
Based on information provided by Baptiste Carvello in bug 680887.
External links
- https://gnucashtoqif.us/ - GnuCash XML → QIF conversion tool
- GnuCash export to Gnumeric and CSV, using XSLT -- Note: With GnuCash 3.2, users can export to CSV directly from the program.