Subject: Re: [xsl] HTML character entity issue From: Michael Müller-Hillebrand <mmh@xxxxxxxxxxxxx> Date: Tue, 23 Dec 2008 23:09:36 +0100 |
I haven't read the original post, but I guess it would be sufficient to "repair" the XML during processing. Of course it is always better to get correct XML in the first place. Also sometimes it is simpler to preprocess such documents with a different tools to search and replace all "<br/>" with "<br/>", but nevertheless it is possible with XSL.
"<br/>" is nothing special for XSL, just simple text. So any "repair" must go into a template that processes text:
<xsl:template match="text()" priority="2"> <xsl:call-template name="fix-br"> <xsl:with-param name="text" select="."/> </xsl:call-template> </xsl:template>
<xsl:template name="fix-br"> <xsl:param name="text" select="''"/> <xsl:variable name="bad-br" select="'<br/>'"/> <xsl:choose> <xsl:when test="contains($text, $bad-br)"> <xsl:value-of select="substring-before($text, $bad-br)"/> <br/> <xsl:call-template name="fix-br"> <xsl:with-param name="text" select="substring-after($text, $bad-br)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template>
This is recursive in case there is more than one "bad-br" in your content. With XSLT 2.0 it could be written with a function and/or regular expressions.
Hey thanks Michael and Vasu for replying back. My response got slow on this. Nothing out of this seems to be working.
I have tried the CDATA and disable-output-escaping="yes". I think I am using it in wrong way. Can you elaborate how to use it? I give you description of my files.
---------------------------part of index.xml--------------------------
<katalog> <produkt> <!-- what a story --> <gruppe>Universal-T|rddmpfer VS 2000</gruppe> <titel>Das krdftige Topmodell mit verkleidetem Haken</titel> <content>My sampla text <br/> DICTATOR-T|rddmpfer bremsen zufallende T|ren progressiv, d.h. besonders sanft ab, ziehen sie leise ins T|rschlo_ und halten sie sicher geschlossen.
</content> </produkt> </katalog>
-------------------- part of index.xsl --------------------------
............. ......... <fo:table-row> <fo:table-cell > <fo:block> <xsl:value-of select="content" disable-output-escaping="yes" />
</fo:block> </fo:table-cell> ............. ......... <xsl:template match="br" >
<xsl:text><![CDATA[<br />]]></xsl:text> </xsl:template> ---------------------------------------------------------------------
So I have given a view of my files. so the "br" tag is actually <br/> in xml and it is appearing as <br / > in output Michael i tried by your way also Is there any namespace that is neccessary for all this to work ?
Thanks and regards Atul
-- _______________________________________________________________ Michael M|ller-Hillebrand: Dokumentations-Technologie Adobe Certified Expert, FrameMaker Lvsungen und Training, FrameScript, XML/XSL, Unicode Blog: http://cap-studio.de/ - Tel. +49 (9131) 28747
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] HTML character entity iss, Atul Shinh | Thread | Re: [xsl] HTML character entity iss, Atul Shinh |
Re: [xsl] XSLT grouping(?) issue, Fredde Hedberg | Date | Re: [xsl] HTML character entity iss, Atul Shinh |
Month |