Biểu ngữ

Sử dụng BallotSelection để xác định các lựa chọn trên phiếu bầu trong một cuộc tranh cử, chẳng hạn như khi bạn liên kết các ứng cử viên và đảng với số phiếu bầu của họ.

Tài liệu này thảo luận về BallotSelection và các thực thể phụ của nó:

  • BallotSelection
    • CandidateSelection
    • PartySelection
    • BallotMeasureSelection
    • SpecialBallotSelection

Chọn một trong các loại nguồn cấp dữ liệu sau để tìm hiểu thêm về cách sử dụng BallotSelection và các phần tử vốn có của loại nguồn cấp dữ liệu đó.


BallotSelection

BallotSelection là một phần tử trừu tượng có 3 loại được dùng dựa trên loại cuộc thi:

  • CandidateSelection: Sử dụng type này của BallotSelection khi cuộc thi dành cho một hoặc nhiều ứng cử viên. Thao tác này liên kết lựa chọn phiếu bầu với các phần tử Candidate.
  • PartySelection: Sử dụng type này của BallotSelection khi loại cuộc thi là Party, chẳng hạn như cuộc thi tỷ lệ thuận của một đảng.
  • BallotMeasureSelection: Sử dụng loại BallotSelection này để biểu thị các lựa chọn có thể có trong BallotMeasureContest.
  • SpecialBallotSelection: Loại BallotSelection này được dùng để tổng hợp số phiếu bầu (ví dụ: tổng hợp nhiều ứng cử viên thành "Khác") và các loại phiếu không hợp lệ (tức là phiếu trắng, phiếu không hợp lệ hoặc phiếu bị hỏng và phiếu "không có lựa chọn nào ở trên").

Thuộc tính

Bảng sau đây mô tả các thuộc tính của BallotSelection:

Thuộc tính Bắt buộc? Loại Mô tả
objectId Bắt buộc ID Mã nhận dạng nội bộ duy nhất mà các phần tử khác dùng để tham chiếu phần tử này.

Thành phần

Bảng sau đây mô tả các phần tử cho BallotSelection:

Phần tử Số bội Loại Mô tả
SequenceOrder 0 hoặc 1 integer

Chỉ định thứ tự mặc định cho lựa chọn trên phiếu bầu nhằm mục đích hiển thị.

Nếu SequenceOrder không có trong nguồn cấp dữ liệu, thì hệ thống sẽ không giả định thứ tự nào.

CandidateSelection

Dùng CandidateSelection để xác định các lựa chọn trên phiếu bầu trong một cuộc tranh cử, bao gồm cả phiếu bầu viết tay.

CandidateSelection kế thừa các thuộc tính và phần tử của BallotSelection. Bạn có thể thêm thông tin tham chiếu đến nhiều phần tử Candidate nếu cần, ví dụ: khi lựa chọn trên phiếu bầu là cho một vé của nhiều ứng cử viên.

Khi nhiều đề xuất được tham chiếu cho một phiếu yêu cầu hỗ trợ, đôi khi bạn cần phải giữ nguyên thứ tự của các đề xuất. Trong những trường hợp này, chúng tôi mong ứng dụng tạo sẽ liệt kê các tham chiếu đến các phần tử Candidate trong CandidateIds theo sơ đồ sắp xếp hiện có. Ví dụ: thứ tự của các đề xuất phải khớp với thứ tự của các phần tử tham chiếu Office trong OfficeIds trong Contest thuộc loại CandidateContest.

Nếu bạn tham chiếu nhiều đối tượng Candidate, thì các đối tượng đó sẽ được trình bày cho người dùng theo thứ tự sau:

  • Tất cả các đề xuất có IsTopTicket được đặt thành true đều được sắp xếp trước tất cả các đề xuất không có giá trị IsTopTicket. Đến lượt, các ứng cử viên này được sắp xếp trước tất cả những ứng cử viên có IsTopTicket được đặt thành false. Lý tưởng nhất là lựa chọn được đặt với một đề xuất không có giá trị IsTopTicket hoặc có một cặp đề xuất và một trong số đó có IsTopTicket được đặt thành true. Nếu không đáp ứng các điều kiện này, thì sẽ xảy ra những trường hợp sau:
    • Tất cả các đề xuất có IsTopTicket được đặt thành true đều được trình bày theo một thứ tự không xác định.
    • Tất cả các đề xuất không có IsTopTicket đều được trình bày theo một thứ tự không xác định.
    • Tất cả các đề xuất có IsTopTicket được đặt thành false đều được trình bày theo một thứ tự không xác định.

Cú pháp XML cho CandidateSelection như sau: <BallotSelection xsi:type="CandidateSelection">.

Thành phần

Bảng sau đây mô tả các phần tử cho CandidateSelection:

Phần tử Số bội Loại Mô tả
CandidateIds 1 IDREFS Giá trị nhận dạng riêng biệt cho một hoặc nhiều phần tử Candidate. Dùng để liên kết một ứng cử viên với lựa chọn ứng cử viên trên phiếu bầu. Cũng hữu ích khi bạn chọn nhiều ứng cử viên trong phiếu bầu, chẳng hạn như một phiếu bầu chọn cả Tổng thống và Phó Tổng thống.
EndorsementPartyIds Từ 0 trở lên IDREFS Giá trị nhận dạng riêng biệt cho từ 2 thực thể Party trở lên. Đây là một thoả thuận trong đó các đảng phái chính trị liệt kê cùng một ứng cử viên trên phiếu bầu.
IncludedInAggregation 0 hoặc 1 boolean Liệu số phiếu bầu của lựa chọn có được tính vào AggregateBallotSelection của cuộc thi hay không. Được giả định là false nếu bạn không chỉ định.
IsWriteIn 0 hoặc 1 boolean Cho biết liệu ứng cử viên có phải là người được ghi thêm tên hay không. Giá trị mặc định là false.

Ví dụ

XML

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

JSON

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

PartySelection

Sử dụng PartySelection để xác định những lựa chọn trên phiếu bầu có liên quan đến một đảng, chẳng hạn như lựa chọn danh sách đảng trên phiếu bầu.

PartySelection kế thừa các thuộc tính và phần tử của BallotSelection. Cú pháp XML cho PartySelection như sau: <BallotSelection xsi:type="PartySelection" ... />.

Thành phần

Bảng sau đây mô tả các phần tử cho PartySelection:

Phần tử Số bội Loại Mô tả
IncludedInAggregation 0 hoặc 1 boolean Liệu số phiếu bầu của lựa chọn có được tính vào AggregateBallotSelection của cuộc thi hay không. Được giả định là false nếu bạn không chỉ định.
PartyIds 1 IDREFS Giá trị nhận dạng riêng biệt của một hoặc nhiều phần tử Party. Sử dụng để liên kết một hoặc nhiều bên với lựa chọn bên.

Ví dụ

XML

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

JSON

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

BallotMeasureSelection

Sử dụng BallotMeasureSelection để xác định các lựa chọn bỏ phiếu liên quan đến một biện pháp bỏ phiếu, chẳng hạn như trưng cầu dân ý.

BallotMeasureSelection kế thừa các thuộc tính và phần tử của BallotSelection. Cú pháp XML cho BallotMeasureSelection như sau: <BallotSelection xsi:type="BallotMeasureSelection" ... />.

Thành phần

Bảng sau đây mô tả các phần tử cho BallotMeasureSelection:

Phần tử Số bội Loại Mô tả
ExternalIdentifiers 0 hoặc 1 ExternalIdentifiers Liên kết một mã nhận dạng với lựa chọn về dự luật cần bỏ phiếu. Bạn phải có giá trị nhận dạng ổn định.
Selection 1 InternationalizedText Cung cấp một lựa chọn có sẵn cho phiếu bầu, chẳng hạn như Yes hoặc No.

Ví dụ

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

Loại BallotSelection này được dùng để tổng hợp số phiếu bầu (ví dụ: tổng hợp nhiều ứng cử viên thành "Khác") và các loại phiếu không hợp lệ (tức là phiếu bầu trống, phiếu bầu vô hiệu hoặc phiếu bầu bị hỏng và phiếu bầu "không có lựa chọn nào ở trên").

SpecialBallotSelection không được dùng trong phần tử con BallotSelection chung của Contest mà thay vào đó có các trường riêng biệt trên Contest, cụ thể là AggregateBallotSelection, BlankBallotSelection, NoneOfTheAboveBallotSelectionNullBallotSelection. Hãy xem các phần tử Contest để biết thêm thông tin chi tiết.

Thành phần

Bảng sau đây mô tả các phần tử cho SpecialBallotSelection:

Phần tử Số bội Loại Mô tả
CountedInTotal 0 hoặc 1 boolean Liệu số phiếu bầu của lựa chọn thực thể có được tính vào tổng số phiếu bầu được coi là đáng chú ý hay không. Được giả định là true nếu bạn không chỉ định.
ExternalIdentifiers 0 hoặc 1 ExternalIdentifiers Liên kết một mã nhận dạng với lựa chọn về dự luật cần bỏ phiếu. Bạn phải có giá trị nhận dạng ổn định.
Selection 1 InternationalizedText Cung cấp tên cho lựa chọn này trong phiếu bầu, chẳng hạn như "Khác" hoặc "Không có lựa chọn nào ở trên".

Ví dụ

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"
        }
      }
    }