RFC: Attributes and XML-RPC

Mark Nutter mnutter at fore.com
Wed Sep 22 15:19:43 BST 1999


At 02:51 PM 09/21/99 -0500, Reynolds, Gregg wrote:
>This is true; but it doesn't apply.  Attribution is not the same as
>structure; the problem is not that we have two ways of doing essentially 
>the
>same thing, its that we try to model two essentially different things  in
>the same way.  Getting rid of attributes fixes the wrong problem.  XML and
>similar languages represent attempts to model the way we think, and its
>pretty indisputable that the mind (well, the Western mind, in any case)
>thinks about the world in terms of things, their properties, and their
>relations to other things.  The warm fuzzy glow  Tim has observer comes, I
>suspect, when people find they can think with an artificial language in 
>the
>same way they think ordinarily.  Or maybe it's the relief they feel when
>they realize that the computer geeks have not rammed yet another round peg
>through a square hole.
>
>A man has red hair and a dog.  To suggest that his relationship with his
>hair (or its redness) is no different than his relationship with his dog 
>is,
>well, shocking.  It's an outrage!

What's so outrageous about it?  A man can lose his dog, and he can also 
lose his hair, (or his hair can lose its redness :-)

Seriously, the problem I see is that there are many places where it isn't 
possible to determine "correctly" (in some precise definition of 
"correctness") whether a given piece of data should be an attribute of a 
particular element, or a sub-element contained within the element.  For 
example, I want to model a directory tree where each directory has access 
restrictions (as well as files and subdirectories and so on).  Is the 
"access level" of the directory an attribute of the <DIRECTORY> element, or 
is it an <ACCESS> element contained by the <DIRECTORY> element?  If I make 
it an attribute, then I can supply a default value, restrict possible 
values to an enumerated list, and make it required -- but each directory 
can only have *one* access level (unless we want to get into parsing things 
like ACCESS="public+staff+team1+..." -- ick!).  If I make it a subelement, 
then I can have multiple access levels, but I lose my default and 
enumerated values.

Ok, that particular problem does have a solution:  for example,

<DIRECTORY>
   <ACCESS GROUP="public" PERM="R"/>
   <ACCESS GROUP="staff" PERM="RX"/>
   <ACCESS GROUP="team1" PERM="RWX"/>
   ...
</DIRECTORY>

But on the other hand, we could also do:

<DIRECTORY>
   <ACCESS PERM="R">
     <GROUP NAME="public"/>
     <GROUP NAME="staff"/>
     <GROUP NAME="team1"/>
   </ACCESS>
   <ACCESS PERM="X">
     <GROUP NAME="staff"/>
     <GROUP NAME="team1"/>
   </ACCESS>
   <ACCESS PERM="W">
     <GROUP NAME="team1"/>
   </ACCESS>
</DIRECTORY>

Is it the nature of "GROUP-ness" to be an attribute of "ACCESS-ness"?  Is 
one version "correct" and the other "incorrect"?  I don't think so.

It seems to me that the current situation is more of an accident than 
anything else.  Attributes are currently justified because of the fact that 
DTD's happen to allow default and enumerated values only for attributes, so 
if you need default/enumerated values, you have to use 
attributes.  Secondly, it happens that a lot of XML/DTD work is being done 
by hand, and attributes are less work to type:

<directory access="read"/>  -- versus
<directory><access><read/></access></directory>

The "warm fuzzy" feeling you get from attributes may just be relief that 
you don't have to type so much!  But that's an accidental consequence of 
the fact that we have to write our XML by hand--a more automated process 
would have no such feelings.  Attributes are a shortcut that make XML 
easier to code by hand, at the cost of introducing a certain amount of 
unavoidable ambiguity regarding how a given piece of data should be 
modelled.

IMHO, that is.

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

Mark Nutter, <mnutter at fore.com>
Internet Applications Developer
FORE Systems

Guns don't kill people.  Bullets kill people.

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list