Subject: RE: [xsl] Result still indented despite indent="no" From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sun, 20 Feb 2005 14:26:19 -0000 |
> The XSLT 1.0 spec(URL - > http://www.w3.org/TR/1999/REC-xslt-19991116) says > (section 3.4 Whitespace Stripping) > > "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* > stripped. > > 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. " > > There seems no ambiguity, that in this example > (provided by Dare Obasanjo) - white spaces *must* be > stripped (as none of the above 3 conditions in spec > are holding true). Wrong. The first condition is true. The condition for an element name in a source document to be a member of the set of whitespace-preserving element names is defined in Erratum E30: "For source documents, the set of whitespace-preserving element names is specified by xsl:strip-space and xsl:preserve-space top-level elements. Whether an element name is included in the set of whitespace-preserving names is determined by the best match amongst xsl:strip-space or xsl:preserve-space elements: it is included if and only if there is no match or the best match is an xsl:preserve-space element." In other words, if the stylesheet doesn't specify xsl:strip-space for an element, then its whitespace text nodes must be preserved. (You get the same answer from reading the original spec without the erratum; the purpose of the erratum is to clarify what happens if there are conflicting strip-space and preserve-space declarations.) Michael Kay http://www.saxonica.com/ > > It seems to me, MSXML4 is compliant in this regard. I > fear, Saxon and Xalan are not compliant.. > > Also, I feel what the spec recommends in this > regard(white space stripping) is correct.. > Unless the user explicitly gives instruction to > preserve white spaces, they should be stripped. *White > space only, text nodes* are of no use for application. > > > Regards, > Mukul > > --- "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> > wrote: > > > At 2005-02-19 19:02 -0800, Sebastien Boisvert wrote: > > >I'm getting a result after applying a stylesheet > > where > > >some nodes get indented for some reason, even if I > > set > > >indent="no" and even the source document is not > > >indented. > > > > > >It seems that calling a certain template when > > >processing the root node somehow sets the indent > > mode > > >to 'yes' but only for that one template, as running > > >the default template (ie <xsl:apply-templates />) > > does > > >not produce this problem... > > > > Good sleuthing there... well done ... that points to > > interpretation of the > > stylesheet into a node tree. > > > > >I've tried this on another processor with the exact > > >same stylesheet and source code and it works as > > >expected (indents do not happen). > > > > Ahhh .. that points to a bug ... unless of course > > you used the MSXSL > > processor for your alternate test in which it isn't > > at all definitive > > because the Microsoft processor throws away > > whitespace-only text nodes > > contrary to the explicit specification rules[1]. If > > you used a processor > > conformant in the area of whitespace handling, then > > the test is more > > meaningful. > > > > >Is there something/someway that I might be calling > > the > > >template that would cause it to produce indents in > > >libxslt? > > > > Do you have xml:space="preserve" used anywhere? > > That overrides the rules > > regarding ignoring whitespace-only text nodes from > > the stylesheet node tree > > when building the result tree and would make any > > such annotated nodes visible. > > > > I hope this helps. > > > > ...................... Ken > > > > > > [1] - excerpts from an online debate regarding this > > issue of handling > > whitespace-only text nodes, July 2003: > > > > Microsoft's question: > > > > > > > http://lists.xml.org/archives/xml-dev/200307/msg00868.html > > > > Microsoft's answer (by another employee): > > > > > > > http://lists.xml.org/archives/xml-dev/200307/msg00872.html > > > > My claim where I observe Microsoft's non-compliance: > > > > > > > http://lists.xml.org/archives/xml-dev/200307/msg00870.html > > > > Microsoft's counter-claim: > > > > > > > http://lists.xml.org/archives/xml-dev/200307/msg00873.html > > > > My response: > > > > > > > http://lists.xml.org/archives/xml-dev/200307/msg00880.html > > > > Microsoft's position at the end of the debate: > > > > > > > http://lists.xml.org/archives/xml-dev/200307/msg00885.html > > > > I haven't heard anything official since, but as far > > as I know, this > > whitespace-handling behaviour has not changed. > > > > > > -- > > World-wide on-site corporate, govt. & user group > > XML/XSL training. > > G. Ken Holman > > mailto:gkholman@xxxxxxxxxxxxxxxxxxxx > > Crane Softwrights Ltd. > > http://www.CraneSoftwrights.com/s/ > > Box 266, Kars, Ontario CANADA K0A-2E0 > > +1(613)489-0999 (F:-0995) > > Male Breast Cancer Awareness > > http://www.CraneSoftwrights.com/s/bc > > Legal business disclaimers: > > http://www.CraneSoftwrights.com/legal > > > > > > __________________________________ > Do you Yahoo!? > Read only the mail you want - Yahoo! Mail SpamGuard. > http://promotions.yahoo.com/new_mail
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Result still indented des, Mukul Gandhi | Thread | RE: [xsl] Result still indented des, Mukul Gandhi |
Re: [xsl] Result still indented des, Mukul Gandhi | Date | RE: [xsl] Result still indented des, Mukul Gandhi |
Month |