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 à :

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/>.

XPath exemple avec <unitdate>

XPath

 


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 à :


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.