בחירת פתק

משתמשים ב-BallotSelection כדי לזהות את הבחירות בקלפי בתחרות, למשל כשמקשרים בין מועמדים ומפלגות לבין מספר הקולות שלהם.

במסמך הזה מוסבר על BallotSelection ועל ישויות המשנה שלו:

  • BallotSelection
    • CandidateSelection
    • PartySelection
    • BallotMeasureSelection
    • SpecialBallotSelection

בוחרים אחד מסוגי הפידים הבאים כדי לקבל מידע נוסף על השימוש ב-BallotSelection ועל הרכיבים שקיימים בו באופן מובנה עבור סוג הפיד הזה.


BallotSelection

BallotSelection הוא רכיב מופשט עם שלושה סוגים שמשמשים בהתאם לסוג התחרות:

  • CandidateSelection: משתמשים בtype של BallotSelection כשהתחרות היא למועמד אחד או יותר. הוא מקשר את הבחירה בפתק ההצבעה לרכיבי Candidate.
  • PartySelection: משתמשים בtype הזה של BallotSelection כאשר סוג התחרות הוא Party, למשל תחרות יחסית בין מפלגות.
  • BallotMeasureSelection: משתמשים בסוג הזה של BallotSelection כדי לייצג אפשרויות בחירה אפשריות בBallotMeasureContest.
  • SpecialBallotSelection: סוג הBallotSelection הזה משמש לצבירה של ספירת קולות (למשל, צבירה של כמה מועמדים לקטגוריה 'אחרים') ולסוגים שונים של קולות לא תקפים (כלומר, פתקי הצבעה ריקים, פתקי הצבעה פסולים וקולות 'אף אחד מהמועמדים').

מאפיינים

בטבלה הבאה מתוארים המאפיינים של BallotSelection:

מאפיין חובה? סוג תיאור
objectId חובה ID מזהה פנימי ייחודי שמשמש רכיבים אחרים כדי ליצור הפניה לרכיב הזה.

רכיבים

בטבלה הבאה מתוארים הרכיבים של BallotSelection:

רכיב ריבוי סוג תיאור
SequenceOrder ‫0 או 1 integer

מציין סדר ברירת מחדל לבחירת פריטים להצגה בפתק ההצבעה.

אם המאפיין SequenceOrder לא מופיע בפיד, לא מניחים שקיימת הזמנה.

CandidateSelection

משתמשים ב-CandidateSelection כדי לזהות את הבחירות בקלפי בתחרות בין מועמדים, כולל מועמדים שלא מופיעים בקלפי.

CandidateSelection יורש את המאפיינים והאלמנטים של BallotSelection. אפשר לכלול הפניות לכמה רכיבי Candidate אם יש צורך בכך, למשל, אם הבחירה בקלפי היא לכרטיס של כמה מועמדים.

כשמפנים לכמה מועמדים לכרטיס, לפעמים חשוב לשמור על הסדר של המועמדים. במקרים כאלה, אנחנו מצפים שהאפליקציה היוצרת תציג את ההפניות לרכיבי Candidate בתוך CandidateIds בהתאם לסדר שנקבע. לדוגמה, הסדר של המועמדים צריך להיות זהה לסדר של ההפניות לאלמנט Office בתוך OfficeIds ב-Contest מסוג CandidateContest.

אם יש יותר מאובייקט Candidate אחד, הם יוצגו למשתמש בסדר הבא:

  • כל המועמדים עם IsTopTicket שהוגדר ל-true מופיעים לפני כל המועמדים ללא ערך IsTopTicket. הם מוצגים לפני כל המועמדים שבהם הערך של IsTopTicket הוא false. הכי טוב לבחור מועמד אחד ללא ערך IsTopTicket, או שני מועמדים שאחד מהם מוגדר עם IsTopTicket בערך true. אם התנאים האלה לא מתקיימים, יקרו הדברים הבאים:
    • כל המועמדים עם הערך IsTopTicket שמוגדר ל-true מוצגים בסדר לא מוגדר.
    • כל המועמדים שבהם IsTopTicket לא מופיע מוצגים בסדר לא מוגדר.
    • כל המועמדים עם הערך IsTopTicket שמוגדר ל-false מוצגים בסדר לא מוגדר.

תחביר ה-XML של CandidateSelection הוא: <BallotSelection xsi:type="CandidateSelection">.

רכיבים

בטבלה הבאה מתוארים הרכיבים של CandidateSelection:

רכיב ריבוי סוג תיאור
CandidateIds 1 IDREFS מזהים ייחודיים של רכיב Candidate אחד או יותר. משתמשים כדי לשייך מועמד לבחירת המועמד בפתק ההצבעה. התכונה הזו שימושית גם כשבוחרים כמה מועמדים, למשל כשבוחרים יחד במועמד לנשיאות ובמועמד לסגן הנשיא.
EndorsementPartyIds ‫0 או יותר IDREFS מזהה ייחודי של שתי ישויות Party או יותר. מדובר בהסדר שבו מפלגות פוליטיות מציגות את אותו מועמד בפתק הצבעה.
IncludedInAggregation ‫0 או 1 boolean האם קולות הבחירה נכללים בAggregateBallotSelection של התחרות. אם לא מציינים ערך, ברירת המחדל היא false.
IsWriteIn ‫0 או 1 boolean מציין אם המועמד הוא מועמד שהמצביעים יכולים לרשום את שמו. ערך ברירת המחדל הוא false.

דוגמאות

XML

    <BallotSelection objectId="cs10861" xsi:type="CandidateSelection">
      <CandidateIds>can10861a can10861b</CandidateIds>
    </BallotSelection>

JSON

    "BallotSelection": [
      {
        "@type": "CandidateSelection",
        "objectId": "cs10861",
        "CandidateIds": [
          "can10861a",
          "can10861b"
        ]
      }
    ]

PartySelection

אפשר להשתמש בסימן PartySelection כדי לזהות בחירות בקלפי שקשורות למפלגה, כמו בחירה ברשימת מפלגה בקלפי.

PartySelection מקבל בירושה את המאפיינים והאלמנטים של BallotSelection. תחביר ה-XML של PartySelection הוא: <BallotSelection xsi:type="PartySelection" ... />.

רכיבים

בטבלה הבאה מתוארים הרכיבים של PartySelection:

רכיב ריבוי סוג תיאור
IncludedInAggregation ‫0 או 1 boolean האם קולות הבחירה נכללים בAggregateBallotSelection של התחרות. אם לא מציינים ערך, ברירת המחדל היא false.
PartyIds 1 IDREFS מזהה ייחודי של רכיב Party אחד או יותר. משתמשים בו כדי לשייך צד אחד או יותר לבחירת הצד.

דוגמאות

XML

    <BallotSelection objectId="ps150" xsi:type="PartySelection">
      <PartyIds>par100</PartyIds>
    </BallotSelection>

JSON

    "BallotSelection": [
      {
        "@type": "PartySelection",
        "objectId": "ps150",
        "PartyIds": [
          "par100"
        ]
      }
    ]

BallotMeasureSelection

אפשר להשתמש ב-BallotMeasureSelection כדי לזהות בחירות בקלפי שכוללות הצבעה על הצעה, כמו משאלי עם.

BallotMeasureSelection מקבל בירושה את המאפיינים והאלמנטים של BallotSelection. תחביר ה-XML של BallotMeasureSelection הוא: <BallotSelection xsi:type="BallotMeasureSelection" ... />.

רכיבים

בטבלה הבאה מתוארים הרכיבים של BallotMeasureSelection:

רכיב ריבוי סוג תיאור
ExternalIdentifiers ‫0 או 1 ExternalIdentifiers משייך מזהה לבחירה של משאל עם. צריך לציין מזהה יציב.
Selection 1 InternationalizedText מציין אפשרות זמינה בפתק ההצבעה, למשל Yes או No.

דוגמאות

XML

    <BallotSelection objectId="bms00" xsi:type="BallotMeasureSelection">
      <ExternalIdentifiers>
        <ExternalIdentifier>
          <Type>other</Type>
          <OtherType>stable</OtherType>
          <Value>bmc0_yes</Value>
        </ExternalIdentifier>
      </ExternalIdentifiers>
      <Selection>
        <Text language="en">Yes</Text>
      </Selection>
    </BallotSelection>

JSON

    "BallotSelection": [
      {
        "@type": "BallotMeasureSelection",
        "objectId": "bms00",
        "ExternalIdentifiers": {
          "ExternalIdentifier" : [
            {
              "Type": "other",
              "OtherType": "stable",
              "Value": "bmc0_yes"
            }
          ]
        },
        "Selection": {
          "Text": [
            {
              "value": "Yes",
              "language": "en"
            }
          ]
        }
      }
    ]

XML

    <BallotSelection objectId="bms00" xsi:type="BallotMeasureSelection">
      <ExternalIdentifiers>
        <ExternalIdentifier>
          <Type>other</Type>
          <OtherType>stable</OtherType>
          <Value>bmc0_yes</Value>
        </ExternalIdentifier>
      </ExternalIdentifiers>
      <Selection>
        <Text language="en">Yes</Text>
      </Selection>
    </BallotSelection>

JSON

    "BallotSelection": [
      {
        "@type": "BallotMeasureSelection",
        "objectId": "bms00",
        "ExternalIdentifiers": {
          "ExternalIdentifier" : [
            {
              "Type": "other",
              "OtherType": "stable",
              "Value": "bmc0_yes"
            }
          ]
        },
        "Selection": {
          "Text": [
            {
              "value": "Yes",
              "language": "en"
            }
          ]
        }
      }
    ]

SpecialBallotSelection

סוג BallotSelection הזה משמש לצבירת נתוני הצבעה (למשל, צבירה של כמה מועמדים בקטגוריה 'אחרים') ולסוגים שונים של הצבעות לא תקפות (כלומר, פתקי הצבעה ריקים, פסולים או פגומים, והצבעות מסוג 'אף אחד מהמועמדים').

אסור להשתמש ב-SpecialBallotSelection ברכיב המשנה הכללי BallotSelection של Contest. במקום זאת, יש לו שדות נפרדים משלו ב-Contest, כלומר AggregateBallotSelection, BlankBallotSelection, NoneOfTheAboveBallotSelection ו-NullBallotSelection. פרטים נוספים מופיעים במאמר בנושא רכיבי Contest.

רכיבים

בטבלה הבאה מתוארים הרכיבים של SpecialBallotSelection:

רכיב ריבוי סוג תיאור
CountedInTotal ‫0 או 1 boolean האם ספירת הקולות של בחירת הישות נכללת בספירת הקולות הכוללת שנחשבת משמעותית. אם לא מציינים ערך, ברירת המחדל היא true.
ExternalIdentifiers ‫0 או 1 ExternalIdentifiers משייך מזהה לבחירה של משאל עם. צריך לציין מזהה יציב.
Selection 1 InternationalizedText מזינים שם לבחירה הזו בפתק ההצבעה, כמו 'אחרים' או 'אף אחת מהאפשרויות שלמעלה'.

דוגמאות

XML

    <AggregateBallotSelection objectId="selection3">
      <Selection>
        <Text language="en">Other Candidates</Text>
      </Selection>
      <ExternalIdentifiers>
        <ExternalIdentifier>
          <Type>other</Type>
          <OtherType>stable</OtherType>
          <Value>selection3</Value>
        </ExternalIdentifier>
      </ExternalIdentifiers>
    </AggregateBallotSelection>
    <!-- Counts of ballots left blank -->
    <BlankBallotSelection objectId="selection4">
      <Selection>
        <Text language="en">Blank ballots</Text>
      </Selection>
      <!-- These ballots count in the total and can affect majorities -->
      <CountedInTotal>true</CountedInTotal>
      <ExternalIdentifiers>
        <ExternalIdentifier>
          <Type>other</Type>
          <OtherType>stable</OtherType>
          <Value>selection4</Value>
        </ExternalIdentifier>
      </ExternalIdentifiers>
    </BlankBallotSelection>
    <!-- Votes for "None of the above" option on the ballot -->
    <NoneOfTheAboveBallotSelection objectId="selection5">
      <!--
        The NOTA selection optiona as it appears on the ballot, often
        "None of the above", "None", or "Uncommitted"
      -->
      <Selection>
        <Text language="en">None</Text>
      </Selection>
      <!-- These ballots count in the total and can affect majorities -->
      <CountedInTotal>true</CountedInTotal>
      <ExternalIdentifiers>
        <ExternalIdentifier>
          <Type>other</Type>
          <OtherType>stable</OtherType>
          <Value>selection5</Value>
        </ExternalIdentifier>
      </ExternalIdentifiers>
    </NoneOfTheAboveBallotSelection>
    <!--
      Counts of null or spoiled ballots, i.e. ballots that have been marked in
      a way that the vote cannot be counted
    -->
    <NullBallotSelection objectId="selection5">
      <!--
        How these ballots are often called in a given country, often
        "null" or "spoiled"
      -->
      <Selection>
        <Text language="en">Spoiled ballots</Text>
      </Selection>
      <!--
        These ballots do count in the total and are treated as the same as
        if this vote did not happen at all
      -->
      <CountedInTotal>false</CountedInTotal>
      <ExternalIdentifiers>
        <ExternalIdentifier>
          <Type>other</Type>
          <OtherType>stable</OtherType>
          <Value>selection5</Value>
        </ExternalIdentifier>
      </ExternalIdentifiers>
    </NullBallotSelection>
      

JSON

    "AggregateBallotSelection": {
      "objectId": "selection3",
      "Selection": {
        "Text": {
          "@language": "en",
          "#text": "Other Candidates"
        }
      },
      "ExternalIdentifiers": {
        "ExternalIdentifier": {
          "Type": "other",
          "OtherType": "stable",
          "Value": "selection3"
        }
      },
    },
    "BlankBallotSelection": {
      "objectId": "selection4",
      "Selection": {
        "Text": {
          "@language": "en",
          "#text": "Blank Ballots"
        }
      },
      "CountedInTotal": true,
      "ExternalIdentifiers": {
        "ExternalIdentifier": {
          "Type": "other",
          "OtherType": "stable",
          "Value": "selection4"
        }
      }
    },
    "NoneOfTheAboveBallotSelection": {
      "objectId": "selection5",
      "Selection": {
        "Text": {
          "@language": "en",
          "#text": "None"
        }
      },
      "CountedInTotal": true,
      "ExternalIdentifiers": {
        "ExternalIdentifier": {
          "Type": "other",
          "OtherType": "stable",
          "Value": "selection5"
        }
      }
    },
    "NullBallotSelection": {
      "objectId": "selection5",
      "Selection": {
        "Text": {
          "@language": "en",
          "#text": "Spoiled ballots"
        }
      },
      "CountedInTotal": false,
      "ExternalIdentifiers": {
        "ExternalIdentifier": {
          "Type": "other",
          "OtherType": "stable",
          "Value": "selection5"
        }
      }
    }