xsl-list
[Top] [All Lists]

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

2004-08-02 04:49:01
Hello

Excuse me for my way of expressing in English but I am Spanish and my English 
is bad.

Thank you very much.
 Javi

--
DIIC
Facultad de Imformatica
Universidad de Murcia


---------- Original Message -----------
From: Wendell Piez <wapiez(_at_)mulberrytech(_dot_)com>
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Sent: Fri, 30 Jul 2004 12:16:51 -0400
Subject: Re: [xsl] To preserve line jumps on having gone on from XML to HTML

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 &#xA; or &#10; (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

--+------------------------------------------------------------------
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>
--+--
------- End of Original Message -------



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