XSLT has no concept of a document fragment. This is a DOM term, and it's
a poor one.
XSLT trees represent a generalization of XML documents to
"well-balanced" documents, there is no requirement that they be
"well-formed". The idea of not calling startDocument() and endDocument()
presumably comes from thinking of these as partial documents, which is
not how they are treated in the XPath data model: they are complete
documents that happen to have multiple elements/text nodes as children
of the root node.
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
David Nelson
Sent: 25 November 2002 14:19
To: 'xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: RE: [xsl] SAX startDocument and endDocument when
there's only a documentfragment
I'm way out on a limb with this but, since a root node is not
present, my guess is that the implementations that do call
startDocument() and
endDocument() are being kind since no root node is present.
Therefore, your application could collect the
documentfragment through the
startElement() endElement() methods using a stack/ hashMap
system. This should work even if my first ssumption is incorrect.
Please be kind if I'm way off base as I'm am still wading
through specs.
-----Original Message-----
From: Elliotte Rusty Harold [mailto:elharo(_at_)metalab(_dot_)unc(_dot_)edu]
Sent: Sunday, November 24, 2002 8:57 AM
To: sax-devel(_at_)lists(_dot_)sourceforge(_dot_)net
Cc: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com;
xml-dev(_at_)lists(_dot_)xml(_dot_)org;
jdom-interest(_at_)jdom(_dot_)org
Subject: [xsl] SAX startDocument and endDocument when there's
only a documentfragment
Apologies in advance for the cross-posting, but this is one of those
nasty problems that crosses the usual boundaries.
1. Consider an XSLT transform that generates a document fragment
rather than a complete document; that is, there is no single root
element.
2. Suppose TrAX is used to apply this transform and generate a result.
3. Suppose the result is a JAXP SAXResult object; that is, it fires
the contents of the result into a user-specified ContentHandler.
Question: should the the transformer fire startDocument() and
endDocument() events? even though this isn't a complete document,
only a document fragment?
The SAX API doc is not absolutely clear on this point. However, my
interpretation is that yes, it should call startDocument() and
endDocument().
The JAXP spec does not appear to have anything relevant to
say about this.
In the course of adding XSLT support to JDOM, Laurent Bihanic has
discovered that different engines behave differently. In particular,
the Oracle XML Parser for Java does not call startDocument and
endDocument. This is a roadblock in adding full XSLT support to JDOM,
so some clarification would be appreciated.
--
+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | elharo(_at_)metalab(_dot_)unc(_dot_)edu |
Writer/Programmer |
+-----------------------+------------------------+-------------------+
| XML in a Nutshell, 2nd Edition (O'Reilly, 2002) |
| http://www.cafeconleche.org/books/xian2/ |
| http://www.amazon.com/exec/obidos/ISBN%3D0596002920/cafeaulaitA/ |
+----------------------------------+---------------------------------+
| Read Cafe au Lait for Java News: http://www.cafeaulait.org/ |
| Read Cafe con Leche for XML News: http://www.cafeconleche.org/ |
+----------------------------------+---------------------------------+
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list