SAX and delayed entity loading

John Cowan (david@megginson.com)
Wed, 2 Dec 1998 16:41:17 -0500 (EST)


Gabe Beged-Dov writes:

> I have been performing thought experiments (in other words, I
> haven't actually tried it out :-) on how to delay loading of
> external entities using SAX. The scenario is you want to do browser
> style incremental presentation where you delegate any external
> entity loading to separate SAX pipelines. You want to spew the
> overrall structure into the users' face as quickly as possible and
> then fill in the blanks.

I think that this is a mistaken approach -- it confuses entities with
links. For what you want to do, it would be much better to have
something like the following:

<subdoc xml:link="simple" href="chapter.xml" show="embed"/>

Now, you can make the chapter a separate document, and parse (and
render) it whenever you want.

> My impression of the SAX architecture is that the parser is expecting to
> handle all loading of external entities itself. It will call the
> EntityResolver expecting to get either a system identifier or a stream.
> There doesn't seem to be a third possibility of "ignore this entity".
>
> It seems you can fake this by returning a dummy stream to the parser from
> your resolver. This dummy stream would have minimal well formed content
> (could it be empty?) and then on you go. Are there other possibilities?

An empty stream would be sufficient.

All the best,

David

-- 
David Megginson                 david@megginson.com
           http://www.megginson.com/