Select_one
Las preguntas select_one permiten a los encuestados elegir exactamente una opción de una lista predefinida de opciones.
El tipo de pregunta select_one solicita al encuestado que elija exactamente una opción de una lista predefinida. De forma predeterminada, las opciones se renderizan como botones de radio, pero hay una amplia gama de opciones de apariencia disponibles para cambiar el diseño y el comportamiento.
Especificación básica de XLSForm
Hoja de trabajo survey:
| type | name | label |
|---|---|---|
| select_one yesno | consent | ¿El encuestado dio su consentimiento? |
Hoja de trabajo choices:
| list_name | name | label |
|---|---|---|
| yesno | yes | Sí |
| yesno | no | No |
El listname en select_one listname debe coincidir con la columna list_name en la hoja de trabajo choices.
Para obtener más detalles, consulte la especificación de XLSForm.
Usos
Las preguntas select_one se usan para:
- Preguntas de Sí/No
- Opción múltiple de respuesta única (p. ej., nivel educativo, género, estado civil)
- Calificaciones categóricas (p. ej., deficiente / regular / bueno / excelente)
- Selecciones en cascada (vinculadas) donde las opciones se filtran según una respuesta anterior
- Selección de país, región, distrito u otra unidad administrativa
Opciones de apariencia
Especifique un valor en la columna appearance para cambiar cómo se muestran las opciones:
| Apariencia | Descripción |
|---|---|
| (ninguna) | Botones de radio predeterminados, uno por línea |
minimal | Menú desplegable/spinner único en lugar de botones de radio |
quick | Avanza automáticamente a la siguiente pregunta inmediatamente después de la selección (solo móvil) |
compact | Cuadrícula compacta de opciones — el número de columnas se ajusta al ancho de la pantalla |
compact-N | Cuadrícula compacta forzada a N columnas (p. ej., compact-3) |
quickcompact | Combina quick y compact |
quickcompact-N | Combina quick y compact con N columnas forzadas |
horizontal | Opciones organizadas en una fila horizontal (web) |
horizontal-compact | Horizontal, espaciado compacto (web) |
likert | Fila de escala Likert — etiquetas arriba, botones de radio abajo |
label | Muestra solo etiquetas de opciones sin entradas (use en par con list-nolabel) |
list-nolabel | Muestra solo las entradas sin etiquetas (use en par con label) |
columns(N) | Mostrar en N columnas (extensión de rtSurvey, p. ej., columns(3)) |
distress | Widget de iconos emocionales de angustia psicológica de Kessler (K10) |
search-api(...) | Búsqueda dinámica — carga opciones desde una API en tiempo de ejecución |
Ejemplo: Escala Likert
| type | name | label | appearance |
|---|---|---|---|
| select_one satisfaction | service_rating | ¿Qué tan satisfecho está con el servicio? | likert |
Ejemplo: Compacto en 3 columnas
| type | name | label | appearance |
|---|---|---|---|
| select_one regions | region | Seleccionar región | compact-3 |
Selecciones en cascada
Una selección en cascada (vinculada) filtra las opciones según el valor seleccionado en una pregunta anterior. Use la columna choice_filter con el nombre de una columna de su hoja de trabajo choices.
survey:
| type | name | label | choice_filter |
|---|---|---|---|
| select_one province | province | Seleccionar provincia | |
| select_one district | district | Seleccionar distrito | province_name = ${province} |
choices:
| list_name | name | label | province_name |
|---|---|---|---|
| province | nairobi | Nairobi | |
| province | mombasa | Mombasa | |
| district | westlands | Westlands | nairobi |
| district | kasarani | Kasarani | nairobi |
| district | nyali | Nyali | mombasa |
| district | likoni | Likoni | mombasa |
Cuando el encuestado selecciona nairobi, solo Westlands y Kasarani aparecen en la lista de distritos.
El nombre de columna usado en choice_filter (p. ej., province_name) debe existir en la hoja de trabajo choices. El ${province} referencia el campo de encuesta llamado province.
Uso del valor seleccionado en expresiones
Referencie el valor seleccionado (no la etiqueta) con ${fieldname}:
relevant: ${consent} = 'yes'
Para obtener la etiqueta de la opción en lugar del valor, use choice-label():
calculate: choice-label(${education_level}, ${education_level})
Opción “Otro” con texto libre
Un patrón común es incluir una opción “otro” que revela un campo de texto:
| type | name | label | relevant |
|---|---|---|---|
| select_one occupation | job | ¿Cuál es su ocupación? | |
| text | job_other | Por favor especifique | ${job} = 'other' |
choices:
| list_name | name | label |
|---|---|---|
| occupation | farmer | Agricultor |
| occupation | trader | Comerciante |
| occupation | student | Estudiante |
| occupation | other | Otro (por favor especifique) |
Mejores prácticas
- Mantenga las listas cortas y mutuamente excluyentes; si los encuestados pueden querer más de una, use
select_multiple. - Ponga la respuesta más común primero, u ordene alfabéticamente para listas largas.
- Incluya siempre una opción “No sé” o “Prefiero no responder” donde sea relevante.
- Use
minimal(desplegable) para listas con más de 7–8 opciones en móvil para ahorrar espacio en pantalla. - Para selecciones en cascada, agregue todas las columnas de filtro en la hoja de trabajo choices antes de construir el formulario.
Limitaciones
- Un encuestado solo puede seleccionar una opción; use
select_multiplepara preguntas de múltiples respuestas. - La apariencia
likertfunciona mejor con 5–7 opciones que caben en una línea. - El avance automático
quickes solo para móvil; no tiene efecto en formularios web.