Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

XSLT XPath function: string translate (string, string, string)

61 views
Skip to first unread message

Une Bévue

unread,
Jan 30, 2012, 11:33:22 AM1/30/12
to

j'essaie de supprimer les accents dans une chaîne :
<xsl:value-of select = "translate('Être ou ne pas être ?',
'ÀÂÄÉÈÊËÎÏÔÖÙÛÜÇàâäéèêëîïôöùûüç ?', 'AAAEEEEIIOOUUUCaaaeeeeiioouuuc--')"
/>
je souhaite obtenir :
'Etre-ou-ne-pas-etre--'

mais j'ai :
'AUtreounepasAtre'
même le ' ' (une espace) n'est pas "translaté" pourquoi ?

avant j'utilisait une fonction externe pour faire ça, mais avec ruby /
Nokogiri, je ne suis pas sûr que ce soit implémenté, en tk, je n'ai pas
trouvé la méthode.

le but supprimer tous les accents et les symboles du genre '&@#?!;,:/=+'
pour les remplacer part un tiret '-'

peut-être existe t'il qqc de tout fait pour ça ?

mes fichiers sont en UTF-8

--
« Tel n'a de chaleur pour ses amis, que pour les brûler. »
(Proverbe arabe)

Une Bévue

unread,
Jan 30, 2012, 11:42:03 AM1/30/12
to
Une Bévue <unbewus...@fai.invalid> wrote:

> mes fichiers sont en UTF-8

oui, mais j'avais laissé iso-8869 dans l'en-tête, désolé pour le
bruit...

du coup de mon translateur, je voudrais en faire une fonction, mais
comment ?

Alain Ketterlin

unread,
Jan 30, 2012, 12:15:07 PM1/30/12
to
unbewus...@fai.invalid (Une Bévue) writes:

> Une Bévue <unbewus...@fai.invalid> wrote:
>
>> mes fichiers sont en UTF-8
>
> oui, mais j'avais laissé iso-8869 dans l'en-tête, désolé pour le
> bruit...
>
> du coup de mon translateur, je voudrais en faire une fonction, mais
> comment ?

Soit tu utilises un particularité de ton processeur XSLT, soit tu passes
par EXSLT (http://www.exslt.org/func/index.html). La seconde solution
n'est pas forcément moins spécifique que la première, mais a plus de
chance de se transposer à un autre processeur.

-- Alain.

Une Bévue

unread,
Jan 30, 2012, 5:27:24 PM1/30/12
to
Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:

>
> Soit tu utilises un particularité de ton processeur XSLT, soit tu passes
> par EXSLT (http://www.exslt.org/func/index.html). La seconde solution
> n'est pas forcément moins spécifique que la première, mais a plus de
> chance de se transposer à un autre processeur.

oui, c'est ce que j'ai commencé à regarder.
il n'y a pas la fonction que je recherche, mais je peux sans doute
l'implémenter en js...
en fait c'est tout bête :
<xsl:value-of select="translate($string, 'ÀÂÄÉÈÊËÎÏÔÖÙÛÜÇàâäéèêëîïôöùûüç
?', 'AAAEEEEIIOOUUUCaaaeeeeiioouuuc--')"/>

Alain Ketterlin

unread,
Jan 31, 2012, 3:51:07 AM1/31/12
to
unbewus...@fai.invalid (Une Bévue) writes:

> Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:
>
>> Soit tu utilises un particularité de ton processeur XSLT, soit tu passes
>> par EXSLT (http://www.exslt.org/func/index.html). La seconde solution
>> n'est pas forcément moins spécifique que la première, mais a plus de
>> chance de se transposer à un autre processeur.
>
> oui, c'est ce que j'ai commencé à regarder.
> il n'y a pas la fonction que je recherche, mais je peux sans doute
> l'implémenter en js...
> en fait c'est tout bête :
> <xsl:value-of select="translate($string, 'ÀÂÄÉÈÊËÎÏÔÖÙÛÜÇàâäéèêëîïôöùûüç
> ?', 'AAAEEEEIIOOUUUCaaaeeeeiioouuuc--')"/>

Je ne suis pas sûr qu'on se comprend, donc je précise : EXSLT (module
functions) permet de définir une fonction, utilisable ensuite dans les
expressions XPath. Le lien que je donne explique comment faire. Nul
besoin de Javascript dans ce cas.

-- Alain.

Une Bévue

unread,
Jan 31, 2012, 4:08:21 AM1/31/12
to
Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:

> Je ne suis pas sûr qu'on se comprend, donc je précise : EXSLT (module
> functions) permet de définir une fonction, utilisable ensuite dans les
> expressions XPath. Le lien que je donne explique comment faire.

Oui, oui, j'ai fait un bout d'essai, sur "split".

ce qui me gène est que ça marche très bien avec un vieux saxon que j'ai
(saxon-resources9-0-0-1) donc en java.

mais pas avec ruby / Nokogiri

en fait c'est là où je suis un peu perdu - pas à jour - je ne sais pas
bien où en sont les différentes versions de wrapper pour wslt.

sans doute est-ce la branche "java" la plus en pointe.

> Nul
> besoin de Javascript dans ce cas.

oui, j'ai bien lu.

en fait c'est Ruby / Nokogiri qui ne me semble pas implémenter (wrapper)
les fonctions externes.

Alain Ketterlin

unread,
Jan 31, 2012, 4:26:05 AM1/31/12
to
unbewus...@fai.invalid (Une Bévue) writes:

> Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:
>
>> Je ne suis pas sûr qu'on se comprend, donc je précise : EXSLT (module
>> functions) permet de définir une fonction, utilisable ensuite dans les
>> expressions XPath. Le lien que je donne explique comment faire.
>
> Oui, oui, j'ai fait un bout d'essai, sur "split".
>
> ce qui me gène est que ça marche très bien avec un vieux saxon que j'ai
> (saxon-resources9-0-0-1) donc en java.

Oui mais c'est Saxon qui implémente

> mais pas avec ruby / Nokogiri

Connais pas, mais si j'en crois leur page, la bibliothèque utilisée est
libxslt. J'utilise xsltproc, basé également sur libxslt, et cela marche
parfaitement.

-- Alain.

Une Bévue

unread,
Jan 31, 2012, 4:33:43 AM1/31/12
to
Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:

>
> Connais pas, mais si j'en crois leur page, la bibliothèque utilisée est
> libxslt. J'utilise xsltproc, basé également sur libxslt, et cela marche
> parfaitement.

OK, donc, ça devrait - aussi - marcher avec Ruby / Nokogiri, il y a bien
un groupe google mais pas du tout réactif...

Je peux tjs faire une vérue, du genre utiliser ruby pour lancer java /
saxon, mais bon...

Une Bévue

unread,
Feb 2, 2012, 5:54:49 AM2/2/12
to
Alain Ketterlin <al...@dpt-info.u-strasbg.fr> wrote:

> Soit tu utilises un particularité de ton processeur XSLT, soit tu passes
> par EXSLT (http://www.exslt.org/func/index.html). La seconde solution
> n'est pas forcément moins spécifique que la première, mais a plus de
> chance de se transposer à un autre processeur.

bon, c'est OK avec EXSLT et ruby-xslt cf. page :
<https://github.com/glejeune/ruby-xslt>
--
« Le vrai problème avec les menteurs est que l'on ne peut jamais
être certain qu'ils ne vont pas dire la vérité. »
(Kingsley Amis)
0 new messages