L’élément <extraitcorpus> sert à définir quelles fiches seront extraites, en précisant à la fois les critères de sélection (via un ou plusieurs éléments <fiche-select) et les champs des fiches qui doivent être récupérés (via le filtre d’une fiche).
L’élément <extraitcorpus> apparaît soit à la racine de l’extraction (premier fils de <extraction> pour l’extraction dynamique ou encapsulé dans l’élément <static>) soit à l’intérieur d’éléments <motcle> (il s’agit alors de fiches indexées par le mot-clé en question) soit à l’intérieur d’éléments <fiche> (il s’agit alors de fiches liées à la fiche en question).
L’élément <extraitcorpus> possède les attributs suivants :
@extrait-name : optionnel, permet de nomme l’extrait
@corpus : optionnel, raccourci pour la sélection de fiches sur des corpus donnés
@sort : optionnel, permet de préciser un tri, raccourci pour l’élément <group>
@tag-name : optionnel, permet de renommer la balise dans le fichier XML résultant (voir Renommer les balises dans le XML résultant)
L’élément <extraitcorpus> possède les éléments fils suivants (l’ordre n’a pas d’importance) :
<fiche-select> : optionnel, plusieurs possibles, (voir L’élément < fiche-select>)
<group> : optionnel, défini un groupement des fiches suivant certains critères
<pack> : optionnel, fait des paquets de fiches
<fiche> : optionnel, défini le filtre à appliquer sur les données de la fiche
<idfiche> : optionnel, remplace <fiche>, filtre minimaliste
<intitule> : optionnel, indique qu’il faut inclure l’intitule du corpus
Éléments <extraitcorpus> nommés ou anonymes
Un élément <extraitcorpus> peut être nommé via l’attribut @extrait-name, le nom est libre, il ne doit simplement pas y avoir plusieurs éléments <extraitcorpus> du même nom au même niveau.
Nommer un élément <extraitcorpus> permet de grouper dans un même élément des fiches appartenant à des corpus différents. C’est particulièrement utile en association avec une option de groupage.
Lorsqu’un élément <extraitcorpus> est anonyme, il sera en revanche généré un élément <extraitcorpus> par corpus pour lequel il y a des fiches. Cet élément aura alors l’attribut @corpus indiquant le nom du corpus.
Lorsque l’élément est anonyme, il peut comprendre l’élément <intitule> qui insère l’intitulé du corpus.
Tri avec l’attribut @sort
Un élément <extraitcorpus> peut posséder l’attribut @sort qui indique que le fiches doivent être triées suivant un critère précis. Cet attribut est plus simple d’emploi que l’élément <group> (avec moins de possibilités toutefois) et, surtout, les fiches sont comprises directement sous l’élément <extraitcorpus> et non regroupée au sein d’un élément <group>. L’intérêt de cet attribut est d’éviter de faire le tri en XLST.
Les valeurs possibles pour l’attribut @sort sont les suivantes :
titre-asc
: fiches triées suivant la première lettre du titre, dans l’ordre alphabétique (à l’intérieur d’un groupe, les fiches sont triées par ordre alphabétique)
titre-desc
: fiches triées suivant la première lettre du titre, dans l’ordre alphabétique inverse (à l’intérieur d’un groupe les fiches sont triées par ordre alphabétique inverse)
poids-asc
: fiches triées suivant le poids dans l’ordre croissant
poids-desc
: fiches tiées suivant le poids dans l’ordre décroissant
En cas de présence à la fois de l’attribut @sort et d’un élément <group>, ce sont les caractéristiques de ce dernier qui prédomine.
Les éléments fils de l’élément <extraitcorpus>
Les premiers éléments fils sont zéro, un ou plusieurs éléments <fiche-select> qui définissent les critères de sélection des fiches (voir L’élément < fiche-select>). En l’absence d’éléments <fiche-select>, l’extraction se fera sur tous les corpus.
Un élément optionnel <group> indiquant les paramètres de regroupement des fiches.
Un élément <extraitcorpus> contient ensuite la définition du filtre appliqué aux fiches via un des éléments <fiche>, <idfiche> ou <abregefiche> (ce dernier à supprimer) (voir Filtre d’un mot-clé).
Le groupement avec l’élément <group>
Un élément <group> possède les attributs suivants : @type (obligatoire), @sort (optionnel), @params (optionnel ou obligatoire suivant le type du groupement, [v(@tag-name]] (optionnel).
Attribut @type
L’attribut @type indique sur quel critère le groupement sera fait. Les types disponibles sont les suivants :
titre
: fiches regroupées par la première lettre du titre
poids
: fiches regroupées par le poids
annee
: fiches regroupées par année
lang
: fiches regroupées par langue
pays
: fiches regroupées par pays
fields
: fiches regroupées par la première valeur d’une série de champs, les champs sont indiqués dans l’attribut @params avec la clé fields
(pour ce type, l’attribut @params est obligatoire).
Attribut @sort
L’attribut @sort indique l’ordre du tri. Il peut avoir les deux valeurs suivantes :
asc
: tri dans l’ordre croissant
desc
: tri dans l’ordre décroissant
Si l’attribut est absent, le tri est fait dans l’ordre croissant.
Attribut @params
L’attribut @params permet de paramétrer le regroupement. Le paramétrage disponible dépend de chaque type de regroupement décrit ci-après. Lorsqu’un type n’est pas précisé, c’est qu’il ne possède pas de paramétrage particulier. Lorsque différents paramètres sont proposés, ils doivent être séparés par une virgule. Lorsqu’un paramètre repose sur une combinaison clé/valeur, la clé et la valeur sont séparées par un signe égal.
Enfin, si l’attribut est vide ou n’existe pas, c’est le paramétrage par défaut qui s’applique.
Paramètrage du type titre
et fields
Ce type possède un seul paramètre : mode
. Ce paramètre a une seule valeur possible actuellement :
alphabet
: le tri eest fait par ordre alphabétique mais en ne tenant pas compte des articles commençant le titre (par exemple, « Les Trois Mousquetaires » sera regroupé à la lettre < T >).
Note : pour des raisons de compatibilité ascendante, le mode « alphabet » peut être indiqué en écrivant simplement alphabet alphabet
sans que ce soit précédé par la clé mode=
Paramètrage du type fields
Ce type est une extension du type titre
. Il possède les mêmes paramètres ainsi qu’un paramètre supplémentaires qui est obligatoire, le paramètre fields
dont la valeur est une suite de noms de champs séparés par une espace.
Dans l’exemple suivant, les champs sont regroupés par la valeur du champ propriete_developpeen ou à défaut la valeur du champ propriete_developpefr et sera appliqué le mode alphabet
.
<group type="fields" params="fields = propriete_developpeen propriete_developpefr, mode=alphabet">
Paramètrage des modes annee
, lang
et pays
Pour ces trois types de regroupement, le seul paramètre accepté pour le moment est le paramètre field
qui a pour valeur le nom d’un champ de type Propriété (sous la forme « propriete_pays
») qui va servir au tri. Si le champ n’est pas défini, c’est la langue de la fiche qui est prise pour un tri par langue et c’est la date de dernière modification qui est prise pour un tri par année. Ce champ peut être aussi un champ Information et dans ce cas là, c’est la première valeur du champ qui est prise en considération.
Note : pour des raisons de compatibilité ascendante, le nom du champ peut être indiqué en écrivant simplement son nom sans que ce soit précédé par la clé field=
Le paquet de fiches avec <pack>
L’élément <pack> permet de faire des paquets de fiches, ce qui peut simplifier certains traitements quand il faut par exemple mettre trois fiches par ligne. Il possède les attributs suivants : @size (obligatoire), et @modulo (optionnel).
Attribut @size
Indique la taille d’un paquet, autrement dit le nombre de fiches qu’il contient
Attribut @module
Rajoute à l’élément <pack> dans le XML résultant un attribut |v[@modulo-val]] qui a pour valeur la position de l’élément <pack> modulo la valeur de @modulo. Autrement dit, si le modulo est 3, les paquets auront des valeurs 1,2,3,1,2,3,1,2,3,etc.
. Cet attribut permettra de retrouver facilement la position relative du paquet.
Attribut @tag-name
Cet attribut permet de renommer la balise de regroupement (voir Renommer les balises dans le XML résultant). L’utilisation de la valeur NULL
pour cet attribut permet de bénéficier du groupement sans le voir, autrement dit permet de trier les fiches.
Attributs présents dans le XML résultant
Sauf dans le cas où la valeur de l’attribut @tag-name est NULL
, un élément <group> se traduit par une balise dans le fichier XML résultant. Les attributs @type, @sort et @params ne sont pas repris mais d’autres attributs sont introduits.
Quelque soit le type de regroupement, l’élément <group> se voit doté de l’attribut @name qui est le nom du groupement. Le groupement de nom « _
» regroupe les fiches dont les données ne répondent pas au critère de tri (par exemple, les fiches qui n’ont pas de pays de défini pour un tri par pays). Ce groupe spécial est toujours placé à la fin.
L’élément <group> peut avoir des attributs supplémentaires suivant le type de groupement.
Le groupement par première du titre introduit l’attribut @order qui est un chiffre servant au classement. En effet, dans le cas des groupements par première lettre du titre, il peut être créé jusqu’à 38 groupements qui sont les suivants :
Un groupement pour chacun dix chiffres de 0 à 9, soit dix groupements, les attributs @ame et @order ont la même valeur, celle du chiffre en question
Un groupement pour les fiches dont le titre ne contient ni chiffre ni lettre : @name a alors comme valeur « ? » et @order comme valeur « 10 »
Un groupement par lettre de l’alphabet, soit 26 groupements : @name a comme valeur la lettre de l’alphabet en majuscule et @order a comme valeur 10 + le numéro de la lettre (soit 11 pour le A, 12 pour le B, etc).
Un dernier groupement pour les titres dont la première lettre n’est pas dans un alphabet latin (texte en chinois par exemple) @name a alors comme valeur « _ » et @order comme valeur « 37 »
Dans certains regroupements, l’élément <group> peut être immédiatement suivi d’un ou plusieurs éléments précisant le groupement.
pour les regroupements par langue, il s’agit d’un élément <langue> avec le libellé de la langue
pour les regroupements par langue, il s’agit d’un élément <pays> avec le libellé du pays et d’un élément <geopoint> avec la localisation du centre du pays.
Éléments supplémentaires dans les fiches
En outre, l’utilisation de tel ou tel mode peut introduire des éléments supplémentaires au sein des fiches elles-mêmes, éléments qui permettent de comprendre comment la fiche se retrouve dans son groupement.
Le mode alphabet
introduit ainsi un élément <alphabet> au sein de la fiche, avant l’élément <titre>. Cet élément reprend le titre mais en extrayant l’article. Il a un attribut toujours présent : @titre qui contient le titre sans l’article (si le titre n’a pas d’article à l’origine, sa valeur est celle de l’élément <titre>). Si et seulement si le titre avait bien un article, l’élément <alphabet> a deux autres attributs : @article qui contient l’article et [@[espace]] dont la valeur est 0
ou 1
qui indique si un espace sépare ou non l’article du reste du titre (dans la plupart des cas, la valeur de [@[espace]] est 1 mais, par exemple, en français, l’article défini sous la forme du l apostrophe est « collé » au texte, l’attribut aura donc la valeur 0).