[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: What is an XPath API?
- From: Matt Sergeant <matt@sergeant.org>
- To: "Martin v. Loewis" <martin@loewis.home.cs.tu-berlin.de>
- Date: Wed, 07 Mar 2001 00:05:03 +0000 (GMT)
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.
--
<Matt/>
/|| ** 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 **
\\//
//\\
// \\