OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What is an XPath API?

On Tue, 6 Mar 2001, Martin v. Loewis wrote:

> The recent discussion on an XPath API gives a good occasion to report
> on the XPath API we've been developing for the Python XML libraries.
> When integrating 4XSLT, we found the need for different parsers for
> XPath expressions. One is based on flex and bison; it is quite fast,
> but not thread-safe, and does not support Unicode input. The other one
> is written in pure Python using the sre regular expression engine.
> To use the same XPath implementation (i.e. set of classes representing
> XML expressions, and evaluation routines), we've defined an API which
> the parser can use to create a tree representation of an XPath
> expression. This API involves interfaces to the expression nodes, and
> factory operations to create instances of expression nodes. This API
> is available at
> http://www.informatik.hu-berlin.de/~loewis/xml/xpath.idl

One simplification that I use in XML::XPath is to merge Absolute and
Relative location path's, and rather than map directly to the grammar, map
to a more human recognition of what they are - a list of steps. What I
mean by this is that while the grammar says:

RelativeLocationPath: Step
		| RelativeLocationPath '/' Step

To a human reader, they see: /foo/bar/child as a list of things separated
by '/', not in recursive terms like the grammar.

I think this also makes the implementation easier and faster, but YMMV.


    /||    ** Founder and CTO  **  **   http://axkit.com/     **
   //||    **  AxKit.com Ltd   **  ** XML Application Serving **
  // ||    ** http://axkit.org **  ** XSLT, XPathScript, XSP  **
 // \\| // ** mod_perl news and resources: http://take23.org  **
    //  \\