Fiche technique : fonctionnalités XML (XPath, XSL-T, XSL-FO, XQuery)
XPath
XPath est le langage utilisé pour localiser, à l'intérieur de l'arbre ordonné que constitue un document XML, une ou plusieurs portions de ce document.
Une expression XPath est un chemin de localisation, semblable au chemin utilisé dans un système de fichiers, et représente une hiérarchie de noeuds XML. Ce chemin de localisation est constitué de pas de localisation, séparés par une barre oblique. Les expressions XPath utilisent la syntaxe suivante :
axe::test-noeuds[prédicat], où
- l'axe est la direction à suivre d'un noeud vers d'autres noeuds (par exemple 'precedent-sibling::', c'est-à-dire noeud frère précédent, dans une fratrie de noeuds).
- le test-noeuds est soit un nom de noeud, soit une fonction
- le prédicat est une condition servant à filtrer et sélectionner un sous-ensemble de noeuds
Par défaut, lorsqu'aucun axe n'est précisé, c'est l'axe des enfants (child::) qui est implicitement sélectionné.
XPath utilise un certain nombre d'abréviations :
/ | Noeud document |
/* | Elément racine |
.. | Remonte au noeud parent |
. | Noeud courant |
* | Tout noeud élément |
@ | Noeud attribut |
@* | Tout noeud attribut |
//elem | Tous les noeuds éléments appelés elem dans le document |
XPath offre également un certain nombre de fonctions destinées à être utilisées dans les prédicats, pour effectuer des filtres précis. Les fonctions s'appliquant aux chaînes de caractères les plus susceptibles d'être utilisées dans le cadre d'un instrument de recherche en EAD sont :
- contains(chaîne,argument) : le prédicat est validé si la chaine de caractères contient l'argument
- starts-with(chaîne,argument) : le prédicat est validé si l'argument correspond au début de la chaine de caractères
- substring(chaîne,position de départ,longueur) : renvoie la chaîne commençant à la position de départ et de la longueur spécifiée.
Pour une description plus complète de XPath, se référer à :
- Aux J.e-cours de l'Abes de 2016 et de 2024 (en français)
- Tutoriel de W3Schools (en anglais)
Utilisation dans le cadre de l'EAD
Les éditeurs XML actuels comportent tous une fonctionnalité XPath qui permet de faire des requêtes simples et rapides au sein d'un fichier XML. Appliqué à un document EAD, XPath permet par exemple de repérer aisément toutes les mentions d'ancien possesseur, toutes les descriptions de reliures, tous les documents d'une certaine date ou période ou bien encore tous les accès contrôlés de type auteur-titre. Grâce à la notion de noeud courant, XPath permet également de restreindre aisément la recherche à une partie de l'instrument de recherche.
Exemples :
- /ead/archdesc/did/unittitle : chemin qui mène à l'intitulé de haut niveau présent dans la description archivistique.
- //unittitle[(../../.)/@level="item"] : chemin qui mène à tous les intitulés des composants de niveau de description "item"
- //langmaterial/language[@langcode="lat"] : chemin qui mène à toutes les mentions de langue correspondant au latin.
- //unittitle[../langmaterial/language[@langcode="lat"]] : chemin qui mène aux intitulés de tous les composants dont la mention de langue correspond au latin.
- //physfacet[@type='reliure'] : chemin qui mène à toutes les descriptions de reliures
- //physfacet[@type='reliure'][contains(.,'parchemin')] : chemin qui mène à toutes les descriptions de reliures contenant le mot "parchemin".
- //controlaccess[./persname[@role='070'] and ./title] : chemin qui mène à tous les accès contrôlés de type auteur-titre
- //unitdate[contains(substring(./@normal,1,2),'16')] : chemin qui mène à tous les <unidate @normal="16.." ..>, c'est-à-dire à tous les documents du XVIIe siècle contenus dans l'instrument de recherche.
- //unittitle[ancestor::c/did/unitid[@type="numéro_de_notice"][.="286"]] : chemin qui mène à tous les intitulés de la notice 286 (niveau notice et tous niveaux hiérarchiques inférieurs) ; une telle recherche peut-être pratique dans le cas d'un recueil dont la description est très détaillée et dont on veut apercevoir rapidement la liste des pièces.
La fonctionnalité XPath varie selon les éditeurs, mais elle permet généralement de naviguer dans la liste des résultats, de repérer l'information souhaitée, et en cliquant dessus de se retrouver positionné immédiatement à l'endroit correspondant au sein du fichier XML. Ceci est particulièrement utile pour procéder à des vérifications ou corrections de données répétitives (recotation, modification d'un élément en fonction de son contenu, etc.).
Exemple d'utilisation dans l'éditeur <oXygen/>.
XSLT
XSLT est un langage XML utilisé dans la transformation de documents XML. En particulier, XSLT sert à transformer les données d'un fichier XML en un autre fichier XML conforme à une DTD ou un schéma différents de celui de l'original, ou bien en un fichier non-XML (par exemple, HTML ou plein texte).
Pour la sélection des données XML, XSLT utilise les chemins XPath.
XSLT possède son propre vocabulaire d'éléments, qui correspondent pour la plupart à un ensemble de fonctions de manipulation.
Appliqué à un document EAD, XSLT permet par exemple, à partir d'un instrument de recherche décrivant l'ensemble des collections d'un établissement, de créer un fichier à utiliser pour un récolement, grâce à une transformation qui ne conservera que les informations importantes dans ce cadre-là :
- cote : <unitid type="cote">
- intitulé : <unittitle> du même composant que la cote
- date : <unitdate> du même composant que la cote (pour vérification éventuelle)
- importance matérielle : <extent> du même composant que la cote
Le document cible peut être un fichier HTML, un document csv, etc.
Par ailleurs, il est également possible d'appliquer en une seune opération une transformation ou extraction à un ensemble de fichiers, par exemple à plusieurs inventaires de fonds similaires, ou à plusieurs fichiers provenant de la rétroconversion du Catalogue général des manuscrits des bibliothèques publiques de France.
Pour une description plus complète de XSLT, se référer à :
- Tutoriel de W3Schools (en anglais)
XSL-FO
XSL-FO est un langage XML qui permet de formater l'affichage et/ou l'impression d'un document XML. Il remplit un rôle similaire aux feuilles de style CSS, en y apportant des éléments supplémentaires de structuration.
Un fichier EAD peut être rendu en XSL-FO grâce à une transformation XSLT, en vue d'une publication au format PDF ou imprimé. Toutefois, des solutions plus légères et plus simples à mettre en oeuvre (transformation en XHTML et ajout de CSS et de scripts) sont bien souvent préférées.
XQUERY
XQUERY est un langage de requêtage qui permet d'extraire des données au sein d'un document XML ou d'un ensemble de documents XML, mais également d'effectuer des calculs sur ces données.
Les données EAD comportant peu d'éléments susceptibles d'être calculés, ce langage trouve surtout une utilité dans les très grands établissements détenteurs de plusieurs centaines ou milliers d'instruments de recherche en XML. Dans le travail courant, le catalogueur n'a guère besoin d'aller au-delà d'une connaissance de XPath.