Un caractère avec du caractère


Il y a quelques jours Laurent RASSINOUX a remonté un bug étrange dans le démonstrateur.

Dans le même temps, Stéphane GULLY est tombé sur un comportement similaire dans ISTEX-SNU

Après enquête il apparaît qu’il y a une entité HTML Line separator U+2028 dans la balise correspondenceTo ligne 47 du xml éditeur:

Cette entité est encodée en caratère sous la forme hexa e2 80 a8 (donc invisible) dans le MODS(balise affiliation):

Ensuite le MODS sert à l’indexation elastic search, le caractère fautif se retrouve donc dans le JSON et provoque un Unexpected token ILLEGAL dans le démonstrateur et une erreur dans la composition du résultat coté API.

Pour corriger le problème deux pistes sont envisagées:

  1. Filtrer ces caractères en amont du module li-2mods dans la chaîne d’ingestion [1]
  2. Filtrer ces caractères au niveau du module li-2mods dont la fonction est la transformation des métadonnées XML éditeur vers MODS grâce à une feuille de style XSLT