XML query constructors: not well-defined

The constructors in the XML Query data model spec are
nifty, but they don't seem to be well-defined.

Consider:

	<aDoc><anElt/><anElt/></aDoc>

it's clearly got 3 elements: a root element and two children.
Section 3.3 Elements suggests its datamodel instance
can be constructed ala:

elemNode("aDoc", [ elemNode("anElt", []), elemNode("anElt", [])])

(leaving aside namespaces and attributes and
using "aDoc" as shorthand for a QNameValue).

Let's call the child element nodes e1 and e2:

	e1 ::= elemNode("anElt", [])
	e2 ::= elemNode("anElt", [])

Since elemNode is a function, clearly

	elemNode("anElt", []) == elemNode("anElt", [])
i.e.	e1 == e2

But section 5 "Operators and functions on data-model values"
shows that we can distinguish between e1 and e2; in particular,
e1 < e2. Given e1==e2, we can substitute
equals for equals and get e1 < e1 and e2 < e1 and all sorts
of silly conclusions.

In order for elemNode to be well-defined, it has to be a function
of more than just the qname, the namespace, the attributes
and the children of the element; it must also be a function
of something like the node before it in document order, no?


[[[
2.1 Types and signatures

        The data model defines the structure of various kinds of tree
nodes; functions
        to construct tree nodes, called constructors; and functions to
access nodes'
        structure, called accessors. 
]]]

--        XML Query Data Model
http://www.w3.org/TR/2001/WD-query-datamodel-20010215/#section-Types-and-signatures
Fri, 16 Feb 2001 00:15:30 GMT


-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/

Received on Thursday, 12 April 2001 10:55:55 UTC