[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Replace new lines by <br> and double quote with s
Hi David, The XSL I have used is given below. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="no"/> <xsl:template match="elem"> <xsl:text> Elem Id, News Details </xsl:text> <xsl:value-of select="@id"/> <xsl:text>, "</xsl:text> <xsl:apply-templates select="text/*"/> <xsl:text>"</xsl:text> </xsl:template> <xsl:template match="text()"> <xsl:call-template name="transformXMLString"> <xsl:with-param name="StringToTransform" select="."/> </xsl:call-template> </xsl:template> <xsl:template name="transformXMLString"> <xsl:param name="StringToTransform" select="."/> <xsl:value-of select="translate($StringToTransform,' "','@!')"/> </xsl:template> </xsl:stylesheet> I am getting the following output. Elem Id, News Details 1234, " This is some data This is some special characters <AHLN.AS> A group of students have gone to picnic. ** This is another special tag@ @ @ " I am not able to retain the HTML tags. The output should be as follows. Elem Id, News Details 1234, "<p> This is some data </p><br><p></p><br><p> This is some special characters <AHLN.AS> </p><br><p> A group of students have gone to picnic. </p><br><p> </p><br><PRE> ** This is another special tag<br></PRE></text><br></elem>" Line breaks should be replaced by <br> and HTML tags retained as it is. It should be CSV like output. Thanks & Regards, Ambika Prasad Das -----Original Message----- From: David Carlisle [mailto:davidc@xxxxxxxxx] Sent: Friday, September 08, 2006 8:37 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: Replace new lines by <br> and double quote with special char: Problem retaining HTML tags > I have tried David's code. But the output is required in a particular > format since the output is the input for another application In my reply I said > You just need to fill in the replace template and templates for any > elements that you need to process by somthing other than copy. which in this case means adding a template for elem something like this <xsl:template match="elem"> <xsl:text> Elem Id, News Details </xsl:text> <xsl:value-of select="@id"/> <xsl:text>, "</xsl:text> <xsl:apply-templates select="text/*"/> <xsl:text>"</xsl:text> </xsl:template> and a template for the replace, something like this (which isnt the replace you wanted but fits on one line so does as an example) <xsl:template name="transformXMLString"> <xsl:param name="StringToTransform" select="."/> <xsl:value-of select="translate($StringToTransform,' "','@!')"/> </xsl:template> Then it appears that you want the line breaks in all elements (eg <pre>). changing, not just those below <p> so change <xsl:template match="p//text()"> to <xsl:template match="text()"> so thattemplate matches all text nodes. Then the code that I posted before on the input that you just posted produces the following which looks fairly close to what you want to me: saxon grumble.xml grumble.xsl Elem Id, News Details 1234, "<p> This is some data </p><p> </p><p> This is some special characters <AHLN.AS> </p><p> A group of students have gone to picnic. </p><p> </p><PRE> ** This is another special tag@ @ @ </PRE>"
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|