Re: [xsl] Identity Transform losing original line feed

Subject: Re: [xsl] Identity Transform losing original line feed
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 18 Jul 2008 22:07:17 -0400
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:apply-templates select="@* | node()" />

<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@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Cancer Awareness Nov'07 Legal business disclaimers:

Current Thread