Select from file
select_one_from_file e select_multiple_from_file carregam escolhas dinamicamente a partir de um ficheiro CSV ou XML externo anexado ao formulário.
select_one_from_file e select_multiple_from_file funcionam como select_one e select_multiple, mas em vez de definir escolhas na folha de trabalho choices, as escolhas são carregadas de um ficheiro CSV ou XML externo anexado ao formulário. Isto é útil quando a sua lista de escolhas é muito longa, muda frequentemente ou precisa de ser atualizada sem reconstruir o formulário inteiro.
Especificação XLSForm Básica
| type | name | label |
|---|---|---|
| select_one_from_file health_facilities.csv | facility | Selecione a unidade de saúde |
| select_multiple_from_file crops.csv | crops | Que culturas o agregado familiar cultiva? |
O nome do ficheiro após o nome do tipo deve corresponder ao nome do ficheiro que anexa ao carregar o formulário.
Formato do ficheiro CSV
O seu ficheiro CSV deve ter pelo menos duas colunas: name (o valor armazenado) e label (o texto exibido). Pode adicionar qualquer número de colunas extra para filtragem.
health_facilities.csv:
name,label,district,type
HF001,Clínica Central de Nairobi,Nairobi,clinic
HF002,Centro de Saúde de Westlands,Nairobi,health_centre
HF003,Hospital Distrital de Kisumu,Kisumu,hospital
Filtrar escolhas
Use a coluna choice_filter para mostrar apenas as escolhas que correspondem ao contexto atual. Referencie as colunas do CSV diretamente com o nome da coluna (sem ${}):
| type | name | label | choice_filter |
|---|---|---|---|
| select_one districts.csv | district | Selecione o distrito | |
| select_one_from_file health_facilities.csv | facility | Selecione a unidade | district = ${district} |
Neste exemplo, apenas as unidades no distrito selecionado são mostradas. O district em choice_filter refere-se à coluna district no ficheiro CSV; ${district} refere-se ao campo do formulário chamado district.
Utilizações
As perguntas de seleção a partir de ficheiro são comummente usadas para:
- Listas de escolha longas — unidades de saúde, escolas, aldeias, listas de espécies (centenas ou milhares de itens)
- Listas frequentemente atualizadas — quando a lista mestre muda entre rondas de inquérito, atualize apenas o CSV sem reconstruir o formulário
- Dados de referência partilhados — um ficheiro CSV usado em múltiplos formulários
- Seleções em cascata filtradas — carregue todas as regiões/distritos/aldeias num ficheiro, depois filtre pela seleção pai
Anexar o ficheiro
Quando carregar o seu formulário para o rtSurvey, anexe o ficheiro CSV como um anexo de media. O nome do ficheiro na definição do formulário deve corresponder exatamente ao nome do ficheiro do anexo.
Os nomes de ficheiro são sensíveis a maiúsculas e minúsculas. Health_Facilities.csv e health_facilities.csv são tratados como ficheiros diferentes.
Usar choice-label() com from-file
Para exibir a etiqueta de uma escolha selecionada num campo de nota ou cálculo:
| type | name | label | calculation |
|---|---|---|---|
| select_one_from_file health_facilities.csv | facility | Selecione a unidade | |
| calculate | facility_label | choice-label(${facility}, ${facility}) | |
| note | summary | Unidade selecionada: ${facility_label} |
Melhores Práticas
- Mantenha os seus ficheiros CSV abaixo de 5.000 linhas para bom desempenho em dispositivos móveis.
- Inclua sempre uma coluna
nameelabel— colunas adicionais são opcionais. - Para seleções em cascata, use um único CSV com uma coluna pai e filtre com
choice_filter. - Versione os nomes dos seus ficheiros CSV (por ex.,
facilities_v3.csv) quando fizer alterações significativas à estrutura de colunas. - Teste as expressões de filtragem cuidadosamente — um erro de digitação em
choice_filternão mostrará escolhas silenciosamente.
Limitações
- Ficheiros CSV muito grandes (10.000+ linhas) podem abrandar o carregamento do formulário, especialmente em dispositivos de baixo desempenho.
- Os ficheiros CSV devem ser carregados juntamente com o formulário — não podem ser obtidos de um URL em tempo de execução (use
search()oupulldata()para pesquisas dinâmicas). select_multiple_from_fileé menos comummente suportado entre clientes — verifique a compatibilidade antes de usar.
Comparação com search()
select_one_from_file | Aparência search() | |
|---|---|---|
| Fonte das escolhas | Ficheiro CSV/XML anexado | Consulta de base de dados do lado do servidor |
| Funciona offline | Sim (ficheiro incluído) | Requer conectividade |
| Contagem de escolhas | Limitada pela memória do dispositivo | Ilimitada (paginada) |
| Dados em tempo real | Não | Sim |
Para conjuntos de dados grandes, frequentemente alterados ou do lado do servidor, consulte Pesquisa dinâmica.