QSF XML file backend for gnucash-gnome2-dev branch

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


Neil,

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.

Where?

> 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
gnucash).

Nice work so far,

-derek
-- 
       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