XSL / XPath / Sharepoint : Problème du double encodage des données.

L’esperluette m’a tué
J’ai rencontré ce problème en créant une « DataFormWebPart » sous le Sharepoint Designer. Les données finales affichées (HTML) étaient doublement encodées par rapport à la source de données.
Prenons cet élément d’une liste SharePoint :
L'iPad est nul
A travers une DataFormWebPart créée sous le sharepoint Designer, il ressortira ainsi
L"iPad est nul
 
Cause : il y a eu double encodage : L'iPad est nul -> L"iPad est nul -> L"iPad est nul
Et sur le navigateur, le résultat est celui-ci : L"iPad est nul
 
Le problème vient du XSL, au moment d’afficher la valeur :
<xsl:value-of select="@Valeur"/>
Il faut ajouter l’attribut suivant : disable-output-escaping= »yes »:
<xsl:value-of select="@Valeur" disable-output-escaping="yes" />
 
Sans aller dans les tréfonds du code XLS, le Sharepoint designer peut aider à la tache :

  • Se mettre en mode « création »
  • Survoler l’un des éléments de la webpart
  • Changer le type d’affichage (passer le « texte brut » à « texte enrichi »).

 
 
 

XPath : Faire un uppercase sur une chaine de caractères

C’est un peu grossier, mais pratique, notamment dans les formulaires Infopath :
translate("ma_chaine", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
Pour mettre en majuscule seulement la première lettre :
concat(translate(substring("ma_chaine", 1, 1), "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), substring("ma_chaine", 2))