Re: [xsl] Result still indented despite indent="no"

Subject: Re: [xsl] Result still indented despite indent="no"
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Mon, 21 Feb 2005 06:51:05 +1100
On Sun, 20 Feb 2005 20:08:36 +1100, Dimitre Novatchev
<dnovatchev@xxxxxxxxx> wrote:
> On Sat, 19 Feb 2005 23:59:30 -0800 (PST), Mukul Gandhi
> <mukul_gandhi@xxxxxxxxx> wrote:
> > Hello Dimitre,
> >  The sentence you are refering ("Initially , the set
> > of whitespace-preserving element names contains all
> > element names"), is part of algorithm description by
> > the XSLT 1.0 spec, to implement xsl:strip-space and
> > xsl:preserve-space instructions..
> Once again you demonstrate wrong understanding.
> Let other people explain this...

Good morning,

Wow... I see that more than 10 hours and 14 new messages later Mukul
has still a persistent problem in understanding the XSLT 1.0
specification on white-space stripping.

Mukul, by now the problem in your thinking should be obvious. Do you
see it yourself? If not, here it is:

To arrive at the wrong conclusions, you are using the following
excerpt from the spec, let's label it


"After the tree for a source document or stylesheet
document has been constructed, but before it is
otherwise processed by XSLT, some text nodes are

A text node is preserved if any of the following

1) The element name of the parent of the text node is
in the set of whitespace-preserving element names.

2) The text node contains at least one non-whitespace
character. As in XML, a whitespace character is #x20,
#x9, #xD or #xA.

3) An ancestor element of the text node has an
xml:space attribute with a value of preserve, and no
closer ancestor element has xml:space with a value of

Otherwise, the text node is stripped. "

The *obvious* problem is that you have omitted part of the text.

You omitted this very important sentence, which precedes the excerpt
lets label it


"The stripping process takes as input a set of element names for which
whitespace must be preserved."

The other big problem you demonstrate is a consistent failure to see
that the  excerpt "A" you quote *only by itself* cannot be used to
determine if a given white-space-only node should be stripped or not.

The reason is that this text refers to a  "set of
whitespace-preserving element names" -- the set of names of elements,
for  which whitespace should be preserved. This set is undefined in
the excerpt quoted by you.

Therefore this excerpt is incomplete and it is wrong to make any
conclusions (including the one you make) only on this excerpt.

This is why it is necessary to resolve the incompleteness. The spec
does this by providing exactly the missing part. This is done in the
following sentence a few lines below, let's label it


"Initially , the set of whitespace-preserving element names contains
all element names"

Now, having "A" + "B" + "C"  there's a complete description of the
actions to be taken to determine whether a given whitespace-only node
is to be stripped or not.

Based on this complete description from the XSLT 1.0 specification
everyone can conclude that in the example given by you the results
obtained by Saxon and Xalan are correct.

The only way to arrive at your (opposite) conclusion is to ignore the
sentence "C" and to assume that:
    initially , the set of whitespace-preserving element names is empty.

But this assumption is exactly the opposite of what "C" is saying.

Therefore, you arrived at the wrong conclusion by ignoring part of the
specification and by making an assumption, which is contrary to the

I hope that we can agree to stop further discussing the flaws in your
logic as these flaws should now be clear to you.


Current Thread