Subject: Re: [xsl] Replace new lines by <br> and double quote with special char: Problem retaining HTML tags|
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 8 Sep 2006 16:06:31 +0100
> 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>"