Vous êtes sur la page 1sur 24

Qu'est-ce qu'un XLSForm?

XLSForm est une norme de formulaire créée pour simplifier la création de


formulaires dans Excel. La création se fait dans un format lisible par l'homme à
l'aide d'un outil familier que presque tout le monde connaît: Excel. XLSForms
fournit un standard pratique pour le partage et la collaboration sur les
formulaires de création. Ils sont simples à utiliser mais permettent la création
de formulaires complexes par une personne familiarisée avec la syntaxe décrite
ci-dessous.

Le XLSForm est ensuite converti en un XForm, un standard de formulaire ouvert


populaire, qui vous permet de créer un formulaire avec des fonctionnalités
complexes, telles que la logique de saut, de manière cohérente sur plusieurs
plateformes de collecte de données Web et mobiles. XLSForms sont compatibles
avec le sous-ensemble de fonctionnalités XForm prises en charge par Javarosa
Project. XLSForms sont pris en charge par un certain nombre de plates-formes de
collecte de données populaires.
Format de base

Chaque classeur Excel comporte généralement deux feuilles de travail: enquête et


choix. Une troisième feuille de calcul facultative appelée paramètres peut
ajouter des spécifications supplémentaires à votre formulaire et est décrite ci-
dessous.
La fiche de sondage

Cette feuille de calcul donne à votre formulaire sa structure générale et


contient la majeure partie de son contenu. Il contient la liste complète des
questions et des informations sur la manière dont elles devraient apparaître
dans le formulaire. Chaque rangée représente généralement une question.
Toutefois, certaines autres fonctionnalités décrites ci-dessous peuvent être
ajoutées au formulaire pour améliorer l'expérience utilisateur.
La fiche de choix

Cette feuille de calcul est utilisée pour spécifier les choix de réponses pour
les questions à choix multiples. Chaque ligne représente un choix de réponse.
Les choix de réponse portant le même nom de liste sont considérés comme faisant
partie d'un ensemble de choix connexe et apparaissent ensemble pour une
question. Cela permet également de réutiliser un ensemble de choix pour
plusieurs questions (par exemple, des questions oui / non).

Ces deux feuilles de calcul comportent un ensemble de colonnes obligatoires qui


doivent être présentes pour que le formulaire fonctionne. En outre, chaque
feuille de calcul comporte un ensemble de colonnes facultatives qui permettent
de contrôler davantage le comportement de chaque entrée du formulaire, mais ne
sont pas indispensables. Chaque entrée doit avoir des valeurs pour chacune des
colonnes obligatoires, mais les colonnes facultatives peuvent rester vides.

La feuille de calcul de l'enquête comporte 3 colonnes obligatoires: type,


nom et libellé.
La colonne type spécifie le type d'entrée que vous ajoutez.
La colonne name spécifie le nom unique de la variable pour cette entrée.
Deux entrées ne peuvent pas avoir le même nom.
La colonne d'étiquette contient le texte que vous voyez dans le
formulaire. Vous pouvez également utiliser des colonnes de traduction
d'étiquette.

type name label


today today
select_one gender gender Respondent’s gender?
type name label
integer age Respondent’s age?
surveychoicessettings

La feuille de calcul des choix comprend également 3 colonnes obligatoires: nom


de la liste, nom et libellé.

La colonne Nom de la liste vous permet de regrouper un ensemble de choix de


réponse associés, c’est-à-dire des choix de réponse qui doivent apparaître
ensemble sous une question.
La colonne name spécifie le nom unique de la variable pour ce choix de
réponse.
La colonne d'étiquette indique le choix de réponse exactement comme vous
souhaitez qu'il apparaisse sur le formulaire. Vous pouvez également utiliser des
colonnes de traduction d'étiquette.

list_name name label


gender transgender Transgender
gender female Female
gender male Male
gender other Other
surveychoicessettings

Les colonnes que vous ajoutez à votre classeur Excel, qu'elles soient
obligatoires ou facultatives, peuvent apparaître dans n'importe quel ordre. Les
colonnes facultatives peuvent être complètement omises. N'importe quel nombre de
lignes peut être laissé vide. Tous les formats de fichier .xls sont ignorés.
Vous pouvez donc utiliser des lignes de séparation, des ombres et autres formats
de polices pour rendre le formulaire plus lisible.

Une chose à garder à l'esprit lors de la création de formulaires dans Excel est
que la syntaxe que vous utilisez doit être précise. Par exemple, si vous écrivez
Choices ou choice au lieu de choices, le formulaire ne fonctionnera pas.
Types de questions

XLSForm prend en charge un certain nombre de types de questions. Voici quelques-


unes des options que vous pouvez entrer dans la colonne Type de la feuille de
calcul de l'enquête dans votre XLSForm:

Question type Answer input


integer Integer (i.e., whole number) input.
decimal Decimal input.
range Range input.
text Free text response.
select_one [options] Multiple choice question; only one answer can be selected.
select_multiple
Multiple choice question; multiple answers can be selected.
[options]
note Display a note on the screen, takes no input.
geopoint Collect a single GPS coordinate.
Question type Answer input
geotrace Record a line of two or more GPS coordinates.
Record a polygon of multiple GPS coordinates; the last point is the same as
geoshape
the first point.
date Date input.
time Time input.
dateTime Accepts a date and a time input.
image Take a picture or upload an image file.
audio Take an audio recording or upload an audio file.
video Take a video recording or upload a video file.
file Generic file input (txt, pdf, xls, xlsx, doc, docx, rtf, zip)
barcode Scan a barcode, requires the barcode scanner app to be installed.
calculate Perform a calculation; see the Calculation section below.
acknowledge Acknowledge prompt that sets value to “OK” if selected.
hidden A field with no associated UI element
xml-external Adds a reference to an external XML data file

GPS
Par exemple, pour collecter le nom et les coordonnées GPS d'un magasin, vous
devez écrire ce qui suit:

type name label


text store_name What is the name of this store?
geopoint store_gps Collect the GPS coordinates of this store.
surveychoicessettings

Voir la question_types XLSForm pour voir chaque type de question utilisé dans un
formulaire.
GPS avec seuil de précision

Lors de l’enregistrement des coordonnées GPS dans ODK Collect, ODK Collect
collecte automatiquement le GPS lorsque le niveau de précision atteint 5 mètres
ou moins. Vous pouvez modifier ce comportement par défaut en spécifiant un
precisionThreshold; cela pourrait être inférieur à 5 m ou supérieur à 5 m. Vous
devrez ajouter une colonne avec en-tête body :: precisionThreshold sur la
feuille de sondage de votre XLSForm. Ensuite, spécifiez votre valeur de seuil de
précision préférée pour cette colonne sur votre question de géopoint, comme dans
l'exemple ci-dessous:

type name label body::accuracyThreshold


geopoint store_gps Collect the GPS coordinates of this store. 1.5
surveychoicessettings

Voir la forme gps_accuracy_threshold pour un exemple utilisant cet attribut.

Questions à choix multiple

XLSForm prend en charge les questions select_one (sélectionnez une seule


réponse) et select_multiple (sélectionnez plusieurs réponses). La rédaction
d'une question à choix multiples nécessite l'ajout d'une feuille de calcul des
choix à votre classeur Excel. Voici un exemple de question sur select_one:

type name label


select_one yes_no likes_pizza Do you like pizza?
surveychoicessettings

list name name label


yes_no yes Yes
yes_no no No
surveychoicessettings

Notez que yes_no dans la feuille survey doit correspondre à yes_no dans la
colonne name de la feuille choices. Cela garantit que le formulaire affiche la
liste correcte des choix de réponses pour une question donnée.

Nous pouvons également ajouter des questions à choix multiples qui permettent de
sélectionner plusieurs réponses, comme ceci:

type name label


select_multiple pizza_toppings favorite_toppings What are your favorite pizza toppings?
survey

list name name label


pizza_toppings cheese Cheese
pizza_toppings pepperoni Pepperoni
pizza_toppings sausage Sausage
choices

Spécifiez autre

Pour les questions à choix multiples, les enquêtes incluent souvent une option
permettant de marquer les autres lorsque leur choix de réponse n'est pas
répertorié. Ensuite, ils sont généralement invités à spécifier l'autre option.
Ceci est possible via XLSForm en incluant or_other après le nom de la liste de
choix de réponses dans la feuille de calcul de l'enquête. La feuille de calcul
des choix reste la même. Voir ci-dessous:

type name label


select_multiple pizza_toppings or_other favorite_topping What are your favorite pizza toppings?
survey
list name name label
list name name label
pizza_toppings cheese Cheese
pizza_toppings pepperoni Pepperoni
pizza_toppings sausage Sausage
choices

Cliquez sur le lien pour consulter le questionnaire complet de pizza.

Caveat
Lorsque vous exportez des données à l'aide de cette option or_other, dans la
colonne favorite_topping, vous verrez une autre valeur. Une colonne séparée aura
la réponse pour les questions dans lesquelles l'utilisateur a sélectionné autre.
Cela alourdit l’analyse des données et nous ne recommandons donc pas la
construction or_other pour les efforts de collecte de données à grande échelle.
Voir la section Pertinente ci-dessous pour une méthode alternative plus
appropriée pour les projets à grande échelle.
Intervalle

Pour limiter les entrées entières à une plage spécifique, vous pouvez utiliser
la question de plage. Cette question peut être utilisée avec 3 paramètres
facultatifs séparés par des espaces: début, fin et étape dans une colonne de
paramètres. Les valeurs par défaut sont respectivement 0, 10 et 1. L'exemple ci-
dessous créera une question permettant de saisir de 0 à 17 avec un pas de 1.

type name label parameters


range amount What is the age of the child? start=0 end=17 step=1
survey

Métadonnées

XLSForm dispose d'un certain nombre d'options de types de données disponibles


pour la collecte de métadonnées:

Metadata type Meaning


start Start date and time of the survey.
end End date and time of the survey.
today Day of the survey.
deviceid IMEI (International Mobile Equipment Identity)
subscriberid IMSI (International Mobile Subscriber Identity)
simserial SIM serial number.
phonenumber Phone number (if available).
username Username configured (if available).
email Email address configured (if available).
Notez que certains champs de métadonnées ne s'appliquent qu'aux formulaires
basés sur un téléphone mobile.

Si je voulais que mon enquête recueille toutes ces métadonnées, je mettrais ceci
au début de l'enquête:

type name label


start start
end end
today today
deviceid deviceid
subscriberid subscriberid
simserial simserial
phonenumber phonenumber
username username
email email
survey

Notez qu’aucune étiquette n’est associée aux types de question de métadonnées.


En effet, le téléphone enregistre automatiquement ces variables. Ces questions
n'apparaîtront pas sur l'écran du téléphone, mais vous les verrez lors de la
visualisation des données de votre enquête. Le didacticiel XLSForm montre
comment les métadonnées sont utilisées dans un formulaire.

Données XML externes

Pour les utilisateurs avancés, qui doivent effectuer des requêtes complexes sur
des données externes sans restrictions, un fichier de données XML externe peut
être ajouté avec le type de question xml-external. La valeur de la colonne de
nom peut être utilisée pour faire référence à ces données dans n’importe quelle
formule (par exemple, pour un calcul, une contrainte, un facteur pertinent ou un
filtre de choix) à l’aide de la fonction instance («name»). Un fichier portant
le même nom et l'extension .xml doit être chargé avec le formulaire. Voir ci-
dessous un exemple qui nécessite le téléchargement d'un fichier appelé
houses.xml avec le formulaire.

type name label calculation


xml-external houses
How many
integer rooms
rooms?
count(instance(‘houses’)/house[rooms =
calculate count
current()/../rooms ])
survey

Astuces
Astuces régulières
Parfois, vous souhaitez ajouter un petit indice à une question de votre
formulaire, indiquant à l’utilisateur comment répondre à la question, mais vous
ne souhaitez pas que cet indice fasse partie de la question elle-même. Il est
facile d’ajouter des astuces (conseils) aux questions dans XLSForms. Ajoutez
simplement une colonne hint et ajoutez votre message de conseil ou d’astuces.
Voir ci-dessous pour un exemple.

type name label hint


Look on the signboard if the store has a
text name What is the name of this store?
signboard.
Collect the GPS coordinates of this
geopoint geopoint
store.
survey

Le didacticiel XLSForm fournit plus d'exemples de questions avec des astuces.

Conseils d'orientation

Il existe un type particulier d'indice qui n'est normalement pas indiqué dans le
formulaire. Il n'est affiché que dans des vues spéciales. Un exemple serait de
montrer ces astuces sur des impressions ou au cours d’une formation pour les
agents recenseurs. Ces astuces sont appelées indications de guidage et peuvent
être ajoutées dans la colonne guidance_hint. Voir ci-dessous pour un exemple.

type name label guidance_hint relevant


integer age Age?
text name Name? This will only be shown for age > 18. ${age} > 18
survey

Contraintes

Une façon de garantir la qualité des données consiste à ajouter des contraintes
aux champs de données de votre formulaire. Par exemple, lorsque vous demandez
l’âge d’une personne, vous souhaitez éviter les réponses impossibles, telles que
-22 ou 200. Il est facile d’ajouter des contraintes de données dans votre
formulaire. Vous ajoutez simplement une nouvelle colonne, appelée contrainte, et
tapez la formule en spécifiant les limites de la réponse. Dans l’exemple ci-
dessous, la réponse pour l’âge de la personne doit être inférieure ou égale à
150. Notez comment. dans la formule renvoie à la variable question.

type name label constraint


integer age How old are you? . <= 150
survey

Dans cet exemple, la formule. <= 150 indique que la valeur entrée. car la
question doit être inférieure ou égale à 150. Si l'utilisateur répond par 151 ou
plus, il ne sera pas autorisé à passer à la question suivante ni à soumettre le
formulaire.

D'autres expressions utiles à utiliser dans la colonne de contrainte peuvent


être trouvées ici. Regardez dans la section Opérateurs.
Message de contrainte
Si vous souhaitez inclure un message avec votre contrainte, indiquant à
l'utilisateur pourquoi la réponse n'est pas acceptée, vous pouvez ajouter une
colonne constraint_message à votre formulaire. Voir l'exemple ci-dessous.

type name label constraint constraint_message


Respondent’s Respondent must be 18 or older to complete
integer respondent_age . >=18
age the survey.
survey

Dans cet exemple, si l'utilisateur entre moins de 18 ans, le message d'erreur de


la colonne constraint_message apparaît. Plus d'exemples sur les contraintes ont
été illustrés dans ce XLSForm.

Relevant (pertinent)

Une excellente fonctionnalité de XLSForm est la possibilité de sauter une


question ou de faire apparaître une question supplémentaire en fonction de la
réponse à une question précédente. Vous trouverez ci-dessous un exemple de la
manière de le faire en ajoutant une colonne relevant (pertinente) pour une
question select_one, en utilisant notre exemple de garniture de pizza d’avant:

type name label relevant


select_one yes_no likes_pizza Do you like pizza?
select_multiple ${likes_pizza}
favorite_topping Favorite toppings
pizza_toppings or_other = ‘yes’
survey

Dans cet exemple, on demande au répondant: «Aimez-vous la pizza?». Si la réponse


est oui, la question «garniture de pizza» apparaît ci-dessous. Notez le $ {}
autour de la variable likes_pizza. Celles-ci sont nécessaires pour que le
formulaire fasse référence à la variable de la question précédente.

Dans l'exemple suivant, ci-dessous, nous utilisons la syntaxe appropriée pour


une question select_multiple, légèrement différente de l'exemple select_one
concernant la question ci-dessus.

type name label relevant


select_one yes_no likes_pizza Do you like pizza?
select_multiple
favorite_topping Favorite toppings ${likes_pizza} = ‘yes’
pizza_toppings or_other
What is your favorite selected(${favorite_topping},
text favorite_cheese
type of cheese? ‘cheese’)
survey

list name name label


pizza_toppings cheese Cheese
list name name label
pizza_toppings pepperoni Pepperoni
pizza_toppings sausage Sausage
choices

Étant donné que la question de la garniture de pizza permet plusieurs réponses,


nous devons utiliser l'expression selected($ {favorite_topping}, 'cheese'), car
nous souhaitons que la question du fromage apparaisse à chaque fois que
l'utilisateur sélectionne cheese ( fromage ) comme l'une des réponses des
réponses supplémentaires sont sélectionnées).

Nous avons mentionné précédemment qu'il existait une méthode alternative pour
spécifier d'autres questions à choix multiples, plus appropriée pour les
enquêtes à grande échelle. Cela peut être fait en utilisant la même syntaxe
pertinente de l'exemple ci-dessus:

type name label relevant


What are your
select_multiple
favorite_toppings favorite pizza
pizza_toppings
toppings?
selected(${favorite_toppings},
text favorite_toppings_other Specify other:
‘other’)
survey

list name name label


pizza_toppings cheese Cheese
pizza_toppings pepperoni Pepperoni
pizza_toppings sausage Sausage
pizza_toppings other Other
choices

Notez que vous devez inclure autre en tant que choix de réponse dans la feuille
de calcul des choix.

Formules

Les formules sont utilisées dans les colonnes de contraint, relevant et de


calculation. Vous avez déjà vu quelques exemples dans les sections Contraintes
et Pertinentes ci-dessus. Les formules vous permettent d'ajouter des
fonctionnalités supplémentaires et des mesures de qualité des données à vos
formulaires.

Les formules sont composées de fonctions et d'opérateurs (+, *, div, etc.). Une
liste complète et bien documentée des opérateurs et des fonctions est disponible
dans la documentation ODK. Pour les utilisateurs techniques, la spécification
XForms sous-jacente est le document source des fonctions prises en charge.
Calcul

Votre enquête peut effectuer des calculs en utilisant les valeurs des questions
précédentes. Dans la plupart des cas, il faudra insérer une question de calcul.
Par exemple, dans l'enquête ci-dessous, nous avons calculé le pourboire d'un
repas et l'avons affiché à l'utilisateur:

type name label calculation


decimal amount What was the price of the meal?
calculate tip ${amount} * 0.18
note display 18% tip for your meal is: ${tip}
survey

Notez que le $ {tip} de la dernière ligne sera remplacé par le montant du


pourboire lors de la visualisation et du remplissage du formulaire.

Required (Champs obligatoires)

Il est simple de cocher certaines questions comme requis dans votre formulaire.
Si vous les marquez comme il convient, l'utilisateur ne pourra pas passer à la
question suivante ou soumettre le formulaire sans saisir de réponse à cette
question.

Pour créer des questions obligatoires, ajoutez une colonne obligatoire à votre
feuille de travail. Dans cette colonne, cochez les questions requises en
écrivant oui. Voir l'exemple ci-dessous:

type name label constraint required


integer age How old are you? . <= 150 yes
survey

Required message (Message requis)

Si vous souhaitez personnaliser le message affiché aux utilisateurs lorsqu'ils


laissent une question obligatoire en blanc, vous pouvez ajouter une colonne
required_message à votre formulaire. Voir l'exemple ci-dessous.

type name label required required_message


integer respondent_age Respondent’s age yes Sorry, this answer is required.
survey

Randomize Choices (Choix aléatoires)

Pour tout type de question affichant une liste de choix, l'ordre d'affichage des
choix affichés à l'utilisateur peut être randomisé avec la colonne parameters.
Voir ci-dessous:

type parameters name label


select_one toppings randomize=true top Favorite?
survey
Pour une randomisation reproductible, une graine peut être explicitement fournie
comme indiqué ci-dessous. Pour en savoir plus sur l'algorithme de randomisation
utilisé, voir ici.

type parameters name label calculation


calculate sd once(decimal-date-time(now()))
randomize=true,
select_one toppings top Favorite?
seed=${sd}
survey

Notez que once () est utilisé pour empêcher la ré-randomisation, par exemple,
lorsqu'un brouillon d'enregistrement est chargé pour édition.

Regroupement des questions

Pour créer un groupe de questions dans votre formulaire, procédez comme suit:

type name label


begin group respondent Respondent
text name Enter the respondent’s name
text position Enter the respondent’s position within the school.
end group
survey

C'est un bon moyen de regrouper les questions liées à l'exportation et à


l'analyse des données. Notez que le groupe d'extrémité ne nécessite pas de nom
ou d'étiquette, car il est masqué dans le formulaire.

Nesting groups within groups (Groupes imbriqués)

Des groupes de questions peuvent être imbriqués les uns dans les autres:

type name label


begin group hospital Hospital
text name What is the name of this hospital?
begin group hiv_medication HIV Medication
select_one yes_no have_hiv_medication Does this hospital have HIV medication?
end group
end group
survey

Vous devez toujours mettre fin au groupe le plus récent créé en premier. Par
exemple, le premier groupe d'extrémités que vous voyez ferme le groupe de
médicaments anti-VIH et le second le groupe de patients en début
d'hospitalisation. Lorsque vous travaillez avec des groupes et que vous
continuez à recevoir des messages d'erreur lorsque vous essayez de télécharger
votre formulaire, vérifiez que pour chaque groupe de début, vous avez un groupe
de fin.

Skipping (Saut)

Une fonctionnalité intéressante de XLSForm est la possibilité de sauter un


groupe de questions en combinant la fonctionnalité de groupe avec la syntaxe
appropriée. Si vous souhaitez ignorer un groupe de questions en une fois, placez
l'attribut approprié au début du groupe, comme suit:

type name label relevant


integer age How old are you?
begin group child Child ${age} <= 5
integer muac Record this child’s mid-upper arm circumference.
select_one yes_no mrdt Is the child’s rapid diagnostic test positive?
end group
survey

Dans cet exemple, les questions des deux groupes d’enfants (muac et mrdt)
apparaissent uniquement si l’âge de l’enfant de la première question est
inférieur ou égal à cinq.

Repeats (Répétitions)

Un utilisateur peut répéter un groupe de questions en utilisant les


constructions begin repeat et end repeat:

type name label


begin repeat child_repeat
text name Child’s name
decimal birthweight Child’s birthweight
select_one male_female sex Child’s sex
end repeat
survey

list name name label


male_female male Male
male_female female Female
choices

Dans cet exemple, les champs nom, poids à la naissance et sexe sont regroupés
dans un groupe de répétition. L'utilisateur peut répéter ce groupe autant de
fois que nécessaire en sélectionnant l'option dans le formulaire pour démarrer
une autre répétition.

La colonne label est facultative pour begin repeat. L'attribution d'une


étiquette à un groupe de répétitions ajoutera l'étiquette en tant que titre au
bloc de questions répétées du formulaire.
Le résultat de la livraison XLSForm illustre un autre exemple de groupe de
répétition.

Au lieu de permettre un nombre infini de répétitions, l'utilisateur peut


spécifier un nombre exact de répétitions à l'aide de la colonne repeat_count:

type name label repeat_count


begin repeat child_repeat 3
text name Child’s name
decimal birthweight Child’s birthweight
select_one male_female sex Child’s sex
end repeat
survey

list name name label


male_female male Male
male_female female Female
choices

Dans l'exemple ci-dessus, le groupe de répétition est limité à 3 répétitions.

Certaines plates-formes prennent également en charge le nombre de répétitions


dynamiques. Dans l'exemple ci-dessous, le nombre saisi par l'utilisateur pour le
champ num_hh_members détermine le nombre de répétitions du groupe hh_member:

type name label repeat_count


Number of household
integer num_hh_members
members?
begin repeat hh_member ${num_hh_members}
text name Name
integer age Age
select_one
gender Gender
male_female
end repeat
survey

list name name label


male_female male Male
male_female female Female
choices
Multiple language support(Support multilingue)

Il est facile d’ajouter plusieurs langues à un formulaire. Vous devez simplement


nommer votre label :: language1 (code), label :: language2 (code), etc., et vos
formulaires seront disponibles dans plusieurs langues. Voir l'exemple ci-
dessous. Sélectionnez une autre langue de formulaire dans le menu déroulant de
l'application de collecte de données (il peut être situé sous la touche Menu).
Pour le formulaire ci-dessous, English et Español apparaîtront comme les options
possibles.

type name label::English (en) label::Español (es) constraint


integer age How old are you? ¿Cuántos años tienes? . <= 150
survey

La langue de la forme et la langue de l'interface utilisateur peuvent être


déterminées séparément par l'application et peuvent ne pas correspondre. Pour
faciliter la mise en correspondance des deux (à l'avenir), il est recommandé,
bien que facultatif, d'ajouter un code de langue à 2 caractères après le nom de
la langue. Les codes de langue officiels à deux caractères, appelés sous-
étiquettes, sont publiés ici (recherchez la page avec Ctrl-F ou Cmd-F).

Remarque

Vous pouvez également ajouter une colonne de langue différente pour les conseils
et les fichiers multimédias. vous utilisez simplement la construction ::
language à nouveau. Consultez le document standard XLSForm pour voir exactement
quels types d'en-têtes de colonnes peuvent accepter une modification de langue.
Médias

Vous pouvez inclure dans votre formulaire des questions d'affichage d'images ou
de lecture de fichiers vidéo ou audio. Si vous utilisez le client mobile ODK
pour la soumission de formulaire, vous devez placer les fichiers multimédias à
inclure dans le dossier / odk / forms / formname-media de votre téléphone, puis
référencer le nom exact du fichier dans la colonne Média de votre forme. Voir
ci-dessous pour un exemple sur la façon de procéder.

type name label media::image media::video


note media_example Media example example.jpg example.mp4
survey

Découvrez le Birds XLSForm qui illustre l'utilisation de fichiers multimédias.


Vous pouvez également cliquer sur le lien pour voir le formulaire Birds webform

Pre-loading CSV data


(Chargement préalable des données CSV)

Le préchargement des données est effectué lorsque l’on souhaite référencer des
données préexistantes dans un formulaire d’enquête. Vous pouvez être en mesure
de référencer des données dans votre formulaire d’enquête (l’enquête que vous
êtes en train de créer), à partir de données préexistantes dans un formulaire
d’enquête spécifique ou de toute autre source. Par exemple, si vous disposez de
données préexistantes issues d'une enquête auprès des ménages et que vous
souhaitez collecter des données de suivi sur les occupants du ménage. Vous
pouvez pouvoir référencer les données de l'enquête sur les ménages dans votre
formulaire d'enquête. Pour référencer des données préexistantes dans un
formulaire d'enquête:
Téléchargez un ou plusieurs fichiers .csv en tant que fichiers de support
lorsque vous téléchargez la définition de formulaire (de la même manière que
vous importez des fichiers de support de média, comme expliqué dans la section
Médias). La première ligne de chaque fichier .csv doit être un en-tête
comprenant:
noms uniques pour chaque colonne
les lignes suivantes qui doivent contenir les données elles-mêmes

Chaque fichier csv doit contenir au moins une colonne pouvant être utilisée pour
identifier chaque ligne de manière unique. Ces colonnes seront utilisées, au
moment de l’enquête, pour rechercher les données de la ligne à extraire de
l’enquête. Pour les colonnes qui seront utilisées pour rechercher des lignes,
ajoutez _key à la fin du nom de la colonne dans la première ligne. Toutes les
colonnes dont le nom se termine par _key seront indexées pour accélérer les
recherches sur vos appareils de sondage. Voir ci-dessous un exemple des colonnes
d'un fichier .csv

name_key name
mango Mango
orange Orange

Comment extraire des données de CSV

Vous pouvez extraire des données d'un fichier .csv en incluant un ou plusieurs
fichiers .csv dans votre formulaire au cours de la période d'enquête. Pour
chaque champ de données que vous souhaitez extraire de votre enquête:

Ajoutez un champ de calcul à votre enquête.


Donnez un nom à ce champ
Ensuite, dans la colonne de calcul, appelez la fonction pulldata (),
indiquant quel champ extraire de quelle ligne de quel fichier .csv.

Voir ci-dessous pour un exemple:

Comment extraire des données de CSV

Vous pouvez extraire des données d'un fichier .csv en incluant un ou plusieurs
fichiers .csv dans votre formulaire au cours de la période d'enquête. Pour
chaque champ de données que vous souhaitez extraire de votre enquête:

Ajoutez un champ de calcul à votre enquête.


Donnez un nom à ce champ
Ensuite, dans la colonne calculation, appelez la fonction pulldata (),
indiquant quel champ extraire de quelle ligne de quel fichier .csv.

Voir ci-dessous pour un exemple:

type name label calculation


pulldata(‘fruits’, ‘name’, ‘name_key’,
calculate fruit
‘mango’)
The fruit ${fruit} pulled from
note note_fruit
csv.
survey
Une fois que vous avez chargé des données .csv dans un champ d’enquête à l’aide
de la fonction pulldata (), vous pouvez référencer ce champ dans des conditions,
des contraintes et des libellés de pertinence ultérieurs, comme vous le feriez
pour tout autre champ renseigné par l’utilisateur.

Cliquez sur le lien pour voir un exemple de formulaire de préchargement ( pre-


loading sample form ). Le fichier .csv utilisé avec le formulaire est
disponible ici.

Remarques importantes sur l'utilisation des données préchargées

Compressez un fichier .csv volumineux dans une archive .zip avant de le


télécharger.
Enregistrez le fichier .csv au format UTF-8 si les données préchargées
contiennent des polices non anglaises ou des caractères spéciaux, ce qui
permettra à votre appareil Android de restituer correctement le texte.
Les champs de données extraits d'un fichier .csv sont considérés comme des
chaînes de texte. Par conséquent, utilisez les fonctions int () ou number ()
pour convertir un champ pré-chargé en format numérique.
Si le fichier .csv contient des données sensibles que vous ne souhaitez
peut-être pas télécharger sur le serveur, téléchargez un fichier .csv vierge
dans votre formulaire, puis remplacez-le par le fichier .csv réel en le copiant
à la main sur chacun de vos fichiers. dispositifs.

Sélection dynamique à partir de données pré-chargées

Une fois que votre formulaire contient un ou plusieurs fichiers .csv pré-
chargés, vous pouvez extraire dynamiquement les listes de choix pour les champs
select_one et select_multiple de ces fichiers .csv. Les champs à choix multiples
avec des listes de choix dynamiques suivent la même syntaxe générale que les
champs habituels statiques select_one et select_multiple décrits précédemment
dans la section Questions à choix multiples.

Ce qui suit devrait être fait:

spécifiez select_one listname ou select_multiple listname dans la colonne


type (où listname est le nom de votre liste de choix)
spécifier les styles d'apparence spéciaux dans la colonne appearance
inclure une ou plusieurs lignes pour votre nom de liste sur la feuille de
calcul des choix.

Vous trouverez ci-dessous un exemple de fiche d’enquête:

type name label appearance


select_one fruits fruits Select a fruit search(‘fruits’)
survey

Il existe trois différences lorsque la liste de choix doit être extraite de l’un
de vos fichiers .csv préchargés:

Dans la colonne Apparence:


Incluez une expression search () qui spécifie les lignes .csv à inclure dans
la liste de choix.
Si le champ doit utiliser un style d’apparence autre que celui par défaut.
Le style d’apparence autre que celui par défaut se trouve d’abord dans la
colonne, suivi d’un espace, puis de l’expression search (). [par exemple, quick
search()]
Sur la fiche de choix:
une ligne doit indiquer les colonnes .csv à utiliser pour l'étiquette et la
valeur sélectionnée. Comme suit:
Colonne list_name: spécifiez le nom de votre liste de choix comme vous
le feriez normalement.
colonne name: inclut le nom de la colonne .csv à utiliser pour
identifier de manière unique les choix sélectionnés.
colonne label: inclut le nom de la colonne .csv à utiliser pour
étiqueter les choix.
Remarque:
Si vous souhaitez inclure plusieurs colonnes dans les étiquettes,
incluez une liste de toutes les colonnes à inclure séparées par des virgules. La
colonne de nom sera renseignée de manière dynamique en fonction du nom de
colonne que vous avez indiqué, et la colonne d'étiquette sera renseignée de
manière dynamique en fonction du nom de la colonne que vous avez indiquée.
Dans la ligne de votre feuille de travail Choix, vous pouvez également
inclure un nom de colonne .csv dans la colonne image. Si vous le faites, le nom
du fichier image à utiliser sera extrait de la colonne .csv spécifiée.
Remarque:
Si vous faites référence à des fichiers image de cette manière, vous devez
toujours télécharger ces fichiers image en tant que pièces jointes lorsque vous
téléchargez votre formulaire sur le serveur.
Voir ci-dessous un exemple de fiche de choix:

list name name label


fruits name_key name
choices

Cliquez sur le lien pour voir un exemple de formulaire de recherche et de


sélection (search-and-select sample form) . Le fichier .csv utilisé avec le
formulaire se trouve ici.
Il existe une série d'options pour indiquer les lignes .csv à inclure dans la
liste de choix à l'aide de l'expression search (). Consultez cet article pour
plus d'informations sur ces expressions search ().

Sélection en cascade

Beaucoup de formulaires commencent par demander l’emplacement du répondant,


chaque emplacement spécifiant les choix d’emplacement ultérieurs (par exemple,
un «village» d’État). Au lieu d'ajouter un champ select_one pour chaque option
d'emplacement, vous pouvez utiliser la sélection en cascade. Pour utiliser les
sélections en cascade, vous devez créer une colonne choice_filter dans votre
feuille de calcul d'enquête et ajouter les colonnes d'attributs d'emplacement
dans la feuille de calcul de vos choix. Découvrez un exemple XLSForm ici..

Sélections externes

Si un formulaire est sélectionné avec un grand nombre de choix (par exemple, des
centaines ou des milliers), ce formulaire peut ralentir le chargement du
formulaire et la navigation dans les clients tels que ODK Collect. La meilleure
solution à ce problème consiste à utiliser des sélections externes.

L'activation de sélections externes est simple.

Au lieu de select_one pour le type d'invite, utilisez select_one_external.


Au lieu de la feuille de choix, placez des choix externes dans la feuille
external_choices.

Voir formulaire select_one_external pour un exemple utilisant des choix normaux


et externes.
Lorsqu'un fichier XLSForm avec des choix externes est converti en un fichier
XForm, deux fichiers sont générés, le fichier XForm (par exemple, formulaire-
nomfichier.xml) avec tous les choix normaux et un itemsets.csv avec les choix
externes.

Le fichier itemsets.csv peut être téléchargé sur tout serveur compatible ODK
(ODK Aggregate, par exemple) en tant que fichier multimédia. Il sera téléchargé
dans n’importe quel fichier multimédia compatible (par exemple, ODK Collect)
compatible ODK et sauvegardé dans le dossier [form-filename] -media. Des clients
tels que ODK Collect charge les fichiers multimédia chargés sur la carte SD.
Ainsi, votre formulaire comportant un grand nombre de choix se chargera
désormais très rapidement.

Default (Défaut)
L'ajout d'un champ par défaut signifie qu'une question sera pré-renseignée avec
une réponse lorsque l'utilisateur verra pour la première fois la question. Cela
peut aider à gagner du temps si la réponse est celle qui est généralement
sélectionnée ou à montrer à l'utilisateur le type de choix de réponse attendu.
Voir les deux exemples ci-dessous.

type name label default


today today
date survey_date Survey date? 2010-06-15
survey

Dans l'exemple suivant, le poids est automatiquement réglé à 51,3 kg. Vous
pouvez simplement changer la réponse en tapant dans le champ de réponse et en
entrant une autre réponse.

type name label default


decimal weight Respondent’s weight? (in kgs) 51.3
survey

Lecture seulement

L'ajout d'un champ en lecture seule signifie qu'une question ne peut pas être
modifiée. Les champs en lecture seule peuvent être combinés avec les champs par
défaut pour renvoyer des informations à un utilisateur.

type name label read_only default


integer num Please patient is: yes 5
survey

Apparence

La colonne Apparence vous permet de modifier l'apparence des questions dans


votre formulaire. Le tableau suivant répertorie les attributs d'apparence
possibles et indique comment la question apparaît dans le formulaire.
Appearance
Question type Description
attribute
Best if used with web clients, makes the text box multiple
multiline text
lines long.
select_one,
minimal Answer choices appear in a pull-down menu.
select_multiple
Relevant for mobile clients only, this attribute auto-advances
quick select_one
the form to the next question after an answer is selected.
no-calendar date For mobile devices only, used to suppress the calendar.
month-year date Select a month and year only for the date.
year date Select only a year for the date.
select_one, For web clients only, this displays the answer choices
horizontal-compact
select_multiple horizontally.
select_one, For web clients only, this displays the answer choices
horizontal
select_multiple horizontally, but in columns.
Best if used with web clients, makes the answer choices
likert select_one
appear as a Likert scale.
Displays answer choices side by side with minimal padding
select_one,
compact and without radio buttons or checkboxes. Particularly useful
select_multiple
with image choices.
Same as previous, but auto-advances to the next question (in
quickcompact select_one
mobile clients only).
Entire group of questions appear on one screen (for mobile
field-list groups
clients only).
select_one,
label Displays answer choice labels (and not inputs).
select_multiple
Used in conjunction with label attribute above, displays the
select_one, answer inputs without the labels (make sure to put label and
list-nolabel
select_multiple list-nolabel fields inside a group with field-list attribute if
using mobile client).
An easier way to achieve the same appearance as above,
table-list groups apply this attribute to the entire group of questions (might
slow down the form a bit).
Allows you to trace your signature into your form (mobile
signature image
clients only).
Allows you to sketch a drawing with your finger on the
draw image
mobile device screen.

Un XLSForm avec tous les attributs d'apparence de ce tableau est disponible ici.
Feuille de paramétrage

La feuille des paramètres est facultative, mais elle vous permet de


personnaliser davantage votre formulaire, notamment en cryptant vos
enregistrements ou en définissant un thème de style global pour votre
formulaire, entre autres.

Un exemple de fiche de configuration est ci-dessous:


form_title form_id public_key submission_url default_language version
Example ex_id IIBIjANBg… https://example.com/submission English 2017021501
settings

Les en-têtes de colonne de cet exemple de feuille de travail de configuration


ont les propriétés suivantes:

form_title: titre du formulaire affiché aux utilisateurs. Le titre du


formulaire est extrait de form_id si formulaire_title est vide ou manquant.
ID_formulaire: nom utilisé pour identifier de manière unique le formulaire
sur le serveur. L'identifiant de formulaire est extrait du nom de fichier XLS si
id_formulaire est vide ou manquant.
public_key: pour les formulaires activés pour le chiffrement, il s'agit de
l'endroit où la clé publique est copiée et collée.
submission_url: cette URL peut être utilisée pour remplacer le serveur par
défaut auquel les enregistrements finalisés sont soumis.
default_language: Dans les formulaires localisés, définit la langue à
utiliser par défaut.
version: Chaîne de 10 chiffres au maximum décrivant cette révision. Les
définitions de formulaire révisées doivent avoir des versions alphabétiquement
supérieures aux précédentes. Une convention courante consiste à utiliser des
chaînes de la forme "aaaammjjdrr". Par exemple, 2017021501 est la 1ère révision
du 15 février 2017.

Formulaires cryptés

Les formulaires activés pour le chiffrement fournissent un mécanisme permettant


de garder les enregistrements finalisés confidentiels à tout moment. Cela inclut
le temps après l'enregistrement définitif d'un enregistrement qu'il est stocké
sur l'appareil et sur le serveur, ainsi que pendant le transport, même lorsque
http est utilisé pour la communication. Les enregistrements cryptés, y compris
leurs fichiers téléchargés, tels que des photos, sont totalement inaccessibles à
quiconque ne possédant pas la clé privée.

Pour chiffrer les formulaires XLS, ajoutez la colonne public_key à la feuille de


calcul des paramètres et collez la clé RSA publique codée en base64 comme
valeur.

form_id public_key
mysurvey IIBIjANBgklawWEserewrwesgdreewrwe32serfserfewrwerewtwer23sgfrqjwerk3423432…
settings

Pour plus d'informations sur les formulaires chiffrés et sur la manière de


générer les clés RSA, consultez la ODK documentation et cet exemple de
formulaire.

Spécifier un serveur alternatif

Il est possible de spécifier un autre serveur auquel envoyer vos soumissions


dans la colonne submission_url de la feuille de calcul des paramètres. Assurez-
vous d'utiliser l'URL complète à laquelle les soumissions doivent être envoyées,
y compris le chemin.

Si cette colonne est laissée de côté ou laissée vide, les soumissions


deviendront la destination par défaut du fournisseur que vous utilisez pour vos
enquêtes.
Spécifiez le nom de soumission du formulaire

Dans la fiche de configuration, vous pouvez spécifier un nom unique pour chaque
soumission de formulaire à l'aide des champs renseignés par l'utilisateur lors
de l'enquête. Dans la feuille de travail sur les paramètres, ajoutez une colonne
appelée nom_instance. Ecrivez dans l'expression qui définit le nom unique de
l'instance de formulaire à l'aide des champs de la feuille de calcul de
l'enquête.

Découvrez cet exemple XLSForm qui calcule le nom de l’instance en tant que nom
de famille et prénom associé à la soumission du formulaire uuid.
Plusieurs formulaires de page Web

Les formulaires Web peuvent être divisés en plusieurs pages à l'aide des pages
de thème de style.

Un exemple de formulaire divisé en plusieurs pages est visible sur le formulaire


Web Widgets on Pages.

Dans l'onglet Paramètres, créez une colonne appelée style et définissez-la en


pages, comme suit:

form_title form_id style


example title example_id pages
settings

Dans votre onglet Enquête, regroupez les questions que vous souhaitez voir
apparaître sur chaque page, puis définissez l’apparence du groupe sur liste de
champs. Voir l'exemple ci-dessous

type name label appearance


type name label appearance
begin group group1 field-list
text name Respondent’s name
integer age Respondent’s age
string address Respondent’s address
end group
survey

Voir cet article de blog pour plus d'informations sur la création de formulaires
Web de plusieurs pages. La source XLSForm est ici..

Formes de thème de grille

Le style de grille de thèmes permet à votre formulaire d'imiter l'apparence des


enquêtes papier traditionnelles en compactant plusieurs questions en une rangée.
Ce style est mieux utilisé avec des écrans plus grands (par exemple, des
ordinateurs ou des tablettes). Cela fait aussi une belle impression!

Veuillez cliquer sur le lien pour voir un exemple de formulaire Web avec un
thème de grille Grid theme webform..

Pour créer un formulaire Grille, dans la feuille settings, sous la colonne


Style, écrivez theme-grille, comme suit:
form_title form_id style
example title example_id theme-grid
settings

Dans votre feuille survey, regroupez les questions que vous souhaitez voir
apparaître dans chaque section, puis définissez l’apparence de chaque champ en
fonction de la largeur souhaitée (la largeur par défaut est 4). Voir l'exemple
ci-dessous.

type name label appearance


begin group group1
text name Respondent’s name w3
integer age Respondent’s age w1
string address Respondent’s address w4
end group
survey

Voir cet article de blog blog post pour plus d'informations sur la création de
formulaires de grille. L'exemple XLSForm du thème Grid est ici..

Invites de style
La prise en charge de Markdown dans XLSForm permet une emphase accrue grâce à
des caractères gras et italiques, des en-têtes de tailles différentes, des
polices et couleurs différentes et des liens Web cliquables dans ODK Collect
1.4.9 et Enketo.

mettre l'accent sur les mots en les enveloppant à l'intérieur _ ou *


insister fortement sur les mots en les enveloppant dans __ ou **
ajouter un lien en utilisant [nom du lien] (url)
ajouter des en-têtes de tailles variées en ajoutant # (le plus grand) à
###### (le plus petit) au texte de l'en-tête
Texte de style pour la couleur ou la police avec des balises span (par
exemple, <span style = "color: # f58a1f"> orange </ span>, <span style =
"couleur: rouge; font-family: cursive"> rouge et cursive </ span>)
ajoutez un saut de ligne à l'endroit souhaité avec Ctrl-Entrée ou Ctrl-Alt-
Entrée (la combinaison de touches peut être différente pour certains logiciels
de feuille de calcul)
ajoutez vos emojis préférés!
utilisez exposant avec la balise <sup> (par exemple, 100 m <sup> 2 </ sup>
devient 100 m2)
utilisez l'indice avec la balise <sub> (par exemple, H <sub> 2 </ sub> O
devient H2O)
utilisez les caractères \ avant les caractères #, *, _ et \ pour éviter que
des effets de style particuliers ne soient déclenchés par ces caractères

Utilisation avancée et extensibilité

Il est possible d'utiliser XLSForm pour créer des XForm avec des fonctionnalités
personnalisées ou expérimentales. C'est idéal pour les applications
personnalisées avec une fonctionnalité spécifique qui ne convient pas à la
communauté plus large.

La feuille de sondage prend en charge les préfixes de 3 colonnes (instance ::,


bind ::, body: :) qui ajoutent des attributs à la sortie XForm, que ce soit dans
l'instance principale, bind ou le contrôle de formulaire. Pour en savoir plus
sur XForms, consultez la spécification ODK XForms. L'exemple ci-dessous ajoute
un attribut personnalisé «hxl» au nœud d'instance primaire d'une question.

type name label instance::hxl


integer population How many people present? #population
survey

La feuille settings prend en charge la définition d’espaces de noms


personnalisés supplémentaires (préfixes d'espaces de noms séparés) à l'aide de
la colonne d'espaces de noms (plusieurs espaces séparés). Vous pourrez ensuite
utiliser ces espaces de noms dans la feuille d’enquête, par exemple pour définir
correctement un attribut personnalisé avec votre propre espace de noms. Voir
l'exemple ci-dessous qui ajoute 2 espaces de nom supplémentaires et les utilise
pour ajouter des attributs personnalisés:

title namespaces
esri=”http://esri.com/xforms”
My Form
enk=”http://enketo.org/xforms
surveychoicessettings

type name label bind::esri:fieldLength bind::enk:for


text desc Describe 50
text desc_comment Comments ${a}
surveychoicessettings

Outils qui supportent XLSForms


Ona
 Enketo
 Open Data Kit (ODK)
 Kobo ToolBox
 CommCare
 SurveyCTO
 DataWinners
 Secure Data Kit (SDK)
 Tattara

Plus de ressources
Le document standard XLSform peut vous guider à travers les types d'entrée
spécifiques, les en-têtes de colonne, etc., qui constituent une syntaxe légitime
dans XLSForms. Si vous souhaitez approfondir la compréhension de XForms et aller
au-delà de XLSForms, voici quelques ressources pour les comprendre

 Form guidelines: http://code.google.com/p/opendatakit/wiki/XFormDesignGuidelines


 Form design tutorial: https://bitbucket.org/javarosa/javarosa/wiki/buildxforms
 Sample forms: http://code.google.com/p/opendatakit/source/browse/?repo=forms
 Formhub University
 Ona Form Gallery
 XForms as supported by JavaRosa: https://bitbucket.org/javarosa/javarosa/wiki/xform-jr-
compat

A propos de ce site

XLSForm.org est un projet soutenu par la communauté qui vise à créer un point de
référence commun pour le standard XLSForm.

Si vous souhaitez contribuer à cette documentation ou l’améliorer, veuillez


visiter le dépôt GitHub de notre projet.

L'histoire
Le XLSForm a été développé à l'origine par Andrew Marder et Alex Dorey du
Sustainable Engineering Lab de l'Université Columbia. Lorsque XLSForms a été
adopté par la communauté ODK, SEL a collaboré avec l’équipe ODK de l’Université
de Washington pour développer les spécifications actuelles. PyXForm, la
bibliothèque utilisée pour convertir XLSForms en XForms, est un projet open
source pris en charge par les membres d'ODK, SEL, Ona, SurveyCTO et Kobo.