Alberto,
I agree, but the fact is that it does affect my other document. This is
why I think it's a bug.
In the debugger I can see that the doc released by loadGrammar has the
same address as my doc from previous parse of a xml file.


-----Original Message-----
From: Alberto Massari [mailto:[EMAIL PROTECTED] 
Sent: Monday, August 21, 2006 10:49 PM
To: [email protected]
Subject: RE: why does DOMBuilderImpl::loadGrammar releases my
DOMDocument?

Hi Ori,
from what I remember, the loadGrammar API will release the DOM tree 
that represents the XMLSchema passed as argument to loadGrammar; your 
previously loaded documents should not be affected.

Alberto

At 23.21 21/08/2006 +0200, Ori Doolman wrote:
>Hello,
>Any news about that?
>The only thing I can think of for solving this is to allocate another
>DOMBuilder parser, and use it for schema purposes only. I think that
>separating the schema grammar parsing (loadGrammar) from my XML parsing
>is a reasonable workaround.
>Also, I think it should be reported as a bug.
>What do you think?
>
>
>-----Original Message-----
>From: Ori Doolman
>Sent: Monday, August 21, 2006 2:54 PM
>To: [email protected]
>Subject: RE: why does DOMBuilderImpl::loadGrammar releases my
>DOMDocument?
>
>Axel,
>I tried calling adoptDocument myself before loadGrammar, and it still
>doesn't help.
>I don't understand why loadGrammar should release any document at all
>(and my parsed XML doc in particular).
>
>
>-----Original Message-----
>From: Axel Wei? [mailto:[EMAIL PROTECTED]
>Sent: Monday, August 21, 2006 9:39 AM
>To: [email protected]
>Subject: Re: why does DOMBuilderImpl::loadGrammar releases my
>DOMDocument?
>
>Ori Doolman wrote:
> > Hello,
> >
> > I'm parsing xml files using Xerces-c 2.7 DOM.
> >
> > I do the following things (more or less):
> >
> >
> >
> > 1.    create a XMLGrammarPoolImpl object and then create a new
> > DOMBuilder using it as an input.
> > 2.    parse an xml file using the DOMBuilder and keep a reference to
> > the DOMDocument, 'doc1'
> > 3.    parse another XML file using the same DOMBuilder and keep a
> > reference to the DOMDocument 'doc2'
> > 4.    Create a new DOMInputSource and call DOMBuilder
> > ->loadGrammar(inputSrc, SchemaGrammarType, true)
> >
> >
> >
> > The result is that my previous parsed document, 'doc2' is being
>released
> > by the following code in parsers\DOMBuilderImpl.cpp on
> > DOMBuilderImpl::loadGrammar  (line 703):
> >
> >
> >
> >         // Release DOM tree - DTD
> >
> >         DOMDocument* doc = adoptDocument();
> >
> >         if (doc)
> >
> >             doc->release();
> >
> >
> >
> >
> >
> > Can someone explain why my document is being release and how to
>overcome
> > that? Is it a bug?
>
>Ori,
>
>AFAIK you can call adoptDocument() yourself and release the doc after
>use.
>
>HTH,
>                         Axel


Reply via email to