W3C home > Mailing lists > Public > www-dom-xpath@w3.org > May 2000

RE: [dom-xpath] Competing Proposals Proposal

From: Scott Boag/CAM/Lotus <Scott_Boag@lotus.com>
Date: Wed, 10 May 2000 17:46:27 -0400
To: www-dom-xpath@w3.org
Message-ID: <OF5899084E.47E762B3-ON852568DB.007264AE@lotus.com>

Dave, thanks for the good comments.

> Caution? 'It should be possible'. either it is or it isn't.

I changed this to "it will be", since this is a goal.

> I can't see which way you are looking, 'at' the interface or from behind
> it, when you mention perl / xql. Language neutrality has been mentioned,
> is it that which is being spoken of, or the 'xpath' expression language
> alternative? E.g. this *may* be a means of querying XML documents which
> could be taken forward to become the basis of xql or other query forms?

Not sure I grock this paragraph.  I meant, the API should be able to deal
with expression languages other than XPath.  I changed the header to be
"Expression Language Independent".  Does this make it more clear?

> Whose toes would you be treading on by missing out C++ ?

I think the DOM group needs to define a C++ interface first.  I only
included the languages that the DOM defines.

> How to expand this to mean that the iteration is 'non destructive' ?

Do you mean that the source tree must not be mutated?  I added "The input
must not be mutated."

> This is stated in the negative. A clear statement might be 'not part of,

Changed to read "Implementation of PAX should be optional for DOM
implementors."  I don't think the requirement should read whether or not
PAX is inside or outside of the DOM.  That is a design decision that is
built from the requirements.

> -1 As it stands. Need to either be explicit (refs to xslt rec?) or cut

The "XSLT Match Patterns" was linked to the match pattern section of the
XSLT specification.  Don't understand what you mean by "be explicit".

> This group has not mentioned this to date, what use case might support
> Agreed they are useful, but so are ball bearings :-)

I have mentioned it in one of my earlier mails.  I think they are more
useful to a software program than ball bearings.  The provide the ability
to itterate over a set of nodes, and quickly decide if a given node matches
a given criteria.  A lot better than, checking the name of an element,
checking to see if it has a certain attribute, etc.

Since this is the "complete" proposal, I think they should remain in, at
least for now.  I do think they should be broken into another interface.

> suggest 'it should follow the extension api being developed....


> Perhaps this is my problem. Should it read 'provide an interface *for*
> apposed to 'to')? I.e. Someone wanting xpointer functionality can use
> interface?


> Again I have a perspective issue. Variables presumably can be set in the
> local environment. Guess we are speaking of variables as per XSLT/XPATH.
> How to clarify? something about 'variables *across* the API' or 'as part
> the api?

Well, XPath speaks of variable bindings.  XSLT speaks of how to bind those
variables.  From the XPath spec: "The variable bindings consist of a
mapping from variable names to variable values. The value of a variable is
an object, which can be of any of the types that are possible for the value
of an expression, and may also be of additional types not specified here."
So, the job of the API is to provide for binding of these variables.  I
changed the text from "It must support the setting of variables." to "It
must support the binding of variables."

> Also need to clarify the variable types.

Added "The types of these variables will be return <loc href
="http://www.w3.org/TR/xpath#node-sets">Node-sets</loc>, <loc href
="http://www.w3.org/TR/xpath#booleans">Booleans</loc>, <loc href
="http://www.w3.org/TR/xpath#numbers">Numbers</loc>, and <loc href
="http://www.w3.org/TR/xpath#numbers">Strings</loc>, but other variable
types should be possible, such as a Java Object (which may be passed to an
extension function).".

> <q>without having to re-parse the expression</q> No prior mention of
> the expressions needing to be parsed.

Huh?  Expressions always need to be parsed!

> No mention of available functions.
> 'It must support all xpath functions'

Well, I think that is partly a matter of the implementation.  Added a
requirement that "The API must support all XPath functionality", which is
different from saying that an implementation must support all of XPath
functions, i.e. functions are not exposed to the interface.

> If I perform a query I have no knowledge of whether it will return
> a node or a nodeset. Why not stick to a nodeset which may have
> a nodelength of 0 to many, as per DSSSL?

The problem that I have found with selectNodes in the Xalan XPath interface
is that you often only want to find a single node.  A node itterator is
simply more work.  XSLT contains a xsl:value-of which only get's the first
node... it's the same sort of thing.  This is really from direct user
experience, I've had more than one user write their own selectNode

> Won't most of the functions in 2.1 require a namespace parameter?

You only need to resolve namespace prefixes in the expression, which is
covered by setPrefixResolver, right?

> There appears something intrinsically wrong here. 'Pushing'
> variables across an interface for use by 'the other side'.
> Is there nothing more 'elegant' we can come up with?
>  How / why are they needed? Can they not 'remain' on one
> side of the api? (Again speaking in ignorance of the technical
> aspects of any java (or other) interface.

Hmm... I'm not sure what you mean by "one side of the api", or why you
think the concept of pushing variables is bad.  Do you mean you would like
your program to get called back when the implementation finds a variable
name?  That seems to me to be much more complicated.

Variables in Xalan are implemented on a stack, because we have to push and
pop them all the time to support XSLT.  So it seems to me natural and easy
to specify a stack.  But I'm open to other possibilities, like passing in a
Dictionary object of some kind.

> <q>
>   public boolean lessThanOrEqual(XObject obj2);</q>
> why are this group a part of the interface please?

This comes from the potential need to compare to result objects according
to the rules of comparison in XPath (see the stuff about equality and
relational operators in http://www.w3.org/TR/xpath#section-Expressions).
In particular, the rules about comparing a String, Number, or Boolean to a
Node-set are nasty.  We could probably do without them, but since this is a
proposal for a "complete" API, I thought it good to include them.  If
you're passing XObjects to variables, they may be especially important, as
the XPath implementation may need to use them to do comparison operations.

> Add reference to xpath!

I was actually trying to be careful about not referencing XPath too much,
since the API is supposed to be "Expression Language Neutral".

Thanks again for the feedback!

Received on Wednesday, 10 May 2000 17:46:07 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 19:43:07 UTC