QSF XML file backend for gnucash-gnome2-dev branch

Derek Atkins warlord at MIT.EDU
Tue Jan 25 16:18:58 EST 2005


First, I'd like to say Nice Job!  I know you've put a lot of hard work
into this, so I hope my comments below don't discourage you...  Also,
I should note that I haven't looked at the patch -- I'm basing my
comments below on your particular statements.

Neil Williams <linux at codehelp.co.uk> writes:

> The patch includes the QSF schema for object and map files, it includes code 
> to install the schema in a qsf sub-directory of $prefix/share/ and it also 
> includes a test QSF map that will be the next phase of development to map 
> pilot-link QOF objects into GnuCash objects.

I'm wondering if these shouldn't go into $prefix/share/xml/gnucash/...
(or .../share/xml/qof).  You don't say specifically where under
$prefix/share you're putting them.

> Importing data will be done via a second QofSession, loading the QSF XML using 
> qof_session_load which will automatically call qof_book_merge to control the 
> merge into the existing QofBook in the original QofSession. I'll add File 
> menu options for this in due course.

What happens if I just run File -> Open and select of QSF file?  Will
it "automatically call qof_book_merge"?  I think the "load" and
"merge" apis should definitely be separable.

> QSF source files are included in src/backend/file and create their own 
> library, gnucash/libqsf-backend-file.so

I think the code should probably go into src/backend/qsf instead of
backend/file.  Also, the library should probably be called
libgnc-backend-qsf (or libqof-backend-qsf).

> The patch also includes error codes and error messages related to QSF 
> validation and parsing.


> QSF increases the libxml2 requirement to 2.6.0 for the gnome2 branch to 
> support the schema validation which identifies QSF files relative to existing 
> files.

This is a major issue.  Our target platform has libxml2-2.5.10, not
2.6.  We cannot depend on 2.6.

> QSF uses UTC time throughout and uses this time format string:
> #define QSF_XSD_TIME   "%Y-%m-%dT%H:%M:%SZ"

Is there any particular reason you didn't use the existing Timespec
XML encoding?

> QOF_TYPE_INT32 is not a problem, QOF_TYPE_KVP is a little more of a challenge.

Why is QOF_TYPE_KVP a challenge?  KVPs are used a lot in gnucash (and
in particular in the business feature integration with the rest of

Nice work so far,

       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available

More information about the gnucash-devel mailing list