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(_at_)nag(_dot_)co(_dot_)uk]
Sent: Friday, September 08, 2006 8:37 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] 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>"
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--