Re[2]: [xsl] Formatting hyperlinks and paragraphs

Subject: Re[2]: [xsl] Formatting hyperlinks and paragraphs
From: Peter Simard <peter@xxxxxxxxxxxxxxx>
Date: Thu, 10 Jul 2003 10:19:14 -0400
Hello Jeni,

Thursday, July 10, 2003, 5:06:08 AM, you wrote:

JT> Hi Peter,

>> In a perfect world the stylesheet code below will take text from an
>> xml element, and:
>>
>> 1)  transform  text  that begins with 'http' into hyperlinks
>> 2) format the output to preserve line breaks.
>>
>> At the moment the code successfully formats the hyperlinks, but not
>> line breaks. Hopefully someone can point out my error?

JT> The problem in your stylesheet is that you add <br> elements as line
JT> breaks in your text, and then process the root node of the result tree
JT> fragment that you get, but you treat the root node as a string in the
JT> text2hyper template, which means that all the <br> elements get lost.

JT> You could change your stylesheet so that instead of passing the root
JT> node of the result tree fragment to the text2hyper template, you apply
JT> templates to it, in copy mode:

JT>   <xsl:apply-templates select="msxsl:node-set($temp)" mode="copy" />

JT> and have a template that copies the <br> elements:

JT> <xsl:template match="br" mode="copy">
JT>   <xsl:copy-of select="." />
JT> </xsl:template>

JT> and a template that matches the text nodes, and passes on their
JT> content to be marked up as hyperlinks by your text2hyper template:

JT> <xsl:template match="text()" mode="copy">
JT>   <xsl:call-template name="text2hyper">
JT>     <xsl:with-param name="strTemp" select="." />
JT>   </xsl:call-template>
JT> </xsl:template>

JT> Alternatively you could combine the two templates. For example, rather
JT> than just doing:

JT>   <xsl:value-of select="substring-before($string, $from)" />

JT> in the NewLine2Break template, you could call the text2hyper template
JT> on that substring:

JT>   <xsl:call-template name="text2hyper">
JT>     <xsl:with-param name="strTemp"
JT>                     select="substring-before($string, $from)" />
JT>   </xsl:call-template>

JT> Whether you want to do this probably depends on whether you'll ever
JT> want to use NewLine2Break *without* adding hyperlinks to the lines,
JT> and how bad you feel about using an extension function.

JT> Cheers,

JT> Jeni

JT> ---
JT> Jeni Tennison
JT> http://www.jenitennison.com/


JT>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Good Morning Jeni;

A  quick  thank you. I'm going to go with your suggestion of combining
the  templates  and avoid using an extension. This is provin more of a
challenge than I had anticipated though.

I'm sure I'll have more questions shortly.

Thanks,

Pete





-- 

Peter 
mailto:peter@xxxxxxxxxxxxxxx



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread