DAV object model (was RE: Structure criteria for DASL queries)

At 01:18 PM 8/28/98 PDT, Babich, Alan wrote:

>I don't believe the terminology in your e-mail is optimal.
>In particular, I believe that calling the leaf nodes 
>"strings" leads to confusion. 

One question first.  Aside from disagreeing about the terminology, do you
agree that structure criteria must be provided by DASL?  That's the
important question.  If not, let's talk about that first.

The rest of this note deals only with Alan's terminological issues.

I agree that my terminology was not optimal.  In particular, it's hard to
distinguish between an 'element' (which is my term) in DAV and an XML
element, and between an XML element and its tags.  I'll try to do better in
this response.

Having said that, I am afraid that if I understood your message in the way
you intended, then I believe it shows that you do misunderstand the WebDAV
object model and/or XML.  It could be that I misunderstood your points, or
that it is I who is wrong.  In either case I humbly beg to be corrected,
either by you or by others.  

In particular, I think you are wrong on two key points 
 
> non-leaf nodes merely provide structure -- the actual values 
>are at the leaf nodes. 

First, depending what you mean by "actual value", a tree or subtree may be
the "actual value".  Think of the lockdiscovery property, which contains a
list of activelock elements, each of which represents the state of one
lock.  These are like record objects in C, or structures in PL1.  It is
true, perhaps, that the *primitive* data is all at the leaves, but why
limit the discussion to only primitive data?

Second, for at least some DAV properties, the defined values include empty
elements.  These have no content of any kind.  (It's true that this means
they are leaves of the tree, but when you say 'leaf node' you meant what I
call a 'string').  An example is the dav:resourcetype property, whose value
is either empty or an element whose name is dav:collection.

In any case, it is essential that we have the ability to test the value of
the *name* of an element, regardless of whether it is a leaf node or an
interior node, and separately from any test on its contents.

>The leaf nodes are string-ized 
>representations of basic data types, e.g., integer, real, 
>datetime, string, etc. 

This may be true for some applications layered on top of DAV, but it is not
the DAV model.  Neither DAV nor XML defines any such datatypes.  Go back
and read the XML spec, which talks only of character data.  That's exactly
why there is an XML Data working group seeking to *add* datatypes to XML.
They aren't there now.  Now I know I said that DAV's object model is not
XML, but the absence from XML is strong evidence that they are not in DAV's
model either. Since you can't express any datatype other than character in
XML, if DAV has any other datatype, there's no way to talk about it.

>I object to calling the leaf nodes "strings". 
>The beginning and ending tags of elements are "strings" 
>in the same sense that the leaf nodes and everything else 
>in all XML documents are "strings".

No, that's not true, and I'll give you three pieces of evidence why not.

1) the XML syntax productions for the Name (of an element or an attribute)
are different from those for character data in general.

2) The XML spec defines the attribute xml:lang that "may be inserted in
documents to specify the language used in the contents and
attribute values of any element in an XML document.".  Note that it
mentions "contents" and "attribute values", but says nothing about
attribute *names*.  I'll concede that it does not clearly distinguish
between character data and _element names_, but I think it was intended
intended.  In any case, attribute names are "strings" too, so this is
evidence that XML distinguished between character data strings and
attribute names.

3) XML Namespace processing instructions apply to the *names* of elements
and attributes, but not to character data nor to attribute values.

So you see that the Name of an element is a very different thing than the
character data within its content.

Received on Friday, 28 August 1998 20:04:36 UTC