XSL - Problemas con <br>

 
Vista:

Problemas con <br>

Publicado por Ramón (1 intervención) el 24/06/2020 13:05:16
Tengo problemas para generar los <br> en mi html.
Estoy con una obra de teatro escrita en verso.
la estructura es la siguiente en xml tei:
1
2
3
4
<sp>
<l></l>
<l></l>
</sp>

En el xslt yo creo un template con esta estructura
1
<br><xsl:value-of select="l"/></br>

Pero el html me devuelve esto:
1
<br>Vos y yo sólo faltamos. Dad acá esa mano hermosa.</br>

Cuando yo quiero que devuelva:
1
2
<br>Vos y yo sólo faltamos.</br>
<br>Dad acá esa mano hermosa.</br>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Generación de saltos de línea en HTML para versos teatrales

Publicado por Alejandro (227 intervenciones) el 07/07/2023 19:21:30
Para generar saltos de línea en HTML, no se utiliza la etiqueta `<br></br>`, sino simplemente la etiqueta `<br>`. Además, en tu código XSLT estás utilizando `xsl:value-of` para obtener el contenido de `<l>`, lo cual no preserva los elementos HTML dentro de `<l>`. Para solucionar esto, puedes utilizar `xsl:apply-templates` en lugar de `xsl:value-of` y definir un template separado para procesar `<l>`.

Aquí tienes un ejemplo de cómo podrías modificar tu código XSLT para generar saltos de línea apropiados en HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
  <xsl:template match="/">
    <html>
      <body>
        <xsl:apply-templates select="//sp"/>
      </body>
    </html>
  </xsl:template>
 
  <xsl:template match="sp">
    <xsl:apply-templates/>
  </xsl:template>
 
  <xsl:template match="l">
    <br/>
    <xsl:value-of select="."/>
    <br/>
  </xsl:template>
 
</xsl:stylesheet>

Con este código, cada vez que encuentre un elemento `<sp>`, aplicará los templates correspondientes. Luego, el template que coincide con `<l>` generará una etiqueta `<br>` antes y después de mostrar el contenido de `<l>`, creando así un salto de línea entre los versos.

Recuerda que también puedes personalizar el aspecto visual de los saltos de línea utilizando CSS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar