Re: [XSLT] Déterminer si un caractère est Latin ou pas
Stephane Bortzmeyer <[email protected]> Mon, 24 Mar 2008 16:03:47 +0100
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Mar 21, 2008 at 03:03:47PM +0100, Stephane Bortzmeyer <[email protected]> wrote a message of 22 lines which said: > Pour traduire du XML vers un format qui n'utilise pas Unicode, > j'aurais besoin de tester, dans un programme XSLT : > > - si un caractère donné est un caractère latin > - si un caractère donné appartient à l'ensemble qu'on trouve dans > Latin-1 Bon, avec l'aide rapide et efficace de Stéphane Bonhomme et d'Eric van der Vlist, voici la solution la plus proche de mon cahier des charges originel. Elle nécessite EXSLT (car je n'ai pas trouvé d'autre moyen de parcourir tous les caractères d'une chaîne) donc je dois laisser tomber Sablotron. <xsl:variable name="goodletters">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZàâèéêëîïôùûüÿÀÂÈÉÊËÎÏÔÙÛÜ;:./%' </xsl:variable> <xsl:template match="text()"> <xsl:variable name="content"> <xsl:value-of select='.'/> </xsl:variable> <xsl:for-each select="str:tokenize($content, '')"> <xsl:choose> <xsl:when test="string-length(translate(text(), $goodletters, '')) != 0">[Unicode character omitted]</xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> Principal manque : j'aimerai bien afficher le point de code Unicode au lieu d'un message générique mais je ne vois pas comment le trouver en XSLT 1 ?