Below is a fantastic response from Walter Perry. Thank you Walter!
(Walter gave me permission to forward his message to the list)
--------------------------------------
The fundamental semantic premise of XML markup is the "hasA"
relationship; that of JSON is "isA". This is the opposite of what one is
likely to see at first blush, and it has taken me a full 20 years to
understand how the syntax of XML enforces the "hasA" view, ultimately to
the exclusion of "isA".
Sparing the 20-year learning curve: the XML syntax permits only the
expression of "hasA" relationships between entities--even where those
'entities' are expressed in the XML attribute syntax (color=blue means
only that the enclosing entity *has* an identified color and that that
color *has* the identified value 'blue'). The Generic Identifier itself
of an XML entity expresses no more than that the entity *has* an
identified label, and specifies its instance value. The axes of XSL are
those along which the XML syntax permits the semantics of identified
"hasA" relationships to be expressed.
With respect to Walter Perry, whose ideas I always read with interest,
and despite the wisdom in what he says above about XSL axes, XML markup
isn't fundamentally limited to "hasA". Consider RDF. In RDF, a thing
springs into existence when it is referred to, if it doesn't exist
already. RDF, in fact (and OWL, for that matter), is an "existential
conjunctive" language, which means that it can declare both isA and hasA
notions. RDF graphs can be expressed with an XML syntax. Therefore,
(at least some) XML languages are able to express isA.