RE: [libxml++] xpath with namespaces
- From: <Cumming External comneon com>
- To: <libxmlplusplus-general lists sourceforge net>
- Subject: RE: [libxml++] xpath with namespaces
- Date: Tue, 21 Dec 2004 11:30:09 +0100
Thanks, Daniel. This is really helpful.
> -----Original Message-----
> From: libxmlplusplus-general-admin lists sourceforge net
> [mailto:libxmlplusplus-general-admin lists sourceforge net]
> On Behalf Of Daniel Veillard
> Sent: Monday, December 20, 2004 10:28 PM
> To: libxmlplusplus-general lists sourceforge net
> Subject: Re: [libxml++] xpath with namespaces
>
>
> On Mon, Dec 20, 2004 at 10:10:08PM +0100, Murray Cumming wrote:
> > On Mon, 2004-12-20 at 02:51 -0500, Daniel Veillard wrote:
> > > > > > > If I use "//gjob:Jobs" i get "XPath error :
> Undefined namespace prefix",
> > > > > > > and "//Jobs" just returns an empty set.
> > >
> > > Perfectly normal, the expression uses the gjob prefix
> and it was not
> > > registered.
> >
> > Isn't this what
> > <gjob:Helping xmlns:gjob="http://www.gnome.org/some-location">
> > does?
>
> No. The XPath is compiled without a priori knowledge of the instance.
> And a given prefix can be defined twice differently in a document
>
> <bad>
> <gjob:Helping xmlns:gjob="http://www.gnome.org/some-location">
> <gjob:Helping xmlns:gjob="http://www.gnome.org/some-other-location">
> </bad>
>
> you must define what "gjob" is bound to before "//gjob:Jobs"
> makes any sense.
>
> > >
> http://xmlsoft.org/html/libxml-xpathInternals.html#xmlXPathRegisterNs
> > > at the C level, it may not be available in libxml++
> >
> > Thanks Daniel. At the moment, we hide the xmlXPathContext completely
> > inside our Node::find(xpath) function, so we would have to
> create some
> > XPathContext object that can be passed around.
>
> hum, yes the XPath API seems severely broken without ways
> to associate
> prefixes bindings. Maybe a new entry point allowing to define a set of
> bindings as well as the XPath expression can be done without
> refactoring
> everything
> find(const char *expression, namespaces);
> where namespaces is a list of couples (prefix/URI)
>
> > Is that a concept that exists in a standard, or just something that
> > allows libxml users to work around broken documents? Many of the
>
> it's standard part of XPath evaluation context
> http://www.w3.org/TR/xpath#section-Introduction
> it's better to read the spec before designing the API around it :-\
>
> > functions look quite internal. Are there any higher-level
> documents that
> > explain what they might be used for?
>
> Most of it can be derived from the spec plus simple implementation
> decisions. Most of the libxml2 XPath implementation docs are related
> to libxslt
> http://xmlsoft.org/XSLT/internals.html#XPath
>
> The prefix binding is really a core property of XPath evaluation,
> easy to get wrong (//foo cannot selected a default namespaced node),
> and a source of FAQs about XPath
>
> Daniel
>
> --
> Daniel Veillard | Red Hat Desktop team http://redhat.com/
> veillard redhat com | libxml GNOME XML XSLT toolkit
> http://xmlsoft.org/
> http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
>
>
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide
> Read honest & candid reviews on hundreds of IT Products from
> real users.
> Discover which products truly live up to the hype. Start reading now.
> http://productguide.itmanagersjournal.com/
> _______________________________________________
> Libxmlplusplus-general mailing list
> Libxmlplusplus-general lists sourceforge net
> https://lists.sourceforge.net/lists/listinfo/libxmlplusplus-general
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]