When is an attribute an attribute?
David Megginson
ak117 at freenet.carleton.ca
Tue Apr 7 05:21:06 BST 1998
Roy Tennant writes:
> I've been trying to figure this out for a while with no success. It
> seems to me that there are several quite different ways one can
> encode information in XML. Are all of the following correct? When
> and why would you choose one over another? Does it matter? Thank
> you for your indulgence as I puzzle out what must surely be readily
> apparent to most of you.
It's not self-evident, and everyone has their own strongly-held
opinions. Database people are tempted to force everything into
attributes, because attributes are (slightly) typed while character
data is not. Generally, though, you need to consider the following:
- attribute values are harder to search for in search engines
- attribute values often don't appear on the screen in editing tools
(you have to open a special dialog or popup to see them)
- attribute values can have no substructure
- attribute values can be slightly more awkward to access in
processing APIs
- attributes are unordered, so there is no standard way to specify
that one attribute's value should precede the other's (there is no
guarantee that an API will give you the attributes in the same order
that you specified them)
My rule is to use attributes in markup just as I would use footnotes
or endnotes in a book -- to provide extra information that is not part
of the main content, but that is useful to know about it. By this
rule, all of your examples are correct, but under different
circumstances.
> Example 1:
> ---------
>
> <BOOK TITLE="The Call of the Wild" AUTHOR="London, Jack"\>
In this case, all that really matters is that there's a book there.
An XML document author might see <BOOK> in the main editing window,
but get the attribute values in a pop-up only by clicking the mouse.
It's not essential to know the book's title or author, and it is
unlikely that anyone would want to search for it.
Yes: insurance company list of property to be replaced; customs list of
objects declared at border
No: online bookstore; library catalogue
> Example 2:
> ---------
>
> <BOOK AUTHOR="London, Jack">The Call of the Wild</BOOK>
In this one, the title matters but the author is just extra
information. You'd probably use this for encoding a title inline,
where the title will be printed as part of the paragraph (possibly in
italics), but the author's name would appear only in a separate index
or popup.
<PARA>I enjoyed the book <BOOK AUTHOR="London, Jack">The Call of the
Wild</BOOK>.</PARA>
> Example 3:
> ---------
>
> <BOOK>
> <TITLE>The Call of the Wild</TITLE>
> <AUTHOR>London, Jack</AUTHOR>
> </BOOK>
In this one, both the title and author are important -- you'd use this
for the citation line of a quotation, in a bibliography, at an online
bookstore, or in a library catalogue.
I hope this helps.
All the best,
David
--
David Megginson ak117 at freenet.carleton.ca
Microstar Software Ltd. dmeggins at microstar.com
http://home.sprynet.com/sprynet/dmeggins/
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/
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