This document describes the internals of the Remote Ballot Marking tool.
This prototype is based on XML Forms Architecture, providing a Remote Ballot Marking interface with the following capabilities:
- Dynamic ballot rendering based on an EML 410 data source
- Digital signature support
- Offline ballot marking
- Screen reader support
- Overvote protection
- Control of contest column and page breaks
Support for the following contest options:
- Candidate Option
- Ballot Measure Option
- Write-In Option
Support for the following contest types:
- Candidate Contest
- Ballot Measure Contest
The prototype is made up of three major components
- The ballot template
- EML 410 instance data
Each of these components are stored separately on the project repository. However, when packaged as a PDF, all components are combined together to produce a standalone file.
When the PDF is loaded, the following occurs:
- The Template DOM is loaded.
- The XML Data DOM (i.e. input data) is loaded.
- Data binding occurs between the template DOM and XML Data DOM, generating the Form DOM.
The contests and contest options are rendered in the order they appear in the input data.
- When the user marks the ballot, the Form DOM is updated.
- When the user exports data, the XML Data DOM (EML) is updated, and transforms the EML to CVR via XSL.
The default stylesheet included with the ballot template can be overridden, with exceptions. See the EML 410 Extensions document.
Contests are given a default template consisting of:
- Vote for not more than
{MaxVotes}
- Undervote helper, indicating how many remaining selections the voter has.
This template can be overwritten with custom instructions, whenever there is a HowToVote
element under Contest
.
<HowToVote>
<Message>(To vote for Governor and Lieutenant Governor, darken the oval at the left of the joint candidates of your choice)
</Message>
</HowToVote>
All ballot measures with
MeasureText
are expected to customHowToVote
instructions.
- Candidates with
Affiliation/AffiliationIdentifier/RegisteredName
will always appear with their affiliation under their name.