Foros del Web » Programación para mayores de 30 ;) » Programación General »

Solución: Ajuste de línea automático mediante XSL para HTML

Estas en el tema de Solución: Ajuste de línea automático mediante XSL para HTML en el foro de Programación General en Foros del Web. HOla tengo el siguiente dato: <linealarga> muuuuuuuuuuuuuuuuuuuuchosssssssssssss palabras que ocupaaaaaaaaaan mas de un reeeeeeglooonnnnnn deeeeeeeeeeee laaaaaaaaaaaaaaa pantalllaaaaaaaaaa </linealarga> Cuando transformo eso en HTML me hace ...
  #1 (permalink)  
Antiguo 23/02/2005, 13:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 15
Antigüedad: 19 años, 2 meses
Puntos: 0
Mensaje Solución: Ajuste de línea automático mediante XSL para HTML

HOla tengo el siguiente dato:

<linealarga>
muuuuuuuuuuuuuuuuuuuuchosssssssssssss palabras que ocupaaaaaaaaaan mas de un reeeeeeglooonnnnnn deeeeeeeeeeee laaaaaaaaaaaaaaa pantalllaaaaaaaaaa
</linealarga>

Cuando transformo eso en HTML me hace una linea largisima y me crea la barra de desplazamiento horizontal (cosa que no quiero) hay una forma de ponerle Ajuste de Linea Automático "auto-wordwraping" mediante XLS necesito que me corte automaticamente las lineas para que quepan en el espacio visual del navegador, no se mucho de html pero si alguien tiene alguna idea como usar <p> o cosas similares le agradecere. Gracias

Aca encontre un articulo pero es para texto
Por suerte no estaba muy lejos la respuesta:
http://www.dpawson.co.uk/xsl/sect2/break.html

Código:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  version="2.0">
<xsl:output method="html" version="1.0" encoding="ISO-8859-1" indent="yes" omit-xml-declaration="yes"/>

<xsl:template match="texto">
      <p>FAILURE INFO:</p>
      <xsl:call-template name="substitute">
         <xsl:with-param name="string" select="." />
      </xsl:call-template>
</xsl:template>

<xsl:template name="substitute">
   <xsl:param name="string" />
   <xsl:param name="from" select="'&#xA;'" />
   <xsl:param name="to">
      <br />
   </xsl:param>
   <xsl:choose>
      <xsl:when test="contains($string, $from)">
         <xsl:value-of select="substring-before($string, $from)" />
         <xsl:copy-of select="$to" />
         <xsl:call-template name="substitute">
            <xsl:with-param name="string"
                            select="substring-after($string, $from)" />
            <xsl:with-param name="from" select="$from" />
            <xsl:with-param name="to" select="$to" />
         </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="$string" />
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>                
</xsl:stylesheet>
Este codigo ademas hacer los WordWrap Automáticos crea los saltos de línea necesarios. (EXCELENTE!)

Última edición por deZtino; 24/02/2005 a las 10:02
  #2 (permalink)  
Antiguo 16/05/2005, 03:27
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Hola deZtino,

yo casi que me encuentro con el problema contrario al que expones aqui.

Mi transformada XSLT en vez de devolver HTML quiero que devuelva texto plano cuyo contenido lo saco tanto de los datos que contienen las etiquetas de mi XML como de secciones CDATA con texto plano que meto entre la lectura de mis etiquetas XML.

Te pongo un ejemplo:

archivo.xml

<root>
<etq1>Texto etq1</etq1>
<etq2>Texto etq2</etq2>
</root>

archivo.xsl

<?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="text" />
<xsl:template match="/root">
<xsl:value-of select="etq1" />
<xsl:text disable-output-escaping="yes"><![CDATA[[Texto plano dentro de un CDATA]]></xsl:text>
<xsl:value-of select="etq2" />

</xsl:template>
</xsl:stylesheet>


Utilizo la Xalan-C para aplicar mi XSL a mi XML. El resultado de realizar esta transformada la vuelco en un archivo de texto y al editar dicho archivo me encuentro que me conserva los retornos de carro que existen entre <xsl:value-of select="etq1" />, la sección CDATA y <xsl:value-of select="etq2" /> pero yo quiero que me aparezca en una sola linea.

Supongo que si lo escribo todo seguido en el XSLT me construirá lo que yo quiero pero es bastante más largo que el ejemplo que pongo aqui, y a la hora de modificar en un futuro el XSL será más engorroso.

Las secciones CDATA no puedo quitarlas porque el texto plano que puede ir entre ellas puede contener caracteres especiales que quiero que me escriba tal cual de ahí que haya añadido <xsl:text disable-output-escaping="yes">.

Qué se me está escapando?

Besos
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:02.