New XML file format for QOF?
Derek Atkins
warlord at MIT.EDU
Fri Oct 29 13:15:50 EDT 2004
Neil Williams <linux at codehelp.co.uk> writes:
> On Friday 29 October 2004 3:48 pm, you wrote:
>> While I'm not against this, I'm concerned that it will add more code
>> to gnucash that may not be used much. Perhaps it will. I don't know.
>> But I'd like to make as few changes to the "gnucash xml data file
>> format" as possible.
>
> It's more of a format for QOF that any QOF compatible program can use for
> their own data.
In other words it's a "QOF Object Serialization Format"?
>> > <obj:date type="expense_date">1099016941</obj:date>
>>
>> The date should probably be an actual XML Date string instead of a
>> Unix Time number.
>
> Is that for parsing reasons? Isn't the number (as universal time) just as
> independent of timezone issues?
No, it's not for parsing reasons, it's for communicating between
machines that have a difference concept of the epoch. Also, XML
already has a standard DateTime format (ISO8601); we should continue
to use it.
>> > <obj:int32 type="type_of_expense">7</obj:int32>
>>
>> I'm also concerned about "int32 magic numbers" here.
>
> That, I thought to use to tell another QOF process that the content is a
> QOF_TYPE_INT32 (or 64 etc). Just trying to match the existing QOF types to
> the tags.
Yes, but different implementations may use different enumerations.
For example, the gnucash account type enumeration changed between
versions.
>> What does "type
>> of expense 7" mean?
>
> shorthand - it's the value for the #define EXPENSE_TYPE used in the QOF
> definitions. The value 7 is as output by the Palm, it is an enum internal to
> Palm that would be defined by the map. It can be expanded.
>
>> What if the enumeration changes? IMHO it's much
>> better to say "expense_type PAYMENT" or some other string value that's
>> more "human readable" and doesn't tie into a specific enumeration
>> implementation.
>
> OK, can do. However, this will be a specific implementation - the pilot-link
> one. Each implementation would use the same tags with different type
> attributes and content. Which is where the name collisions come in.
Of course.. But the pilot-link QOF Implementation will define the
pilot-link QOF objects, the Gnucash implementation will define the
gnucash QOF objects. Then you can map across them in a way that if
the enumeration changes in one implementation you don't have to fix
the map.
>> > <obj:gnc_numeric_denom/>
>> > </obj:gnc_numeric>
>> enum?? I think we should continue to encode gnc_numeric as XXX/YYY.
>
> You mean as:
> <obj:gnc_numeric>XXX/YYY</obj:gnc_numeric>
> rather than one tag for XXX and one for YYY?
> <obj:gnc_numeric_numerator>XXX</obj:gnc_numeric_numerator>
> <obj:gnc_numeric_denom>YYY</obj:gnc_numeric_denom>
Yes, that's what I mean.
-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