Select_one
As perguntas select_one permitem que os respondentes escolham exatamente uma opção de uma lista predefinida de opções.
O tipo de pergunta select_one solicita ao respondente que escolha exatamente uma opção de uma lista predefinida. Por padrão, as opções são renderizadas como botões de opção, mas há uma ampla gama de opções de aparência disponíveis para alterar o layout e o comportamento.
Especificação básica do XLSForm
Planilha survey:
| type | name | label |
|---|---|---|
| select_one yesno | consent | O respondente deu consentimento? |
Planilha choices:
| list_name | name | label |
|---|---|---|
| yesno | yes | Sim |
| yesno | no | Não |
O listname em select_one listname deve corresponder à coluna list_name na planilha de choices.
Para mais detalhes, consulte a especificação do XLSForm.
Usos
As perguntas select_one são usadas para:
- Perguntas de Sim/Não
- Múltipla escolha de resposta única (por exemplo, nível de educação, gênero, estado civil)
- Classificações categóricas (por exemplo, ruim / regular / bom / excelente)
- Seleções cascata (vinculadas) onde as opções são filtradas com base em uma resposta anterior
- Seleção de país, região, distrito ou outra unidade administrativa
Opções de aparência
Especifique um valor na coluna appearance para alterar como as opções são exibidas:
| Aparência | Descrição |
|---|---|
| (nenhuma) | Botões de opção padrão, um por linha |
minimal | Dropdown/spinner único em vez de botões de opção |
quick | Avança automaticamente para a próxima pergunta imediatamente após a seleção (somente mobile) |
compact | Grade compacta de opções — o número de colunas se ajusta à largura da tela |
compact-N | Grade compacta forçada para N colunas (por exemplo, compact-3) |
quickcompact | Combina quick e compact |
quickcompact-N | Combina quick e compact com N colunas forçadas |
horizontal | Opções dispostas em uma linha horizontal (web) |
horizontal-compact | Horizontal, espaçamento compacto (web) |
likert | Linha de escala Likert — rótulos acima, botões de opção abaixo |
label | Mostra apenas rótulos de opções sem entradas (use em par com list-nolabel) |
list-nolabel | Mostra apenas as entradas sem rótulos (use em par com label) |
columns(N) | Exibir em N colunas (extensão rtSurvey, por exemplo, columns(3)) |
distress | Widget de ícone de angústia psicológica Kessler (K10) |
search-api(...) | Busca dinâmica — carrega opções de uma API em tempo de execução |
Exemplo: Escala Likert
| type | name | label | appearance |
|---|---|---|---|
| select_one satisfaction | service_rating | Quão satisfeito você está com o serviço? | likert |
Exemplo: 3 colunas compactas
| type | name | label | appearance |
|---|---|---|---|
| select_one regions | region | Selecione a região | compact-3 |
Seleções cascata
Uma seleção cascata (vinculada) filtra as opções com base no valor selecionado em uma pergunta anterior. Use a coluna choice_filter com o nome de uma coluna da planilha de choices.
survey:
| type | name | label | choice_filter |
|---|---|---|---|
| select_one province | province | Selecione a província | |
| select_one district | district | Selecione o distrito | province_name = ${province} |
choices:
| list_name | name | label | province_name |
|---|---|---|---|
| province | nairobi | Nairóbi | |
| province | mombasa | Mombaça | |
| district | westlands | Westlands | nairobi |
| district | kasarani | Kasarani | nairobi |
| district | nyali | Nyali | mombasa |
| district | likoni | Likoni | mombasa |
Quando o respondente seleciona nairobi, apenas Westlands e Kasarani aparecem na lista de distritos.
O nome da coluna usado em choice_filter (por exemplo, province_name) deve existir na planilha de choices. O ${province} referencia o campo do formulário chamado province.
Usando o valor selecionado em expressões
Referencie o valor selecionado (não o rótulo) com ${fieldname}:
relevant: ${consent} = 'yes'
Para obter o rótulo da opção em vez do valor, use choice-label():
calculate: choice-label(${education_level}, ${education_level})
Opção “Outro” com texto livre
Um padrão comum é incluir uma opção “outro” que revela um campo de texto:
| type | name | label | relevant |
|---|---|---|---|
| select_one occupation | job | Qual é a sua ocupação? | |
| text | job_other | Por favor, especifique | ${job} = 'other' |
choices:
| list_name | name | label |
|---|---|---|
| occupation | farmer | Agricultor |
| occupation | trader | Comerciante |
| occupation | student | Estudante |
| occupation | other | Outro (por favor, especifique) |
Práticas recomendadas
- Mantenha as listas curtas e mutuamente exclusivas — se os respondentes podem querer mais de uma, use
select_multiple. - Coloque a resposta mais comum primeiro, ou ordene alfabeticamente para listas longas.
- Sempre inclua uma opção “Não sei” ou “Prefiro não responder” onde relevante.
- Use
minimal(dropdown) para listas com mais de 7 a 8 opções no celular para economizar espaço na tela. - Para seleções cascata, adicione todas as colunas de filtro na planilha de choices antes de construir o formulário.
Limitações
- Um respondente pode selecionar apenas uma opção — use
select_multiplepara perguntas de múltiplas respostas. - A aparência
likertfunciona melhor com 5 a 7 opções que cabem em uma linha. - O avanço automático
quické apenas para dispositivos móveis; não tem efeito em formulários web.