Re: AW: [xsl] preserve structure of xml?

Subject: Re: AW: [xsl] preserve structure of xml?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 18 Jul 2003 12:05:09 +0100
> I am using MSXML 4.0 and I don't have problems with preserving whitespace.

MSXML (all versions) will incorrectly remove white space text nodes
while parsing the input (irrespective of whether the file is being used
via xslt) so the white space is just not there in the DOM, and so can't
be preserved by xslt.

This isn't a bug: its an intentional, documented, non conformance by the
system, see the documentation of preservewhhitespace in the SDK docs.

If you call msxml from a script or programming language api (as you must
be doing if you are using 4) then you can set preservwhitespace=true
and so keep the spaces, but if you just use the automatic client ie
parsing in IE then you don't get a chance to set this property.

David

A recent conversation on xml-dev....

Date: 8 Jul 2003 19:18:34 +0100
From: David Carlisle <davidc@xxxxxxxxx>
To: derekdb@xxxxxxxxxxxxx
CC: xml-dev@xxxxxxxxxxxxx
In-reply-to: <200307081801.TAA16980@xxxxxxxxxxxxxxxxx> (message from David
	Carlisle on Tue, 8 Jul 2003 19:01:17 +0100)
Subject: Re: [xml-dev] Handling of significant whitespace in .NET XmlReade r


I wrote

> But since I failed to reproduce this now, I'll have to eat my words and
> confirm that 
> 
> > Xslt should still
> > be acting like there was a single space there


I ate my words too soon.
If you have a _really_ trivial stylesheet that does copy the entire
document in a single operation then your magic spaces do appear in the
output, but if you do the usual thing of having an "identity template"
that walks the tree, they go.

ie.xml:
=======
<?xml-stylesheet type="text/xsl" href="ie.xsl"?>
<p>
<b>this</b> <i>is</i> <span class="zzz">bad</span>
</p>


ie.xsl:
======

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"
>


<xsl:template match="/">
<html>
<head><title>test</title></head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>



voila: No spaces.

David




________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread