SoloCodigo
Programación General => Otros Lenguajes de Programación => XML => Mensaje iniciado por: krusen en Jueves 2 de Diciembre de 2004, 09:56
-
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:
-
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 (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=" "/>
<xsl:output-character character="é" string="&233;"/> <!-- é -->
<xsl:output-character character="ô" string="ô"/>
<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:
-
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: