xsl-list
[Top] [All Lists]

Re: To preserve line jumps on having gone on from XML to HTML

2004-07-30 09:16:51
Javi,

Since the line breaks ("line jumps" is a good but unusual thing to call them) are not expressed in your XML, to convert them into markup requires processing the string value of the node. In this case, the best XSLT solution is to use a recursive template that takes the string and breaks it into pieces one at a time at the Line Break ('jump') character, which is character 
 or 
 (as hexadecimal or decimal character references).

This could look like:

<xsl:variable name="delim" select="'&#xA;'"/>

<xsl:template match="Body">
  <p>
    <xsl:call-template name="mark-string">
      <xsl:with-param name="string-left" select="string(.)"/>
    </xsl:call-template>
  </p>
</xsl:template>

<xsl:template name="mark-string">
  <xsl:param name="string-left" select="string(.)"/>
  <xsl:if test="$block">
    <xsl:variable name="segment">
      <xsl:choose>
        <xsl:when test="contains($string-left,$delim)">
          <xsl:value-of select="substring-before($string-left,$delim)"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$string-left"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:value-of select="$segment"/>
    <br/>
    <xsl:call-template name="mark-string">
<xsl:with-param name="string-left" select="substring-after($string-left,$delim)"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

This is fully documented in the FAQ at http://www.dpawson.co.uk/xsl/sect2/N7240.html (look for "CLRF to BR").

In XSLT 2.0, where a tokenize() function is available, this is much easier.

Cheers,
Wendell

BTW <Body Articulate>...</Body Articulate> is not well-formed XML; no space can be in the name. Try <Body_Articulate> or maybe <Body type="Articulate">.

 At 06:58 AM 7/30/2004, you wrote:
Hello

I have a problem, i have a file XML like :

<Article>
   <title>
      Article 1
   </title>
   <Body Articulate>
      - Line
      - Another Line
      - Another line
      Another Line
   </Body Articulate>
</Article>

Then I use a file XSLT to transform it in html, but clear the part of the
lines me appears with the line jump, but without a <BR> at the time on having
seen it in the browser the line jumps do not remain.

You know as this might do?

Thank you very much
 Javi.

--
DIIC
Facultad de Imformatica
Universidad de Murcia


--
DIIC
Facultad de Imformatica
Universidad de Murcia


--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--

___&&__&_&___&_&__&&&__&_&__&__&&____&&_&___&__&_&&_____&__&__&&_____&_&&_
    "Thus I make my own use of the telegraph, without consulting
     the directors, like the sparrows, which I perceive use it
extensively for a perch." -- Thoreau


<Prev in Thread] Current Thread [Next in Thread>