Ken,
Yes, XML readers normalize CR and LF. But I thought, writers would write CR and
LF based on OS again. At least, on my windows machine I see that most
processors are writing CR/LF..
Karl,
Tried using <xsl:output indent="no" /> together with <xsl:preserve-space
elements="*" />? As Jesper points out, it doesn't preserve *all* ignorable
white-space, but at least those between tags.
Kind regards,
Geert
Drs. G.P.H. Josten
Consultant
http://www.daidalos.nl/
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
http://www.daidalos.nl/
KvK 27164984
De informatie - verzonden in of met dit emailbericht - is afkomstig van
Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit
bericht kunnen geen rechten worden ontleend.
From: G. Ken Holman [mailto:gkholman(_at_)CraneSoftwrights(_dot_)com]
Sent: zaterdag 19 juli 2008 4:07
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Identity Transform losing original line feed
At 2008-07-18 16:29 -0700, Karl Stubsjoen wrote:
I have a number of xsl templates which I am running an
identity transform on:
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="xsl:import/@href | xsl:include/@href">
<xsl:attribute name="href">
<xsl:value-of select="concat('get?include=', .)"/>
</xsl:attribute>
</xsl:template>
The basic principle here, is preserve the original templates
exactly,
but update the import and include href tag as specified.
So the transform works fine except that the line feed character is
changed after the transform.
An XML processor is obliged to transform all end-of-line
sequences into a line-feed character.
My proof of this is a simple, open in
notepad, where before the transform I have line spaces, and
after the
transform I do not.
So what gives? What is happening to those line feeds? Here
is my output tag:
<xsl:output method="xml" version="1.0" encoding="UTF-8"
indent="yes"/>
I *never* use indent="yes" with the identity transform
because I'm not convinced all processors treat the
white-space-only text nodes the same (or close to the same)
when indented.
When I use the identity transform I leave indent="no" in
order to preserve the original input file indentation ... you
said you wanted to preserve the original templates exactly,
so don't ask the processor to do arbitrary indentation.
But as for the line feed character, if you use CR-LF or CR
you will end up with just LF in the output because of XML
rules, not because of XSLT rules.
If you are using XSLT 2 and you want to force your output to
be CR-LF then use the output character-map facility to get this.
I hope this helps.
. . . . . . . . . . . Ken
--
Upcoming XSLT/XSL-FO hands-on courses: Wellington, NZ 2009-01
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds: publicly-available developer resources and training
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--