[
Lists Home |
Date Index |
Thread Index
]
>>"Alaric B. Snell" wrote:
>> It's not a DAG; you can't share subtrees. It's a tree!
[Walter Perry]
>The XML instance is neither a tree nor a directed acyclic graph.
The instance is UnicodeWithAngleBrackets for sure. But an XML compliant
parser much turn this mixture into
a tree. If it can't, surely, the instance is not WF? I don't see how a
parser can match production [1] of the XML spec.
without turning the UnicodeWithAngleBrackets into a tree. The tree might be
communicated in its entitity
to the application (a la DOM) or in a stream of events (a la SAX) but there
is always a tree there.
At one level of interpretation - mid-parse as it were - prior to entity
expansion, the parsers internal model might have
shared sub-trees given than the same entity an occur more than once. But,
passed entity resolution - the stuff
passed on to the application - is be a tree.
Now, there is absolutely no reason in the world why any process has to work
directly with the tree. It can instantiate
its own process-specific data structure and map the XML tree structure to
it. The beauty of always starting
with the UnicodeWithAngleBrackets is that it forces a separation between
the process-specific and that which
is innate in the data. This breaks down of course, if you just serialize
objects but that's another topic of course:-)
Also, tools that work with fuzzy-XML - stuff that might not be WF
(classically editors) have to work directly
with the UnicodeWithAngleBrackets. This class of tools is very different
from XML processors as defined
in XML 1.0.
In SGML, we had a name for the latter "markup-aware" as distinct from
"structure controlled".
Sean
http://seanmcgrath.blogspot.com
|