June 27, 2002, 12:00 AM — It is not every day that one can search Google for a word and get precisely *one* hit. Today was such a day for me. I needed a word that means the opposite of the word "hierarchy". Some sources say "anarchy" is the word I'm looking for, but it does not suit my purposes as we will see. It sounds too unruly!
Thanks to Google, I came across the word "cholarchy" which had exactly one hit when I tried it. Of course, if you are reading this article on the Web and Google's spider has already visited, then the hit count is no longer one. The Web is a river and you can never step into the same river twice....
The word cholarchy is a great word. It may not even by the right word or a real word (it is not in Webster's and I don't have a subscription to the subscription-only Oxford English Dictionary) but it sure is a useful word.
Cholarchy makes XML people break into a rash. XML people naturally think in terms of hierarchy. Hierarchy is, arguably, the fundamental ethos of XML. Hierarchies are good and by implication cholarchies are bad.
Hierarchies are natural. Hierarchies are useful. Oh, and finally, hierarchies are just plain fun!
It seems we humans have a deep need to create hierarchies. XML panders beautifully to that primeval urge. As soon as two or more concepts line up in a row (the simplest possible cholarchy), we hierarchy zealots swoop and classify the concepts into a hierarchy. Just as nature abhors a vacuum, it seems that mankind abhors a cholarchy.
The obvious place where XML wallows in its ability to create hierarchies is in document structures. Everyone goes through the aha! moment when they realize the vista opened up by the ability to put tags inside other
tags. Hierarchical hedonism ensues.
Although tagging XML documents facilitate wonderful hierarchy-fests, the same is not true in schema languages. This may sound like an odd assertion given that schema languages exist to allow us to codify our
hierarchies. Here is what I mean:
What happens when two or more element type declarations line up in a row? The hierarchy zealots swoop! This is where things get interesting! They get interesting because -- unlike XML tags -- there is no generally accepted way to create hierarchies of element
Some designers would argue that element types are basically classes in the object oriented programming sense of the word. In this view, the way to add hierarchy to element types is to organize them into class hierarchies with inheritance relationships. The ultimate expression of this view is not to use any XML schema language to capture these hierarchies at all. Rather, the models are managed in some mainstream OO technology (such as UML) and XML schema language notations -- typically W3C XML schema -- are generated from the models.