On this page
check_box
Select_multiple
Select_multiple 질문은 응답자가 미리 정의된 목록에서 하나 이상의 옵션을 선택할 수 있게 합니다.
select_multiple 질문 유형은 응답자가 하나 이상의 옵션을 선택할 수 있는 목록을 표시합니다. 기본적으로 선택지는 체크박스로 렌더링됩니다. 저장된 값은 선택된 모든 선택지 값의 공백으로 구분된 목록입니다.
기본 XLSForm 사양
survey 워크시트:
| type | name | label |
|---|---|---|
| select_multiple crops | crops_grown | 가구에서 어떤 작물을 재배합니까? |
choices 워크시트:
| list_name | name | label |
|---|---|---|
| crops | maize | 옥수수 |
| crops | beans | 콩 |
| crops | rice | 쌀 |
| crops | vegetables | 채소 |
| crops | other | 기타 |
자세한 내용은 XLSForm 사양을 참조하세요.
저장된 데이터 형식
내보낸 열에는 선택된 값의 공백으로 구분된 목록이 포함됩니다:
maize beans vegetables
표현식에서 select_multiple 값을 테스트할 때는 = 대신 selected() 함수를 사용합니다 (아래 참조).
용도
Select_multiple 질문은 다음 용도로 사용됩니다:
- 여러 해당 답변 수집 (예: 소득원, 재배 작물, 증상)
- 체크박스 스타일 동의 항목 (예: “해당하는 모든 것을 선택하세요”)
- 언어 또는 기술 목록
- 여러 답변이 동시에 유효한 모든 질문
Appearance 옵션
| Appearance | 설명 |
|---|---|
| (없음) | 기본 체크박스, 한 줄에 하나 |
minimal | 드롭다운 다중 선택 위젯 |
compact | 컴팩트 그리드, 화면 너비에 맞게 열 조정 |
compact-N | N열로 강제된 컴팩트 그리드 |
horizontal | 가로로 배열된 선택지 (웹) |
horizontal-compact | 가로, 컴팩트 간격 (웹) |
label | 체크박스 없이 레이블만 표시 (list-nolabel과 함께 사용) |
list-nolabel | 레이블 없이 체크박스만 표시 (label과 함께 사용) |
columns(N) | N열로 표시 (rtSurvey 확장) |
예시: 3열 컴팩트 레이아웃
| type | name | label | appearance |
|---|---|---|---|
| select_multiple symptoms | symptoms | 관찰된 모든 증상을 선택하세요 | compact-3 |
표현식에서 selected() 사용
저장된 값은 공백으로 구분된 문자열이므로, 특정 선택이 선택되었는지 테스트하려면 반드시 selected()를 사용해야 합니다. =를 사용하면 올바르게 작동하지 않습니다.
relevant에서
“기타"가 선택된 경우에만 후속 질문 표시:
| type | name | label | relevant |
|---|---|---|---|
| select_multiple crops | crops_grown | 어떤 작물을 재배합니까? | |
| text | crops_other | 다른 작물을 명시해 주세요 | selected(${crops_grown}, 'other') |
constraint에서
최소 2개의 선택 요구:
| type | name | constraint | constraint_message |
|---|---|---|---|
| select_multiple issues | issues | count-selected(.) >= 2 | 최소 2개의 문제를 선택하세요 |
최대 3개로 제한:
| type | name | constraint | constraint_message |
|---|---|---|---|
| select_multiple priorities | priorities | count-selected(.) <= 3 | 최대 3개의 우선순위를 선택하세요 |
calculate에서 — 선택된 레이블 결합
selected-at(), count-selected(), choice-label()을 결합하여 읽기 가능한 요약 만들기:
| type | name | calculation |
|---|---|---|
| calculate | crops_summary | join(’, ‘, ${crops_grown}) |
“해당 없음” / 독점 옵션
일반적인 패턴은 하나의 옵션을 다른 모든 옵션과 상호 배타적으로 만드는 것입니다. constraint를 사용하여 강제합니다:
| type | name | label | constraint | constraint_message |
|---|---|---|---|---|
| select_multiple issues | issues | 현재 있는 모든 문제를 선택하세요 | not(selected(., 'none') and count-selected(.) > 1) | “없음"은 다른 옵션과 함께 선택할 수 없습니다 |
choices:
| list_name | name | label |
|---|---|---|
| issues | water | 물 부족 |
| issues | roads | 도로 불량 |
| issues | health | 의료 서비스 부족 |
| issues | none | 해당 없음 |
선택 횟수 세기 및 요약
| 함수 | 예시 | 결과 |
|---|---|---|
count-selected(field) | count-selected(${crops_grown}) | 선택된 선택지 수 |
selected(field, value) | selected(${crops_grown}, 'maize') | true/false |
selected-at(field, index) | selected-at(${crops_grown}, 0) | 첫 번째 선택된 값 |
choice-label(field, value) | choice-label(${crops_grown}, 'maize') | 값의 레이블 |
모범 사례
relevant,constraint,calculate에서 항상selected()를 사용합니다 —=또는!=를 절대 사용하지 않습니다.- 질문 설계에 필요한 경우 최대 선택 수를 제한하는 제약 조건을 추가합니다.
- 선택 없음이 유효한 답변인 경우 “없음” 또는 “해당 없음” 옵션을 포함합니다.
- 긴 목록 (15개 이상)의 경우
minimal(다중 선택 드롭다운)을 사용하여 과도한 스크롤을 피합니다. - 데이터를 내보내고 분석 도구에서 문자열 분할을 사용합니다 — 공백으로 구분된 형식은 피벗 전에 분할이 필요합니다.
제한 사항
- Select_multiple 값은
=로 직접 비교할 수 없습니다. 항상selected()를 사용합니다. - 컴팩트 appearance는 매우 긴 선택지 레이블에서 잘 렌더링되지 않을 수 있습니다.
choice_filter로 선택지를 필터링할 때select_one과 마찬가지로 표시된 모든 선택지에 필터링이 적용됩니다.
이 페이지가 도움이 되었나요?