[OVC-demo-team] ballot-election.xml

From: David Mertz <voting-project_at_gnosis_dot_cx>
Date: Tue Mar 16 2004 - 14:25:44 CST

> Fair enough, let's make a decision and make sure everything reflects
> it.
> Wasn't an election XML file supposed to be used to pull all the info
> from?
> Did anyone ever produce this? Volunteers?

I have just produced an (English) ballot-election.xml file[*]. The
format is loosely based on the one described in the Architecture
document, but it has been updated to make tag and attribute names match
those currently used in a <cast_ballot>. I used Jan's contests.py as a
copy/past source to try to minimize the introduction of typos when I
entered the names (and to make sure I didn't skip any names by mistake).

[*] Versions for other languages should look much the same. If Spanish
or French translators want to create ballot-election-en.xml or
ballot-election-fr.xml, that would be cool.

The following top-level attributes that occur in a <cast_ballot> do not
make sense for an (uncast) <ballot>: 'source', 'serial', 'number'.
These are, therefore omitted from the raw ballot format.

The attribute 'writein' likewise is not relevant to a raw ballot, but
the attribute 'party' is. This optional attribute is not included for
non-partisan contests Conceivably some other <selection> metadata will
be relevant in the future (e.g. "incumbency"), and an additional
attribute would be the perfect place to put it.

For the referenda, I needed to invent some new tags to contain the
information presented to voters. I'm not terribly attached to the
tag names or hierarchical organization I chose, but I believe it's
reasonable for the nonce. Assuming gnosis.xml.objectify continues to
be used in processing this file, such extra tags can be transparently
ignored if you just want the <selection> choices, e.g.:

     ballot = make_instance("ballot-election.xml")
     for contest in ballot.contest:
         doSomething(contest.name)
         for selection in contest.selection:
             somethingElse(selection.PCDATA)
         whatAbout(contest.summary.scope)

I had to retype the referenda information from the ballot picture, and
I found two errors on the sample (that I had not noticed previously).
I copied the errors as-is, but Alan, Doug, or Arthur might want to
consider whether these detract from the demo if left in place:

(1) Constitutional Amendments No.1 and No.2 both name an effective
date. However, the first date is spelled out as "November 1, 2004"
while the second one is abbreviated as "1/1/05". I'm pretty sure there
are applicable regulations about exactly how a date should be described
(probably the first way).

(2) On the term limit initiative, there is a number/grammar error: "A
provisions".

Incidentally, in copying referenda descriptive data to XML, I have used
normal capitalization rather than all-caps. It is simple to force
fields to caps in software (for ballot display), but much less simple
to go in the other direction (I know more about which legal-ish words
need capitalization than most software does).

Yours, David...

P.S. I figured out (some of) Sourceforge's CVS last night. So I can
check in this file if it looks helpful. Let me know if any problems
jump out. In general, this should replace Jan's contests.py data, but
that substitution is hardly such an urgent thing that it needs to
happen before the first demo (if it ain't broke... though I confess I
violated that rule in speeding/cleaning up evm2003.utils.convert
slightly and unnecessarily).

==================================================================
= The content of this message, with the exception of any external
= quotations under fair use, are released to the Public Domain
==================================================================

Received on Thu Apr 1 02:40:27 2004

This archive was generated by hypermail 2.1.8 : Thu Apr 01 2004 - 02:40:36 CST