Thank you for the advice. The performance is great. The only problem
is that the DOM tree needs to build in the memory and xml:id does not
seem work to work in this case (so to make the test work the XML
document was serialized and parsed back).

The following fragments from different e-mails can be relevant to this problem:

    >> DOMDocument::getElementByID() doesn't work with xml:id
    >> if the DOMDocument is being created in code.

    > And will never work that way. IDs would need to be set
    > using the DOMElement setIdAttribute methods, but these
    > aren't currently implemented as there are some libxml
    > issues surrounding this.

and

    > setIDAttribute - thats on the TODO list. Were some previous libxml
    > issues to be resolved before that could be implemented (so it will be
    > added).

So I wander if it is currently possible to build DOMDocument in the
code and and make
IDs work (or will that be possible)?

Thank you,
Karel


On 11/6/06, Daniel Veillard <[EMAIL PROTECTED]> wrote:
> On Sun, Nov 05, 2006 at 10:22:46AM +0100, Karel Michek wrote:
> > Hi,
> > When accessing XML tree that has structure outlined bellow and which
> > contains hundreds of thousands of "doc" nodes and using something like
> >
> > xmlXPathEvalExpression(/job/doc[100000]/page/meta/meta_type/meta1, 
> > xpathCtx);
> >
> > the performance is not acceptable. I wander if there is any way to
>
>   the siblings are stored in a doubly linked list. There is no array or
> database index on name tag, sorry there is no way to avoid walking up the
> full sibling list in libxml2.
>
> >  <doc id="1">
> > <doc id="2">
>
> id('100000')/page/meta/meta_type/meta1 may work if the id attribute was 
> defined
> as an XML ID. Using xml:id would do that automatically without DTD.
> In XSLT defining doc/@id as a key would also allow to index and have an 
> instant
> lookup.
>
>   Those are really basic XML and XSLT solution design, and not specifically
> dependant on libxml2, nothing replace learning about the technology in 
> question.
>
> Daniel
>
> --
> Red Hat Virtualization group http://redhat.com/virtualization/
> Daniel Veillard      | virtualization library  http://libvirt.org/
> [EMAIL PROTECTED]  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
> http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/
>
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to