20050517

Com generar acutes amb XSLT 1.0

Fa uns dies em vaig trobar en el cas de tenir que generar artificialment uns maleïts "acutes", vull dir que a la base de dades guardo sempre el text "normal" amb els accents etc. que fan servir els redactors, mai amb entities HTML amb acutes i histories.

Llavors, em vaig adonar que el format HTML per mòbils no accepta accents normals, primer vaig intentar jugar amb els encodings, però al final no vaig tenir cap més remei que acabar generant els acutes i tildes i tota la pesca a partir del text normal de la base de dades.

Ho vaig tenir que fer amb XSLT v.1.0, ja se que amb versió 2 deu ser súper-fàcil, però ara no canviaré tot el meu motor de generació per aquesta xorrada.

Així que vaig fer uns bonics templates per traduir accents normal en acutes i ntildes i ccedils...

Aquest primer template es el que va transformant el text, es com un conjunt de filtres d'una depuradora, primer treu les as amb accent desprès les es, etc. al final treu les ñs i les çs, si, el contingut es en castellà, però resulta que Barça s’escriu en ç fins i tot en castellà !


Codi del template
friky foto


Aquest segon template, es el que realment fa la feina, es crida a si mateix recursivament i fa la substitució, atenció, no es un template standard de transformació, ja que posa a pinyó la "&" davant i el ";" darrera, per generar la entity corresponent.



Codi del template generic de substitució
friky foto


Llavors només cal cridar al template acutesnou per fer la transformació a qualsevol node que tingui text amb accents:



Crida al template
friky foto



Així de fàcil !!!

Bé això em va costar força, però funciona, si algú té una manera més fàcil de fer-ho pot posar un comentari...

ATENCIÓ, no substitueixo les majúscules amb accents, simplement perquè no vull duplicar el codi per un cas tant poc provable.