• Viernes 29 de Marzo de 2024, 14:33

Autor Tema:  Transformar Acentos En Codigos Html  (Leído 11467 veces)

krusen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Transformar Acentos En Codigos Html
« en: Jueves 2 de Diciembre de 2004, 09:56 »
0
Debe ser algo obvio cuando no encuentro la solución, pero lo que pretendo es un fichero xml con acentos tal que:

<?xml version="1.0" encoding="ISO-8859-1"?>
<page>
   <BLOQUE_B>Trabajos Topogáficos Catastrales. Provincia de Málaga. Partido Judicial de Antequera. <BLOQUE_B>
</page>

quiero que los acentos (á, é, í, ó, ú y ñ) que aparezcan las transforme en sus correspondientes códigos... á

si por ejemplo hago:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" indent="yes" encoding="ISO-8859-1"/>
   <xsl:template match="/">
      <html>
         <body>
            <xsl:apply-templates/>
           </body>
           </html>
   </xsl:template>
   <xsl:template match="page/BLOQUE_B/ROW">
      <BLOQUE_B><xsl:value-of select="."/></BLOQUE_B>
   </xsl:template>
</xsl:stylesheet>

obtengo lo mismo como resultado (la idea era que al poner el output=html me hiciera la "translación", he probado con distintas convinaciones de encoding y la verdad es que estoy algo bloqueado.....
Muchas gracias de antemano a todos

KrUsEn


 :comp:

krusen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Transformar Acentos En Codigos Html
« Respuesta #1 en: Domingo 12 de Diciembre de 2004, 02:18 »
0
He encontrado la solución en un artículo de xml.com:
el artículo es: http://www.xml.com/pub/a/2004/06/02/tr-xml.html

y en resumen con hacer lo siguiente me basta:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="2.0">

  <xsl:output use-character-maps="cm1"/>

  <xsl:character-map name="cm1">
    <xsl:output-character character=" " string="&nbsp;"/>  
    <xsl:output-character character="é" string="&233;"/> <!-- é -->
    <xsl:output-character character="ô" string="&#244;"/>
    <xsl:output-character character="—" string="--"/>
  </xsl:character-map>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

(indicando en los character y string los códigos y cadenas resultados de los á, é, í, ó, ú y ñ)

Saludos...
 :kicking:

krusen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Transformar Acentos En Codigos Html
« Respuesta #2 en: Domingo 19 de Diciembre de 2004, 02:14 »
0
El anterior ejemplo sólo vale para la especificación 2 xsl, pero he encontrado una solución muy simple y no es necesario usar xsl, y es usando jtidy (como en mi caso estoy bajo un entorno java, me vale), con la libreria jtidy puedes convertir los acentos a sus códigos, pongo un ejemplo para quien le pueda interesar:


......
PrintWriter out = response.getWriter();

XMLDocument xDoc  .....
......
ByteArrayOutputStream out2 = new ByteArrayOutputStream();
ByteArrayOutputStream out3 = new ByteArrayOutputStream();
xDoc.print(out2);
Tidy tidy = new Tidy(); // obtain a new Tidy instance
tidy.setXmlTags(true);
tidy.setXmlOut(true);
tidy.parse(new ByteArrayInputStream(out2.toByteArray()), out3);
out.print(out3.toString() );
......

Saludos

 :hola: