xsl-list
[Top] [All Lists]

[xsl] Re: preserving html tags

2006-11-01 09:51:05
My problem is related to rendering html content like
"content<b>bold</b>...contents" as it in xml into the output html. I
am using <apply-templates> to select content but later use <value-of>
to trim it. Suspect <value-of> removing the html tags (not sure), but
are there any other way to get proper results?
 
Basically my xml looks something like

                <Introduction>
                        <Title>Introduction</Title>
                        <Paragraph>In this session we 
<sub>this</sub><b>Bold</b> take a
closer look at what is meant by strategy. The classical approach to
strategic management  ... big para content
                        </Paragraph>
                        <Paragraph/>
                </Introduction>
                <Section/>

I am trying to output 1st para of certain elements & limit the para
content to certain char limit. so, in my xsl 

                <xsl:for-each select="//Introduction | 
//Session/Section/SubSection | //References | //Acknowledgements">
                        <xsl:variable name="titleContent">                      
        
                                <xsl:value-of select="name()"/>
                        </xsl:variable>
                        <xsl:variable name="paraContent">
                                <xsl:if test=".//Paragraph[1] and (name() = 
'SubSection' or
name() = 'Introduction')">
                                        <xsl:apply-templates 
select=".//Paragraph[1]"/>
                                </xsl:if>
                        </xsl:variable>
                        <p class="paradefault">
                                <xsl:call-template name="trimPara">
                                        <xsl:with-param 

name="stringLenRequired">200</xsl:with-param>
                                        <xsl:with-param name="stringInput" 

select="$paraContent"/>
                                </xsl:call-template>
                        </p>
                </xsl:for-each>

and then ...

        <xsl:template name="trimPara">
                <!-- pass the string to be cropped with required string length 
-->
                <xsl:param name="stringLenRequired"/>
                <xsl:param name="stringInput"/>
                <xsl:value-of 

select="substring($stringInput,1,number($stringLenRequired))"/>
                <xsl:value-of 

select="substring-before(concat(substring($stringInput,number($stringLenRequired)+1,number($

stringLenRequired) +20),' ' ),' ')"/> <!-- to make it a full word -->
                <xsl:if test="string-length($stringInput) > 

number($stringLenRequired)">...</xsl:if>
        </xsl:template>


This results in an html output having no <b>, <sup> or any other html
tags - while the content within them gets thro. I dont know where
those html tags gets striped. Pls let me know how can this be fixed.

Thanks in adv.
karl

Send instant messages to your online friends http://uk.messenger.yahoo.com 

--~------------------------------------------------------------------
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>
--~--

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