Re: Pulling together some threads ...

> 1. It must be DOM-compatible, i.e., use DOM concepts rather than invent
any
>   new infrastructure (such as Nodes, lists, iterators, etc.) unless
>   absolutely necessary.

+1.

> 2. It must be language neutral and vendor neutral.  As much as we all
>    like [insert favorite language or system here], it's important
>    to have as much consistency as possible across "language bindings".

+1.  But I think we have to bound this.  Which language bindings?  I think
DOM only has Java and IDL?  Are we looking to go beyond this?  (I don't see
how we can).

> 3. It must allow XPath expressions to define some subset of an XML
>    document, stream, or database and provide a way of iterating over
>    or otherwise processing that subset.

Hmm... if we are defining this in terms of the DOM, then only Node as a
context makes sense.  A stream or database may hide behind Node, but I
don't think we know about that.  So I'm not sure about "stream, or
database".

> 4. It must not require all DOM implementers to support this
functionality.

+1.

> 5. It should provide some level of compatability or migration path
>    for users of existing XPath extensions to the DOM (e.g., those of
>    Microsoft and Oracle).  For example, we could imagine holding our
>    noses and suggesting a Node::selectNodes() interface as a minimal,
>    but compatible and convenient, interface as well as a much more
>    powerful and flexible XpathQuery or whatever interface.

-0.  I don't think we should let existing proprietary extensions to the DOM
mold the design.  If it easily fits, then fine.

> 6. It may extend the DOM Node interface, or it may add one or more
>   new interfaces to the DOM, or it may be quite tangential to the DOM.

I don't think this is a requirement... it's too fuzzy.  Rather, this is an
open issue to the requirements.

> 7. ??? help me out here!

7. Match Patterns?  Though they are XSLT and not XPath, they are very
useful.

    A weak +1 from me.  We could probably live without it, though I suspect
most XPath engines will support match patterns.  Could be another optional
interface?

8. Extensions?

    +1 from me.  But note that this implies return of a generic object
type, not just the five XPath types.  Also, this may open a Pandora's Box
regarding extension bindings.  Would it be better to save this for a later
date?

9. Something that takes a node and produces a XPath or XPointer?

    +1 from me.  I've had a lot of requests for this.

10.  XPointer?  I think this is well enough defined that it is in scope.  I
think this means a function that returns a Range object.  Probably some
nasty issues.

    +1 from me.  Is there any activity regarding an XLink API??

11.  Non-node expressions?  "2+2", "child::foo='blah'", etc.

    +1 from me.

12.  I assume variables environment support.  Should be explicitly listed
as a requirement.

    +1.

13.  I assume namespace environment support.  Should be explicitly listed
as a requirement.

    +1.

Open issue:  Compiled XPath object?  or always specify via strings?  Or
both?
    Undecided from me.

(If a Compiled XPath object, then thread safety without required locking
becomes a requirement).

Open issue: Is this explicitly XPath, or is it simply an expression API
that is oriented towards XPath.
    I guess +0 for me on it being an Expression API, that can return in the
least a NodeIterator.  But I am somewhat undecided.

Open Issue: Database API support?  (for instance, authorization functions).
    -1 from me.  I think this is out of scope.

Open Issue: Multiple Document support (i.e. pass a NodeList instead of a
Node as the context).
   Undecided from me.

Is the idea to release this as part of DOM3, or as a separate note?  (This
may have been talked about somewhere else that I am not aware of).

-scott




                                                                                                                              
                    "Michael Champion"                                                                                        
                    <Mike.Champion@SoftwareA        To:     <www-dom-xpath@w3.org>                                            
                    G-USA.com>                      cc:     (bcc: Scott Boag/CAM/Lotus)                                       
                    Sent by:                        Subject:     Pulling together some threads ...                            
                    www-dom-xpath-request@w3                                                                                  
                    .org                                                                                                      
                                                                                                                              
                                                                                                                              
                    05/03/2000 04:14 PM                                                                                       
                                                                                                                              
                                                                                                                              



I've certainly learned a lot from the first few days of discussions here,
although I can imagine that it's a bit overwhelming for some!

Let's consider the "requirements" for an XPath API, or perhaps a family of
APIs.  Here's my attempt at a first cut; I offer these mostly as a way of
focussing and structuring the discussion so that we don't go off into too
many directions at once.

1. It must be DOM-compatible, i.e., use DOM concepts rather than invent any
   new infrastructure (such as Nodes, lists, iterators, etc.) unless
   absolutely necessary.

2. It must be language neutral and vendor neutral.  As much as we all
   like [insert favorite language or system here], it's important
   to have as much consistency as possible across "language bindings".

3. It must allow XPath expressions to define some subset of an XML
   document, stream, or database and provide a way of iterating over
   or otherwise processing that subset.

4. It must not require all DOM implementers to support this functionality.

5. It should provide some level of compatability or migration path
   for users of existing XPath extensions to the DOM (e.g., those of
   Microsoft and Oracle).  For example, we could imagine holding our
   noses and suggesting a Node::selectNodes() interface as a minimal,
   but compatible and convenient, interface as well as a much more
   powerful and flexible XpathQuery or whatever interface.

6. It may extend the DOM Node interface, or it may add one or more
   new interfaces to the DOM, or it may be quite tangential to the DOM.

7. ??? help me out here!


This list (which we can discuss, refine, etc.) doesn't restrict the space
of
possible outcomes very much, I'll admit, but should make clear what we all
agree on and what we may choose to "agree to disagree" on.  For example, I
can see two "flavors" of an XPath API, one that is built INTO the DOM (for
vendors such as us who have deeply imbedded XPath implementations that we
need to expose an API to) and one that is built ON TOP OF the DOM (for
vendors who want to make their XPath implementation available to any DOM
implementation).  So long as they share everything that they CAN share, I
see no problem in an W3C Note or DOM spec that allows either or both.

Comments, thoughts, flames, suggestions???

Received on Wednesday, 3 May 2000 17:20:02 UTC