Les fichiers de marqueurs sont en général des fichiers textes, constitués de lignes dont chacune désigne un marqueur. Ces lignes ont habituellement le format suivant :
NomDuTag Séparateur FichierQuiLeContient Séparateur LigneEtColonne
Souvent, des informations supplémentaires sont ajoutées :
NomDuTag Séparateur FichierQuiLeContient Séparateur LigneEtColonne Terminateur InformationsSupplémentaires
Ces lignes sont parfois précédées d'un en-tête donnant des informations sur le contenu du fichier de marqueur. On peut notamment y trouver l'encodage du fichier et un drapeau indiquant si les marqueurs sont triés ou non.
Le tri des marqueurs revêt une importance particulière, car un fichier de marqueurs convenablement trié (au sens binaire et non au sens alphanumérique) autorise une recherche, dite dichotomique, qui est bien plus efficace qu'une recherche linéaire. Le critère de performance est sensible avec de gros fichiers de marqueurs. Par exemple, la génération des marqueurs du sources du noyau Linux dans sa version 2.4.19 produit un fichier de plus de 30 Mo.
Parmi les informations supplémentaires, on peut trouver :
-
Un motif de recherche : il permet au logiciel qui exploite le fichier de marqueurs de retrouver la définition du marqueur, même si le fichier a été modifié entre temps (par exemple si des lignes ont été ajoutées ou supprimées).
-
Des informations de contexte sur le marqueur : la structure, la classe ou l'énumération si le marqueur est l'un de ses champs ou membres, l'espace de nom, etc.
-
Des commandes à interpréter par le logiciel de l'utilisateur : malgré des problèmes de sécurité potentiels, certains logiciels interprétent des commandes pour mettre à jour l'affichage (par exemple sauter l'en-tête de description d'une fonction) ou modifier le contenu du fichier (par exemple ajouter l'en-tête de description s'il est manquant) lors du saut vers un marqueur.