xsl-list
[Top] [All Lists]

RE: SAX startDocument and endDocument when there's only a documentfragment

2002-11-25 09:01:13
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



<Prev in Thread] Current Thread [Next in Thread>