Comments on DOM3-XPath module from the XML Query WG

Hello,

please find enclosed the comments on the DOM3-XPath-module
from the W3C XML Query WG.

Best regards,

Peter Fankhauser, Infonyte GmbH
Ingo Macherius, Fraunhofer IPSI

-------------------------------------------------------------------

Executive Summary:

The XPath Module of DOM3
(http://www.w3.org/TR/2002/WD-DOM-Level-3-XPath-20020328/)
is in Last Call. The review period ends on May 1, 2002.
The spec is well written and implementable.
Because the XPath Module considers XPath 1.0 only, there's
no action required from the XQuery WG.
The XML Schema module of DOM3 (not in last call) may be
more relevant for XQuery 1.0 and XPath 2.0.

Introduction to the XPath Module in DOM3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The XPath Module of DOM3 extends DOM2 with five interfaces:

(1) XPathEvaluator
    has methods to evaluate and to create XPathExpressions (see 2)
    and a method to create an XPathNSResolver for a particular
    node (see 4)
(2) XPathExpression
    can be used to represent compiled and namespace resolved
    XPathExpressions in some internal format.
    Has a method to evaluate the XPathExpression
(3) XPathResult
    This is the most interesting interface;
    It distinguishes the four types of XPath;
    number, string, boolean, and nodeset.
    Nodesets can be further differentiated along the following
    dimensions:
    (a) ordered vs. unordered
        (interestingly, DOM XPath does allow for
        explicitly disregarding order by means of a type)
    (b) live vs. snapshot
        (a live node is invalidated upon update)
    (c) nodeset vs. any(first) node from nodeset
        (the latter being used e.g. by predicates in XPath)
    and provides (read-only) attributes to access values of simple type,
    and methods for iteration and indexed access for nodesets 
(4) XPathNamespaceResolver
    Provides a method to map from a given prefix to it's URI w.r.t.
    the node for which it has been created (see 1)
(5) XPathNamespace
    This extends the DOM-node interface to represent namespace
    nodes a'la XPath. It can exclusively be used for nodes in the
    nodeset of an XPathResult (see 3)
    
We have reviewed the spec from two perspectives:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(1) One of the members of the XML Query WG ships an XPath implementation
    on top of a (persistent) DOM. Can the spec be implemented with
    reasonable effort on our XPath implementation, such that
    it meets "DOM Level 3 XPath conformance" (= "DOM Level 2
    Core" + "DOM Level 3 XPath"?
    Indeed it can.
    One (minor) qualm we have is the treatment of (general) entities
    (which are a DOM-node type, but not an XPath node-type).
    While it is clear that
    (a) entity-nodes raise an error if returned (on top level)
        of a nodeset
    (b) entity-nodes don't raise an error if "encapsulated"
        in some returned node.
    it is unclear what should happen when the evaluation of
    an XPath Expression encounters an entity-node.
    Does this raise an error or is it expanded?
    (this might be covered by Issue XPath-17-18)
    Similar issues hold w.r.t. the treatment of CDATA sections.
    
(2) What does this mean for XQuery (and its datamodel)?
    Rather little.
    
    The XPath Module of DOM3 deliberately
    and explicitly focusses on the XPath 1.0 datamodel.
    It provides a reasonable (or at least reasonably clear)
    approach to reconcile the differences between
    the DOM 2 datamodel and the XPath datamodel:
    DOM 2 has no namespace nodes, has entity-nodes, and
    may represent contingent text-nodes).
    As to whether the particular approach to treating these
    differences meets XPath 1.0 taste should be judged
    by other WGs.
    
    Altogether we do not see the need for any specific action
    from the XML Query WG at this point.
    
    The extensions of XQuery (XPath 2.0) to take into account
    the much more differentiated type-system of XML-Schema,
    need to be compared with the Schema-module of DOM 3, which
    is not yet in CR phase.
    
Some minor, personal editorial remarks:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(1) In Section 1.2 (Mapping DOM to XPath) it may be beneficial
    to add a small paragraph on entity-nodes (raise an
    exception whenever they're encountered by an XPath expression).
    
(2) The description of result-types may be improved. In particular,
    a uniform wording may be used for the snapshot semantics of
    nodetypes "ANY_UNORDERED_NODE_TYPE", ""FIRST_ORDERED_NODE_TYPE",
    "ORDERED_NODE_SNAPSHOT_TYPE", "UNORDERED_NODE_SNAPSHOT_TYPE",
    and all simple node types.
    
Altogether: Nice job, obviousely the spec has been written
along (at least) one implementation.

Received on Monday, 29 April 2002 01:39:57 UTC