[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

re: We need an XPath API

  • From: Robin Berjon <robin@k...>
  • To: David Megginson <david@m...>
  • Date: Sun, 04 Mar 2001 03:30:33 +0100

css sac alpha.tar.gz
At 20:33 03/03/2001 -0500, David Megginson wrote:
>Charles Reitzel writes:
>
> > Proposal: let's give XPath the SAX treatment.
>
>I'd actually recommend giving XPath the DOM treatment.  Well, not
>really DOM, but maybe a cleaner, in-memory tree.  XPaths (even hairy
>ones) are extremely small, and the same path object is likely to be
>reused many times, so I see no need to force the pain of an
>event-based interface on users (unless someone thinks we're going to
>be seeing gigabyte-long XPath expressions).

I think both can be useful. What I've got in mind is the building of custom
objects based on the content of an XPath expression. I've been down the
"XPath OM" path before by hacking an interface onto Matt Sergeant's
XML::XPath module. It can be very useful, but not as useful in some
contexts as a builder callback style interface. Converting an object model
into another is often harder than simply handling builder events. That's
why CSS has SAC and DOM2 (http://www.w3.org/TR/DOM-Level-2-Style/css.html)
interfaces. Both are useful, but anyone wishing, say, to build a custom
selector object to get elements out of his own type of tree will probably
use SAC.

Plus, a "DOM treatment" seems to imply making it a tree. The only useful
context I can see where XPath's ought to be treated as trees is in the
parse tree resulting from the XPath (but I may be totally wrong here). It
depends if you want to see foo|bar|baz treated as something "flat" (eg a
UnionList), or if you want:

<Union>
    / \
foo  <Union>
           /  \
        bar  baz

Again, I think that SAC offers a good model because it combines both.
People interested in this should have a look at it. Forget the
DocumentHandler interface which is not what you're interested in, and look
at Selector, SelectorFactory, Condition, and ConditionFactory. There's a
builder interface and an interface to selectors (which include conditions).
The latter is in a tree-like fashion (as above) which has pros and cons.

PS: for those interested, I've just released a SAC parser for Perl. It's in
alpha, and hasn't been put on CPAN yet because I couldn't find a sufficient
number of complex enough style sheets to test it with (I've only tested
with a number of simpler ones). Until it is released, you can get it from
http://www.berjon.com/perl/CSS-SAC-alpha.tar.gz. My plan is precisely to
end up using it as a test case for a selector API of the kind that has been
described in this thread.

-- robin b.
Brain damage is all in your head.


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.