The XML module in Phobos

Benji Smith dlanguage at benjismith.net
Sat Aug 1 21:25:20 PDT 2009


Michel Fortin wrote:
> On 2009-08-01 00:04:01 -0400, Benji Smith <dlanguage at benjismith.net> said:
> 
>> But XML documents aren't really lists. They're trees.
>>
>> Do ranges provide an abstraction for working with trees (other than 
>> the obvious flattening algorithms, like breadth-first or depth-first 
>> traversal)?
> 
> Well, it depends at what level you look. An XML document you read is 
> first a list of bytes, then a list of Unicode characters, then you 
> convert those characters to a list of tokens -- the Tango pull-parser 
> sees each tag and each attribute as a token, SAX define each tag 
> (including attributes) as a token and calls it an event -- and from that 
> list of token you can construct a tree.
> 
> The tree isn't a list though, and a range is a unidimentional list of 
> something. You need another interface to work with the tree.
> 
> But then, from the tree, create a list in one way or another 
> (flattening, or performing an XPath query for instance) and then you can 
> have a range representing the list of subtrees for the query if you 
> want. That's pretty good since with a range you can lazily iterate over 
> the results.

Oh sure. I agree that a range-based way of iterating over tokens is 
cool. And a range-based API for walking through the results of an XPath 
query would be great. But the real meat and potatoes of an XML API would 
need to be something more DOM-like, with a tree structure.

The only reason I chimed in, in the first place, was Andrei's post 
saying that a replacement XML parser "ideally outputs ranges".

I don't think that's right. Ideally, an XML parser outputs a tree structure.

Though a range-based mechanism for traversing that tree would be nice too.

--benji



More information about the Digitalmars-d mailing list