xsl-list
[Top] [All Lists]

RE: Result still indented despite indent="no"

2005-02-20 09:24:42
Thank you Mr. Kay for providing URL of the errata. 

The erratum says..
"For source documents, the set of
whitespace-preserving element names is specified by
xsl:strip-space and xsl:preserve-space top-level
elements". 

And the section "3.4 Whitespace Stripping" of the spec
says..
"A text node is preserved if any of the following
apply:

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
default.

Otherwise, the text node is stripped".

It seems quite clear, that point 1) above defines
behaviour when xsl:strip-space and xsl:preserve-space
elements *are present*. In the absence of
xsl:strip-space and xsl:preserve-space, only rules 2)
and 3) will apply.

Since rule 3) is not holding true for example XML -
<pre>
 <b>bold</b>
 <i>italic</i>
</pre>

Which text nodes will be preserved will be determined
only by rule 2). So the "white space only text nodes"
should be stripped.

Please pardon me, because my opinion is different from
yours.

Regards,
Mukul

--- Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:

Hello Mr. Kay,
  Please pardon me, because my opinion is
different
from yours. You have refered an Erratum section
(E30).
Its not provided in the spec
URL(http://www.w3.org/TR/xslt). I cannot find it.
Can
you please provide the URL?

Every W3C specification provides a link to the
errata in the introduction to
the spec: see the "Status of this Document" section.
For XSLT 1.0 it's at
http://www.w3.org/1999/11/REC-xslt-19991116-errata/

As I said, you only really need the erratum to
understand the rules in cases
when both strip-space and preserve-space are
present. In simple cases you
get the same result from the original text:

For source documents, the set of
whitespace-preserving element names is
specified by xsl:strip-space and xsl:preserve-space
top-level elements.
These elements each have an elements attribute whose
value is a
whitespace-separated list of NameTests. Initially,
the set of
whitespace-preserving element names contains all
element names. If an
element name matches a NameTest in an
xsl:strip-space element, then it is
removed from the set of whitespace-preserving
element names. If an element
name matches a NameTest in an xsl:preserve-space
element, then it is added
to the set of whitespace-preserving element names.


You are saying, for the example XML -
<pre>
 <b>bold</b>
 <i>italic</i>
</pre>

The first condition is true (i.e. The element name
of
the parent of the text node is in the set of
*whitespace-preserving element names*).

Whereas, whitespace-preserving element names *is
specified by* xsl:strip-space and
xsl:preserve-space
elements (given in Erratum E30).

Is'nt my understanding therefore right?

I don't know what your understanding is, but in the
absence of
xsl:strip-space, all these elements are
whitespace-preserving and the <pre>
element therefore has 5 children.

Michael Kay
http://www.saxonica.com/


                
__________________________________ 
Do you Yahoo!? 
All your favorites on one personal page ? Try My Yahoo!
http://my.yahoo.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>
--~--