<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnetslackers.com/Community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>KaushaL.NET : Strip HTML Tags</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Strip+HTML+Tags/default.aspx</link><description>Tags: Strip HTML Tags</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 SP1 (Build: 30415.43)</generator><item><title>Strip out HTML Tags to Display Plain Text in XSLT</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2008/08/30/strip-out-html-tags-to-display-plain-text-in-xslt.aspx</link><pubDate>Sat, 30 Aug 2008 05:33:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:28764</guid><dc:creator>kaushalparik</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=28764</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2008/08/30/strip-out-html-tags-to-display-plain-text-in-xslt.aspx#comments</comments><description>&lt;p&gt;I was having a requirement with my on-going project, in which I need to display the Blog RSS on Home Page. I used&amp;nbsp;&lt;a href="http://www.dotnetblogengine.net/"&gt;&lt;/a&gt;&lt;a href="http://www.dotnetblogengine.net/"&gt;BlogEngine.NET&lt;/a&gt;
 with some visual modification.&lt;br /&gt;Now, on home page I need to display latest 4 entries of entered Blogs which I easily get thru RSS link from BlogEngine.NET.&lt;br /&gt;&lt;br /&gt;But, the issue comes when I need to render the contents; that is latest 4 Blog entrties. They are entered using FCKEditor tool, So, I was getting text with HTML tags.&lt;br /&gt;Because of BlogEngine.NET uses FCKEditor while posting a new Blog Entry, there are useless &amp;lt;p&amp;gt;, &amp;lt;div&amp;gt;, &amp;lt;Span&amp;gt;, &amp;lt;font&amp;gt; and &amp;amp;nbsp; tags and values and fonts with different size and colors comes with the Blog Post entry. Specially, when people directly copy and paste some contents from another web source. &lt;br /&gt;&lt;br /&gt;I need to Strip out these HTML tags and display Plain Text for a consistant look out on my home page, so these additional &amp;lt;p&amp;gt;, &amp;lt;div&amp;gt;, &amp;lt;Span&amp;gt;, &amp;lt;font&amp;gt; and &amp;amp;nbsp; tags would not blot on my home page. To display RSS entries, means simply create a RSS Feed Reader (I think I will blog on that also), I used XSLT file to format the RSS content. &lt;br /&gt;&lt;br /&gt;I found below function in XSLT which will remove HTML tags from my Description Field from DB (which is filled from FCKEditor):&lt;br /&gt;Below is the function to remove HTML tags:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;xsl:template name=&amp;quot;removeHtmlTags&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:param name=&amp;quot;html&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:when test=&amp;quot;contains($html, &amp;#39;&amp;amp;lt;&amp;#39;)&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:value-of select=&amp;quot;substring-before($html, &amp;#39;&amp;amp;lt;&amp;#39;)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Recurse through HTML --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:call-template name=&amp;quot;removeHtmlTags&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:with-param name=&amp;quot;html&amp;quot; select=&amp;quot;substring-after($html, &amp;#39;&amp;amp;gt;&amp;#39;)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:value-of select=&amp;quot;$html&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;br /&gt;You can see that the function name is removeHtmlTags which accepts one argument / parameter named as html which is my Description field that contains HTML Tags.&lt;br /&gt;Logic is simple, its a recursive function which finds for &amp;#39;&amp;amp;lt;&amp;#39; that is &amp;#39;&amp;lt;&amp;#39; means starting of any HTML Tag and take out the substring after this &amp;#39;&amp;lt;&amp;#39; Tag using substring-before() function as substring-before($html, &amp;#39;&amp;amp;lt;&amp;#39;) and again call the function with the rest of the string left after&amp;nbsp; &amp;#39;&amp;amp;gt;&amp;#39; that is &amp;#39;&amp;gt;&amp;#39; Tag.&lt;br /&gt;&lt;br /&gt;This is how this function will be called:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:template name=&amp;quot;RssCell&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name=&amp;quot;pureText&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:call-template name=&amp;quot;removeHtmlTags&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:with-param name=&amp;quot;html&amp;quot; select=&amp;quot;DescriptionField&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div height=&amp;#39;40&amp;#39; class=&amp;#39;blog_text&amp;#39;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:value-of disable-output-escaping=&amp;quot;yes&amp;quot;&amp;nbsp; select=&amp;quot;substring($pureText, 0, 175)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;br /&gt;One Variable is declared as pureText. removeHtmlTags() function will strip out the HTML Tags and return the Plain Text values in this pureText variable.&lt;br /&gt;I am passsin DescriptionField that is my DB Field with HTML Tags.&lt;br /&gt;&lt;br /&gt;Finally, I am displaying max 175 chars of Plain Text as substring($pureText, 0, 175) inside a DIV.&lt;br /&gt;&lt;br /&gt;Thats It!&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=28764" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/XSLT/default.aspx">XSLT</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/RSS/default.aspx">RSS</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/RSS+Feed+Reader/default.aspx">RSS Feed Reader</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Strip+HTML+Tags/default.aspx">Strip HTML Tags</category></item></channel></rss>