Dans le cadre des requêtes sur l'API sur les fiches (type = fiche, type = q-fiche et type = geojson), il peut être utile de limiter le nombre de champs transmis (pour réduire la taille du fichier JSON résultant) ou de les renommer (par exemple, dans le cas du requête au format GeoJson insérée dans un système qui attend des noms de champs particuliers). Les paramètres fichefields et motclefields permettent de le faire du côté du client, le fichier de configuration fields.xml permet de le faire du côté du serveur.
Effectuer la configuration du côté serveur avec fields.xml simplifie la construction de la requête côté client, offre des possibilités de configuration plus vastes et permet de modifier le comportement par défaut.
Le fichier fields.xml permet de définir des « variantes ». Chaque variante a un nom, il suffit d'indiquer ce nom dans le paramètre fieldvariant disponible dans type = fiche, type = q-fiche et type = geojson pour indiquer la variante à utiliser. Quatre variantes sont définies par défaut dans le logiciel avec les noms suivants :
Il suffit de définir dans fields.xml des variantes avec le nom d'une variante par défaut pour la remplacer.
L'élément racine est l'élément <fields>. Il peut contenir un nombre illimité d'éléments <variant>, celui-ci doit posséde un attribut obligatoire, @name, qui est le nom de la variante. Le nom de la variante doit être un nom « technique », c'est à dire composé uniquement de minuscules non accentuées, de chiffres et du souligné _.
Un élément variant possède les élements suivants :
L'exemple suivant montre les valeurs des trois variantes définies par défaut (data, query, geo).
<fields> <variant name="data"> <fiche fields="codecorpus,titre,soustitre,complements,year,href,icon"/> <motcle fields="labels"/> </variant> <variant name="query"> <fiche fields="codecorpus,mtitre,msoustitre,mattrs_all,attrs,mcomplements,year,href,icon"/> <motcle fields="mlabels"/> </variant> <variant name="geo"> <fiche fields="-codefiche"/> <motcle fields="labels"/> <alias name="name" fields="titre"/> <alias name="url" fields="href"/> </variant> <variant name="empty"> </variant> </fields>
Un autre exemple avec des alias sur les attributs. Un alias sur un attribut est particulièrement utile si l'attribut est unique : il permet d'accéder à la valeur plus facilement (par exemple, fiche.website plutôt que fiche.attrMap[“sct:website”][0])
<fields> <variant name="export"> <fiche fields="-codefiche"/> <motcle fields="labels"/> <alias name="name" fields="titre"/> <alias name="description" fields="soustitre"/> <alias name="url" fields="href"/> <alias name="website" fields="sct:website"/> <alias name="thumbnail" fields="sct:thumbnail"/> </variant> </fields>
<!ELEMENT fields (variant?)> <!ELEMENT variant (fiche?|motcle?|alias*)> <!ATTLIST variant name NMTOKEN #REQUIRED> <!ELEMENT fiche EMPTY> <!ATTLIST fiche fields NMTOKEN #REQUIRED> <!ELEMENT motcle EMPTY> <!ATTLIST motcle fields NMTOKEN #REQUIRED> <!ELEMENT alias EMPTY> <!ATTLIST alias name NMTOKEN #REQUIRED fields NMTOKEN #REQUIRED separator NMTOKEN #IMPLIED >