Skip to content

Travailler avec MathML

Emmanuel Chateau edited this page Mar 6, 2015 · 1 revision

Bonjour J'inaugure un nouveau label Tricks couleur vert espoir, où on pourrait partager des petites recettes et solutions.

Comme on vient de batailler un bon moment avec Nathalie sur la récupération du User-Agent, voici notre recette du jour.

Le problème : nous avons du MATHML dans nos TEI. Firefox gère nativement le rendu de MATHML, Chrome, Chromium, Safari, etc. ne le gèrent pas apparemment. Nous voulons donc appeler la librairie js MathJax, mais comme elle est un peu lourde, nous voudrions ne l'appeler que quand on n'est pas sur Firefox (si MAthjax est appelé, Firefox l'utilise apparemment et le temps d'affichage est sensiblement allongé). Nous devons donc récupérer le User-Agent. Aucun souci avec l'annotation %rest:header-param("User-Agent", "{$user-agent}") (+ récupération dans la signature de la fonction myproject:myfunction($user-agent... ))

Il suffit ensuite d'inclure cette info dans nos $params

let $params := map { "user-agent" := $user-agent, "referer" := $referer, "project" := $project, "dataType" := $dataType, "value" := $value }

Sauf que nous avions un bug sur Chromium, qui renvoie plusieurs strings et non une seule comme Firefox. On avait donc une erreur "Single element expected"

Il faut donc tester le type de $user-agent et faire qq chose (ici on prend la première string, mais il faudrait plutôt tout concaténer.)

let $ua := if ($user-agent instance of xs:string) then $user-agent else $user-agent[1] Et enfin, ça marche !

let $params := map { "user-agent" := $ua, "referer" := $referer, "project" := $project, "dataType" := $dataType, "value" := $value }