You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-dev@maven.apache.org by Vincent Massol <vi...@massol.net> on 2007/12/31 14:02:05 UTC

Adding DOM tree support to Doxia?

Hi,

While it's nice that Doxia supports stream-parsing, there are valid  
use cases for generating a DOM tree of source elements (the Blocks  
that can be found in the confluence and twiki parser implementations  
for example).

Since the confluence and twiki parsers already need these blocks, and  
since I need them too for the XWiki parser I think there's already a  
valid use case for them.

In addition, I would add the method to return this DOM tree to the  
Parser class in doxia-core (or add 2 interfaces, one for stream  
parsers and one for DOM parsers).

WDYT?

Note: In XWiki land we need to parse all pages into a DOM tree for  
performance reasons: we'll cache the DOM tree so that the rendering  
can be done faster.

Thanks
-Vincent

Re: Adding DOM tree support to Doxia?

Posted by Jason van Zyl <ja...@maven.org>.
On 31 Dec 07, at 5:02 AM 31 Dec 07, Vincent Massol wrote:

> Hi,
>
> While it's nice that Doxia supports stream-parsing, there are valid  
> use cases for generating a DOM tree of source elements (the Blocks  
> that can be found in the confluence and twiki parser implementations  
> for example).
>

If you look at the StructureSink it's basically an in-memory model  
that can replay events. But it would be easy enough to make a DOMSink  
easy enough. Then you could read it like a DOM or play the events back.

> Since the confluence and twiki parsers already need these blocks,  
> and since I need them too for the XWiki parser I think there's  
> already a valid use case for them.
>

I definitely think it's useful.

> In addition, I would add the method to return this DOM tree to the  
> Parser class in doxia-core (or add 2 interfaces, one for stream  
> parsers and one for DOM parsers).
>

As long as this is done lazily upon request and not done all the time.

> WDYT?
>
> Note: In XWiki land we need to parse all pages into a DOM tree for  
> performance reasons: we'll cache the DOM tree so that the rendering  
> can be done faster.
>

Sure, I think that's what was originally done with the StructureSink  
and completely valid. I'm sure you we could come up with a super  
efficient, pre-digested structure that tracked macros and any other  
bits.

I say prototype away on a branch, or if it's all additions to the API  
then just do it on trunk.

> Thanks
> -Vincent

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
jason at sonatype dot com
----------------------------------------------------------

We all have problems. How we deal with them is a measure of our worth.

-- Unknown