-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathindex.html
4284 lines (4072 loc) · 227 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="initial-scale = 1.0" />
<link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Bitter:400,700,400italic" rel="stylesheet" type="text/css">
<link href="//vip-website-assets.s3.amazonaws.com/core/css/jquery.fs.shifter.css" rel="stylesheet" type="text/css" media="all" />
<link href="//vip-website-assets.s3.amazonaws.com/core/css/vendor/prism.css" rel="stylesheet" />
<link href="//vip-website-assets.s3.amazonaws.com/core/css/style.css" rel="stylesheet" type="text/css">
<script src="//vip-website-assets.s3.amazonaws.com/core/js/jquery-1.11.0.min.js"></script>
<script src="//vip-website-assets.s3.amazonaws.com/core/js/waypoints.min.js"></script>
<script src="//vip-website-assets.s3.amazonaws.com/core/js/vip.js"></script>
<script src="//vip-website-assets.s3.amazonaws.com/core/js/jquery.fs.shifter.js"></script>
</head>
<body class="shifter">
<div class="desktop-nav-wrap nav-wrap">
<div class="container">
<a href="//www.votinginfoproject.org">
<img src="//vip-website-assets.s3.amazonaws.com/core/images/logo.png" width="370px" height="40px" alt="Voting Information Project" class="logo">
</a>
<ul class="nav desktop-nav">
<li>
<a href="//www.votinginfoproject.org/about/">About</a>
</li>
<li>
<a href="//www.votinginfoproject.org/news/">News</a>
</li>
<li>
<a href="//www.votinginfoproject.org/projects/">Projects</a>
</li>
<li>
<a href="//www.votinginfoproject.org/get-involved/">Get Involved</a>
</li>
</ul>
</div>
</div>
<div class="shifter-page">
<div class="mobile-nav-wrap nav-wrap">
<div class="container">
<a href="//www.votinginfoproject.org/" class="group">
<img src="//vip-website-assets.s3.amazonaws.com/core/images/logo.png" width="370px" height="40px" alt="Voting Information Project" class="logo">
</a>
<div class="mobile-nav search-mobile group">
<a href="#" class="mobile-nav-slide shifter-handle">
<img src="//vip-website-assets.s3.amazonaws.com/core/images/btn-mobile-nav.png" width="20px" height="12px">
</a>
</div>
</div>
</div>
<div class="inner-wrap standard">
<div class="container group">
<div class="content-column article">
<h1 class="title"><abbr title="Voting Information Project">VIP</abbr> Format Specification <span class="version">Version 3.0</span></h1>
<h2>General Introduction</h2>
<p>Welcome to the <a href="//www.votinginfoproject.org">Voting Information Project</a>'s open XML format. This data format provides an easy way to produce data that lets programmers take a voter's address, compare it to <a href="#streetsegment">street segments</a>, and determine that voter's <a href="#precinctitems">precinct</a> (or <a href="#precinctsplititems">precinct split</a>). Knowing a voter's precinct allows information disseminators (such as Google and Microsoft) provide voters with their official <a href="#pollinglocationitems">polling locations</a> (and <a href="#earlyvotesiteitems">early voting sites</a>), <a href="#ballotitems">ballots</a> (including both <a href="#candidateitems">candidates</a> and <a href="#referendumitems">referenda</a>), local <a href="#electionadministration">election administrations</a>, and <a href="#electionofficial">election officials</a>. After the election, voters can learn <a href="#contestresult">who won</a>.</p>
<h3>General Specification</h3>
<p>The actual election information specifies collections of elements, some containing links between each other. The entire set of tags <b>must</b> be encapsulated in a root object named <b>vip_object</b>. See the <a href="//github.com/votinginfoproject/vip-specification/">sample xml file and xsd file</a> for more details.
<p>Each top-level tag is a container for other fields, described in their own section. The <b>only required</b> top-level tags are the <b><a href="#souceitems">source</a></b> object and the <b><a href="#electionitems">election</a></b> object, each of which must be present exactly once. All other top-level tags can be repeated an unlimited number of times, or not included at all; order of top-level tags does not matter. Each top-level tag is <b>required</b> to have a single attribute, "id", which is required to be: (1) an integer, and (2) unique in a data file. The id attribute for the state object is often the state's <a href="//www.itl.nist.gov/fipspubs/by-num.htm"><abbr title="Federal Information Processing Standards">FIPS</abbr> number</a>, but this is <b>not required</b>. The id attributes are not required to remain constant for the same piece of semantic data across multiple productions of the feed. (For example, candidate Michael Smith, running for dogcatcher in Iowa, is not required to have the same candidate id attribute each time the state of Iowa publishes data.)</p>
<p>In general, subtag data can appear a maximum of one time within each top-level tag object and in any order. Exceptions are noted below.</p>
<p>For the data itself, the special characters &, <, and > need to be encoded as &amp;, &lt;, and &gt;, respectively</p>
<h3>Naming convention</h3>
<p>The file containing the VIP feed should be named vipFeed-[<a href="//www.itl.nist.gov/fipspubs/co-codes/states.htm">FIPS code</a> for state or county]-[election year]-[election month]-[election day].xml. If the file is zipped, the file extensions of .zip or .xml.zip are also acceptable. <p/><p/>For instance, vipFeed-19-2012-11-06.zip denotes Iowa's (the FIPS code for IA is 19) feed for the Nov 6, 2012 election.</p>
<h3>Comma-delimited flat files</h3>
<p>If your office is producing flat files instead of an XML file, the files must be comma-delimited .txt files. While the format of the files differs slightly from the XML, the attributes included must conform to the field specifications below.<p/><p/> Examples of the flat files are below each XML example, along with the files included to link those elements when the files are compiled into an XML feed. To read more about the flat files, see complete file header templates and look at example files, you can do so in this <a href="https://github.com/votinginfoproject/csv-templates">GitHub repository.</a> </p>
<div id="sourceitems" class="datatable">
<h2>Source items</h2>
<table>
<caption>The Source object represents the organization that is publishing the information. This object is the only required object in the feed file, and only one source object is allowed to be present.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>name</b> field specifies the name of the organization that is providing the information.</td>
<td>If the <b>name</b> field is invalid, the
implementation is required to ignore the source element containing it.</td>
</tr>
<tr class="rev12">
<td>vip_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>vip_id</b> field specifies the ID of the organization as assigned by VIP. This ID is <b>not an attribute</b> so as not to interfere with organizations' own numbering conventions (since id attributes must be unique across the entire file).</td>
<td>If the <b>vip_id</b> field is invalid, the
implementation is required to ignore the source element containing it.</td>
</tr>
<tr>
<td>datetime</td>
<td>DateTime</td>
<td><b>Required</b></td>
<td>The <b>datetime</b> field specifies the date and time of the feed production. The date/time is considered to be in the timezone local to the organization. This datetime is required to match the datetime specified in the feed's filename.</td>
<td>If the <b>datetime</b> field is not present or invalid, the
implementation is required to ignore the source element
containing it.</td>
</tr>
<tr>
<td>description</td>
<td>String</td>
<td>Optional</td>
<td>The <b>description</b> specifies both the nature of the organization providing the data and what data is in the feed.</td>
<td>If the <b>description</b> is invalid, the
implementation is required to ignore it.</td>
</tr>
<tr>
<td>organization_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>organization_url</b> field contains a URL to the home page of the organization publishing the data</td>
<td>If the <b>organization_url</b> field is invalid, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev12">
<td>feed_contact_id</td>
<td>Integer</td>
<td>Optional</td>
<td>The <b>feed_contact_id</b> is a reference to (an election official object) the person who will respond to inquiries about the information contained within the file.</td>
<td>If the <b>feed_contact_id</b> field is invalid, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev12">
<td>tou_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>tou_url</b> is the website where the Terms of Use for the information in this file can be found.</td>
<td>If the <b>tou_url</b> field is invalid, the
implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for a source element:</p>
<pre class="line-numbers" data-src="examples/source-1.xml"></pre>
<pre class="line-numbers" data-src="examples/source-2.xml"></pre>
<p>If your office is producing flat files, the source element is in a comma-delimited .txt file named source.txt. Example file for a source element:</p>
<pre class="line-numbers" data-src="examples/source_txt.xml"></pre>
</div>
<div id="electionitems" class="datatable">
<h2>Election items</h2>
<table>
<caption>The Election object represents an Election Day, which usually consists of many individual contests and/or referenda. <span class="rev22">A feed must contain <b>exactly one</b> Election object. All relationships in the feed (e.g., street segment to precinct [split] to polling location) are assumed to relate only to the Election specified by this object. It is permissible, and recommended, to combine unrelated contests (e.g., a special election and a general election) that occur on the same day into one feed with one Election object.</span></caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>date</td>
<td>Date</td>
<td><b>Required</b></td>
<td>The <b>date</b> field specifies when the election is being
held. The date is considered to be in the timezone local to the state
holding the election.</td>
<td>If the <b>date</b> is not present or invalid, the
implementation is required to ignore the election element
containing it.</td>
</tr>
<tr>
<td>election_type</td>
<td>String</td>
<td>Optional</td>
<td>The <b>election_type</b> field specifies the highest
controlling authority for election (e.g., federal, state, county, city,
town, etc.)</td>
<td>If the <b>election_type</b> field is invalid, the
implementation is required to ignore the election_type field.</td>
</tr>
<tr>
<td>state_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>state_id</b> specifies a link to the state element
where the election is being held.</td>
<td>If the <b>state_id</b> is not present or invalid, the
implementation is required to ignore the election element
containing it.</td>
</tr>
<tr>
<td>statewide</td>
<td>yesNoEnum</td>
<td>Optional</td>
<td>The <b>statewide</b> specifies whether the election is
statewide. Valid items are "yes" and "no".</td>
<td>If the <b>statewide</b> is not present or invalid, the
implementation is required to default to "yes".</td>
</tr>
<tr class="rev2">
<td>registration_info</td>
<td>String</td>
<td>Optional</td>
<td>The <b>registration_info</b> specifies information about
registration for this election either as text or a URL.</td>
<td>If the <b>registration_info</b> field is invalid, the
implementation is required to ignore it.</td>
</tr>
<tr>
<td>absentee_ballot_info</td>
<td>String</td>
<td>Optional</td>
<td>The <b>absentee_ballot_info</b> specifies information about
requesting absentee ballots either as text or a URL</td>
<td>If the <b>absentee_ballot_info</b> field isinvalid, the
implementation is required to ignore it.</td>
</tr>
<tr>
<td>results_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>results_url</b> field contains a URL where results
for the election may be found</td>
<td>If the <b>results_url</b> field is invalid, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev10">
<td>polling_hours</td>
<td>String</td>
<td>Optional</td>
<td>The <b>polling_hours</b> field contains the hours (in local
time) that Election Day polling locations are open. If polling hours
differ in specific polling locations, alternative hours may be
specified in the Polling Location object.</td>
<td>If the <b>polling_hours</b> field is invalid or missing, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev20">
<td>election_day_registration</td>
<td>yesNoEnum</td>
<td>Optional</td>
<td>The <b>election_day_registration</b> specifies if a voter can register on the same day of the election (i.e., the last day of the election). Valid items are "yes" and "no".</td>
<td>If the <b>election_day_registration</b> field is invalid or missing, the
implementation is required to ignore it and not assume one way or the other.</td>
</tr>
<tr class="rev20">
<td>registration_deadline</td>
<td>Date</td>
<td>Optional</td>
<td>The <b>registration_deadline</b> field specifies the last day to register for the election with the possible exception of Election Day registration.</td>
<td>If the <b>registration_deadline</b> field is invalid or missing, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev20">
<td>absentee_request_deadline</td>
<td>Date</td>
<td>Optional</td>
<td>The <b>absentee_request_deadline</b> field specifies the last day to request an absentee ballot.</td>
<td>If the <b>absentee_request_deadline</b> field is invalid or missing, the
implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for an election element:</p>
<pre class="line-numbers" data-src="examples/election.xml"></pre>
<p>If your office is producing flat files, the election element is in a comma-delimited .txt file named election.txt. Example file for an election element:</p>
<pre class="line-numbers" data-src="examples/election_txt.xml"></pre>
</div>
<div id="stateitems" class="datatable">
<h2>State items</h2>
<table>
<caption>The State object includes state-wide election information. The ID attribute is often the state's FIPS code. Subtag data must appear in the order below.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr class="rev7">
<td>name</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>name</b> is the name of a state, such as Alabama</td>
<td>If the <b>name</b> field is not present or invalid, the
implementation is required to ignore the state element
containing it.</td>
</tr>
<tr class="rev11">
<td>election_administration_id</td>
<td>Integer</td>
<td>Optional</td>
<td>The <b>election_administration_id</b> links to the state's election administration object.</td>
<td>If the <b>election_administration_id</b> field is invalid the
implementation is required to ignore it.</td>
</tr>
<tr class="rev30">
<td>early_vote_site_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>early_vote_site_id</b> specifies a link to the state's early vote or ballot drop locations. If early vote centers or ballot drop locations are state-wide (e.g., anyone in the state can use them), they should be specified here.</td>
<td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for a state element:</p>
<pre class="line-numbers" data-src="examples/state.xml"></pre>
<p>If your office is producing flat files, the state element is in a comma-delimited .txt file named state.txt. Example file for a state element:</p>
<pre class="line-numbers" data-src="examples/state_txt.xml"></pre>
</div>
<div id="localityitems" class="datatable">
<h2>Locality items</h2>
<table>
<caption>The Locality object represents the jurisdiction below the state (e.g., county). Subtag data must appear in the order below.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>name</b> specifies the locality's name</td>
<td>If the <b>name</b> field is invalid or not present, the
implementation is required to ignore the locality element
containing it.</td>
</tr>
<tr>
<td>state_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>state_id</b> links to the locality's state</td>
<td>If the <b>state_id</b> field is invalid or not present, the
implementation is required to ignore the locality element
containing it.</td>
</tr>
<tr>
<td>type</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>type</b> specifies the locality's type. Valid values are: county, city, town, township, borough, parish, village, and region (for Alaska). </td>
<td>If the <b>type</b> field is invalid or not present, the
implementation is required to ignore the locality element
containing it.</td>
</tr>
<tr class="rev11">
<td>election_administration_id</td>
<td>Integer</td>
<td>Optional</td>
<td>The <b>election_administration_id</b> links to the locality's election administration object.</td>
<td>If the <b>election_administration_id</b> field is invalid the
implementation is required to ignore it.</td>
</tr>
<!-- <tr class="rev22">
<td>polling_location_id</td>
<td>Integer</td>
<td>Optional</td>
<td>If everyone in a locality votes at the same polling location, the <b>polling_location_id</b> specifies a link to the
locality's polling location object. Use the <b>early_vote_site</b> for early vote centers.</td>
<td>If the <b>polling_location_id</b> field is missing or invalid, the
implementation is required to ignore it.</td>
</tr> -->
<tr class="rev22 rev30">
<td>early_vote_site_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>early_vote_site_id</b> specifies a link to the locality's early vote or ballot drop locations. If early vote centers or ballot drop locations are locality-wide, they should be specified here.</td>
<td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it. However, the implementation should still check to see if there are any early vote sites associated with this locality's state.</td>
</tr>
<!-- <tr class="rev22">
<td>ballot_style_image_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>ballot_style_image_url</b> specifies a URL that points to an image of the ballot that a person who lives in this locality will vote on. If multiple ballot styles exist in a single locality, ignore this field.</td>
<td>If the <b>ballot_style_image_url</b> field is missing or invalid, the implementation is required to ignore it.</td>
</tr> -->
</tbody>
</table>
<p>Example XML for a locality element:</p>
<pre class="line-numbers" data-src="examples/locality.xml"></pre>
<p>If your office is producing flat files, the locality elements are in a comma-delimited .txt file named locality.txt. Example file for localities:</p>
<pre class="line-numbers" data-src="examples/locality_txt.xml"></pre>
</div>
<div id="precinctitems" class="datatable">
<h2>Precinct</h2>
<table>
<caption>The Precinct object represents a precinct, which is contained within a Locality. Subtag data must appear in the order below. <br/><br/>While the id attribute does not have to be static across feeds for one election, the combination of vip_id, locality.name, precinct.ward, precinct.name, and precinct.number should remain constant across feeds for one election. (Note that not all of the fields just mentioned are required -- omitting those non-required fields is fine.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>name</b> specifies the precinct's name (or number if no name exists)</td>
<td>If the <b>name</b> field is invalid or not present, the
implementation is required to ignore the precinct element
containing it.</td>
</tr>
<tr class="rev30">
<td>number</td>
<td>String</td>
<td><b>Optional</b></td>
<td>The <b>number</b> specifies the precinct's number (e.g., 32 or 32A -- alpha characters are legal). Should be used if the <b>name</b> field is populated by a name and not a number.</td>
<td>If the <b>code</b> field is invalid or not present, the
implementation is required to ignore it.</td>
</tr>
<tr>
<td>locality_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>locality_id</b> links to the locality that comprises
the precinct</td>
<td>If the <b>locality_id</b> field is invalid or not present,
the implementation is required to ignore the precinct element
containing it.</td>
</tr>
<tr class="rev20">
<td>electoral_district_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>electoral_district_id</b> links to an electoral district (e.g., congressional district, state house district, school board district) that the precinct belongs to. <b><i>Highly Recommended</i></b> if candidate information is to be provided. Multiple allowed and recommended to specify the geography of multiple electoral districts. If an electoral district splits a precinct, use the <b>precinct_split</b> object and do not specify that particular electoral district in this object.</td>
<td>If the <b>electoral_district_id</b> field is invalid or not present,
the implementation is required to ignore the precinct element
containing it.</td>
</tr>
<tr>
<td>ward</td>
<td>String</td>
<td>Optional</td>
<td>The <b>ward</b> specifies the ward the precinct is contained
within</td>
<td>If the <b>ward</b> field is missing or invalid, the implementation is required
to ignore it.</td>
</tr>
<tr class="rev14">
<td>mail_only</td>
<td>yesNoEnum</td>
<td>Optional</td>
<td>The <b>mail_only</b> specifies whether voters in the precinct vote only by mailing their ballots (with the possible option of dropping off their ballots as well). Valid values are "yes" and "no", with "no" being the default if the tag is not present.</td>
<td>If the <b>mail_only</b> field is missing or invalid, the implementation is required to default to "no".</td>
</tr>
<tr>
<td>polling_location_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>polling_location_id</b> specifies a link to the
precinct's polling location object. Multiple <b>polling_location_id</b> tags may be specified, but this use should be reserved for when multiple Election-Day-only vote locations serve specific precincts. Use the <b>early_vote_site</b> for early vote centers.</td>
<td>If the <b>polling_location_id</b> field is missing or invalid, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev22 rev30">
<td>early_vote_site_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>early_vote_site_id</b> specifies a link to the
precinct's early vote sites or ballot drop location. This tag is especially important for precinct-specific vote sites or drop locations, but should be disregarded for locality-level (i.e., county-level) sites where multiple drop locations serve multiple precincts. In this case, precinct multiple <b>early_vote_site_id</b> tags may be specified, but would constitute redundant information.</td>
<td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it with the following exception. In all cases, but especially if the precinct is mail-only: if the <b>early_vote_site_id</b> field is missing then the implementation is required to assume that any early_vote_site objects linked from this precinct's <b>locality</b> object are valid early vote/drop locations for this precinct.</td>
</tr>
<tr class="rev22">
<td>ballot_style_image_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>ballot_style_image_url</b> specifies a URL that points to an image of the ballot that a person who lives in this precinct will vote on. If multiple ballot styles exist in this precinct, ignore this field.</td>
<td>If the <b>ballot_style_image_url</b> field is missing or invalid, the implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Three example XML's for a precinct element. The first is a standard, in-person precinct. The second is a mail-in precinct with a precinct specific drop location. The third is a mail-in precinct with multiple drop locations spread around the county.</p>
<pre class="line-numbers" data-src="examples/precinct-1.xml"></pre>
<pre class="line-numbers" data-src="examples/precinct-2.xml"></pre>
<pre class="line-numbers" data-src="examples/precinct-3.xml"></pre>
<p>If your office is producing flat files, the precinct elements are in a comma-delimited .txt file named precinct.txt. Example file for precincts:</p>
<pre class="line-numbers" data-src="examples/precinct_txt.xml"></pre>
</div>
<div id="precinctsplititems" class="datatable">
<h2>Precinct Split</h2>
<table>
<caption>The Precinct Split object represents a part of a precinct. The Precinct Split object will link to its "parent" Precinct object. Subtag data must appear in the order below.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>name</b> specifies the precinct split's name (or
number)</td>
<td>If the <b>name</b> field is invalid or not present, the
implementation is required to ignore the precinct split element
containing it.</td>
</tr>
<tr>
<td>precinct_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>precinct_id</b> specifies the precinct that comprises
the precinct split.</td>
<td>If the <b>precinct_id</b> field is invalid or not present,
the implementation is required to ignore the precinct split
element containing it.</td>
</tr>
<tr class="rev20">
<td>electoral_district_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>electoral_district_id</b> links to an electoral district (e.g., congressional district, state house district, school board district) that the precinct split belongs to. <b><i>Highly Recommended</i></b> if candidate information is to be provided. Multiple allowed and recommended to specify the geography of multiple electoral districts.</td>
<td>If the <b>electoral_district_id</b> field is invalid or not present,
the implementation is required to ignore the precinct element
containing it. Takes precedence over any conflicting information in the parent precinct object.</td>
</tr>
<tr>
<td>polling_location_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>polling_location_id</b> specifies a link to the
precinct split's polling location object. Multiple <b>polling_location_id</b> tags may be specified, but this use should be reserved for when multiple Election-Day-only vote locations serve specific precincts splits. Use the <b>early_vote_site</b> for early vote centers.</td>
<td>If the <b>polling_location_id</b> field is invalid, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev22 rev30">
<td>early_vote_site_id</td>
<td>Integer</td>
<td>Optional;<br>multiple allowed</td>
<td>The <b>early_vote_site_id</b> specifies a link to the
precinct split's early vote sites or ballot drop location. This tag is especially important for precinct split-specific vote sites or drop locations, but should be disregarded for precinct-level or locality-level (i.e., county-level) sites where multiple drop locations serve multiple precinct splits. In this case, multiple <b>early_vote_site_id</b> tags at the precinct-split level may be specified, but would constitute redundant information.</td>
<td>If the <b>early_vote_site_id</b> field is missing or invalid, the implementation is required to ignore it with the following exception. In all cases, but especially if the precinct-split is mail-only: if the <b>early_vote_site_id</b> field is missing then the implementation is required to assume that any early_vote_site objects linked from this precinct split's <b>precinct</b> object or (failing that) this precinct split's <b>locality</b> object are valid early vote/drop locations for this precinct split.</td>
</tr>
<tr class="rev22">
<td>ballot_style_image_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>ballot_style_image_url</b> specifies a URL that points to an image of the ballot that a person who lives in this precinct split will vote on.</td>
<td>If the <b>ballot_style_image_url</b> field is missing or invalid, the implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for a precinct split element:</p>
<pre class="line-numbers" data-src="examples/precinct_split.xml"></pre>
<p>If your office is producing flat files, the precinct split elements are in a comma-delimited .txt file named precinct_split.txt. Example file for precinct_splits:</p>
<pre class="line-numbers" data-src="examples/precinct_split_txt.xml"></pre>
</div>
<div id="electionadministration" class="datatable">
<h2>Election Administration</h2>
<table>
<caption>The Election Administration represents an institution for serving a locality's (or state's) election functions.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr class="rev13">
<td>name</td>
<td>String</td>
<td>Optional</td>
<td>The <b>name</b> specifies the name of the office/administration. While this field is optional for backwards compatibility reasons, it is recommended to be specified. Note the default value if unspecified.</td>
<td>If the <b>name</b> field is invalid or not present,
the implementation is required to use "Election Administration" as the default.</td>
</tr>
<tr>
<td>eo_id</td>
<td>Integer</td>
<td>Optional</td>
<td>The <b>eo_id</b> links to the election official object for the person in charge of the office/administration.</td>
<td>If the <b>eo_id</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>ovc_id</td>
<td>Integer</td>
<td>Optional</td>
<td>The <b>ovc_id</b> links to the election official object for the contact person for overseas voters.</td>
<td>If the <b>ovc_id</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>physical_address</td>
<td>simpleAddressType</td>
<td>Optional</td>
<td>The <b>physical_address</b> element specifies the election administration's office street address.</td>
<td>If the <b>physical_address</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>mailing_address</td>
<td>simpleAddressType</td>
<td>Optional</td>
<td>The <b>mailing_address</b> element specifies the election administration's mailing address.</td>
<td>If the <b>mailing_address</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>elections_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>elections_url</b> specifies web address the administration's website.</td>
<td>If the <b>elections_url</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev12">
<td>registration_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>registration_url</b> specifies web address for information on registering to vote.</td>
<td>If the <b>registration_url</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev12">
<td>am_i_registered_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>am_i_registered_url</b> specifies the web address for information on whether an individual is registered.</td>
<td>If the <b>am_i_registered_url</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev12">
<td>absentee_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>absentee_url</b> specifies the web address for information on absentee or early voting.</td>
<td>If the <b>absentee_url</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev13">
<td>where_do_i_vote_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>where_do_i_vote_url</b> specifies web address for information on where an individual votes based on their address.</td>
<td>If the <b>where_do_i_vote_url</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev22">
<td>what_is_on_my_ballot_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>what_is_on_my_ballot_url</b> specifies web address for information on what is on an individual's ballot.</td>
<td>If the <b>whats_on_my_ballot_url</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>rules_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>rules_url</b> specifies a URL for the election rules
and laws (if any) for the jurisdiction of the administration</td>
<td>If the <b>rules_url</b> field is invalid the implementation
is required to ignore it.</td>
</tr>
<tr class="rev15">
<td>voter_services</td>
<td>String</td>
<td>Optional</td>
<td>The <b>voter_services</b> item specify the services available
voters at the election administration building. Services might include:
registration, absentee ballot request, or early voting. Please use
complete sentences. </td>
<td>If the <b>voter_services</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>hours</td>
<td>String</td>
<td>Optional</td>
<td>The <b>hours</b> element specifies the hours of operation (in local time) of the election administration office.
<td>If the <b>hours</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for an election administration element:</p>
<pre class="line-numbers" data-src="examples/election_administration.xml"></pre>
<p>If your office is producing flat files, the election administration elements are in a comma-delimited .txt file named election_administration.txt. Example file for election administration offices:</p>
<pre class="line-numbers" data-src="examples/election_administration_txt.xml"></pre>
</div>
<div id="electionofficial" class="datatable">
<h2>Election Official</h2>
<table>
<caption>The Election Official object comprises the name and contact information for an election official.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td>String</td>
<td><b>Required</b></td>
<td>The <b>name</b> specifies the election official's name</td>
<td>If the <b>name</b> field is invalid or not present, the
implementation is required to ignore the Election Official element
containing it.</td>
</tr>
<tr>
<td>title</td>
<td>String</td>
<td>Optional</td>
<td>The <b>title</b> element specifies the election official's title in the office.</td>
<td>If the <b>title</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>phone</td>
<td>String</td>
<td>Optional</td>
<td>The <b>phone</b> element specifies the election official's phone number, optionally including the extension.</td>
<td>If the <b>phone</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>fax</td>
<td>String</td>
<td>Optional</td>
<td>The <b>fax</b> element specifies the election official's fax number.</td>
<td>If the <b>fax</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>email</td>
<td>String</td>
<td>Optional</td>
<td>The <b>email</b> element specifies the election official's email address.</td>
<td>If the <b>email</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for an election official element:</p>
<pre class="line-numbers" data-src="examples/election_official.xml"></pre>
<p>If your office is producing flat files, the election official elements are in a comma-delimited .txt file named election_official.txt. Example file for election officials:</p>
<pre class="line-numbers" data-src="examples/election_official_txt.xml"></pre>
</div>
<div id="pollinglocationitems" class="datatable">
<h2>Polling Location</h2>
<table>
<caption>The Polling Location object represents a site where voters cast ballots on Election Day.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>address</td>
<td>simpleAddressType</td>
<td><b>Required</b></td>
<td>The <b>address</b> specifies the polling location's address. It also optionally includes the polling location's name (e.g., Springfield Elementary).</td>
<td>If the <b>address</b> field is invalid or not present, the
implementation is required to ignore the polling location
element containing it.</td>
</tr>
<tr>
<td>directions</td>
<td>String</td>
<td>Optional</td>
<td>The <b>directions</b> specify further instructions for
locating the polling location.</td>
<td>If the <b>directions</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev10">
<td>polling_hours</td>
<td>String</td>
<td>Optional</td>
<td>The <b>polling_hours</b> field contains the hours (in local
time) that Election Day polling locations are open. This information
overrides any information specified in the Election object.</td>
<td>If the <b>polling_hours</b> field is invalid or missing, the
implementation is required to ignore it.</td>
</tr>
<tr class="rev30">
<td>photo_url</td>
<td>String</td>
<td>Optional</td>
<td>The <b>photo_url</b> is a url that points to a picture of this polling location. At the moment, one picture is permitted per polling location, though multiple pictures may be allowed in future revisions.</td>
<td>If the <b>photo_url</b> field is invalid or missing, the
implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for a polling location element:</p>
<pre class="line-numbers" data-src="examples/polling_location.xml"></pre>
<p>If your office is producing flat files, the polling location elements are in a comma-delimited .txt file named polling_location.txt. Example file for polling locations:</p>
<pre class="line-numbers" data-src="examples/polling_location_txt.xml"></pre>
<p>If your office is producing flat files, the polling location elements are linked to precincts or precinct splits through a comma-delimited .txt file named precinct_polling_location.txt or precinct_split_polling_location.txt. Example files for polling locations linked to precincts or precinct splits:</p>
<pre class="line-numbers" data-src="examples/precinct_polling_location_txt.xml"></pre>
<pre class="line-numbers" data-src="examples/precinct_split_polling_location_txt.xml"></pre>
</div>
<div id="earlyvotesiteitems" class="datatable">
<h2>Early Vote Site items</h2>
<table>
<caption>The Early Vote Site object represents a place where ballots can be cast prior to the election, or drop boxes on Election Day. This object can represent: a registrar's office that offers early voting, a temporary early vote site, a ballot drop box, or similar location.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th><br>
</th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td>String</td>
<td>Optional</td>
<td>The <b>name</b> specifies the ballot drop location's name. Including the name of the main service will be helpful: "Springfield Ballot Drop Location 2" or "East Springfield Early Vote Center" is preferred to "Springfield Center 2".</td>
<td>If the <b>name</b> field is invalid or not present, the
implementation is required to ignore it.</td>
</tr>
<tr>
<td>address</td>
<td>simpleAddressType</td>
<td><b>Required</b></td>
<td>The <b>address</b> specifies the ballot drop location's
address</td>
<td>If the <b>address</b> field is invalid or not present, the
implementation is required to ignore the ballot drop location
element containing it.</td>
</tr>
<tr>
<td>directions</td>
<td>String</td>
<td>Optional</td>
<td>The <b>directions</b> specify further instructions for
locating the ballot drop location.</td>
<td>If the <b>directions</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr>
<td>voter_services</td>
<td>String</td>
<td>Optional</td>
<td>The <b>voter_services</b> item specify the services available
voters at the early vote/ballot drop location. Services might include:
registration, absentee ballot request, or early voting. Please use
complete sentences. </td>
<td>If the <b>voter_services</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
<tr class="rev22">
<td>start_date</td>
<td>Date</td>
<td>Optional</td>
<td>Highly recommended. The <b>start_date</b> specifies the first date for early voting (or ballot drop-off) at this site. </td>
<td>If the <b>start_date</b> field is invalid or not present,
the implementation is required to ignore it and assume that the early vote site is operational.</td>
</tr>
<tr class="rev22">
<td>end_date</td>
<td>Date</td>
<td>Optional</td>
<td>Highly recommended. The <b>end_date</b> specifies the last date for early voting (or ballot drop-off) at this site. </td>
<td>If the <b>end_date</b> field is invalid or not present,
the implementation is required to ignore it and assume that the early vote site is operational.</td>
</tr>
<tr class="rev13 rev22">
<td>days_times_open</td>
<td>String</td>
<td>Optional</td>
<td>The <b>days_times_open</b> item specify dates and times that the location is open for voter services. Please specify the days of the week (e.g., "Monday through Saturday") and times (e.g., "9am to 6pm"). </td>
<td>If the <b>days_times_open</b> field is invalid or not present,
the implementation is required to ignore it.</td>
</tr>
</tbody>
</table>
<p>Example XML for an early vote element:</p>
<pre class="line-numbers" data-src="examples/early_vote_site.xml"></pre>
<p>If your office is producing flat files, the early vote site elements are in a comma-delimited .txt file named early_vote_site.txt. Example file for early vote sites:</p>
<pre class="line-numbers" data-src="examples/early_vote_site_txt.xml"></pre>
<p>If your office is producing flat files, the early vote site elements are linked to localities, state or precincts through a comma-delimited .txt file named locality_early_vote_site.txt, state_early_vote_site.txt or precinct_early_vote_site.txt. Example files for early vote sites linked to localities, state or precincts:</p>
<pre class="line-numbers" data-src="examples/locality_early_vote_site_txt.xml"></pre>
<pre class="line-numbers" data-src="examples/state_early_vote_site_txt.xml"></pre>
<pre class="line-numbers" data-src="examples/precinct_early_vote_site_txt.xml"></pre>
</div>
<div id="contestitems" class="datatable">
<h2>Contest items</h2>
<table>
<caption>The Contest object represents a single contest, which could be between candidates, adoption of a resolution, or retention of judges (among other possibilities). The geographic scope of the Contest object is the Electoral District, which the Contest object links to.</caption>
<thead>
<tr>
<th>Tag</th>
<th>Data type</th>
<th> </th>
<th>Description</th>
<th>Error handling</th>
</tr>
</thead>
<tbody>
<tr class="rev5">
<td>election_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>election_id</b> specifies a link to the election
under which this contest is being held.</td>
<td>If the <b>election_id</b> is not present or invalid, the
implementation is required to ignore the contest element
containing it.</td>
</tr>
<tr class="rev20">
<td>electoral_district_id</td>
<td>Integer</td>
<td><b>Required</b></td>
<td>The <b>electoral_district_id</b> specifies a link to the
electoral district for the contest (e.g., congressional district, state senate district).</td>
<td>If the <b>electoral_district_id</b> is not present or invalid,