[YML] RE: YML: A Grand Unification of SAX and DOM? (fwd)

Clark C. Evans clark.evans at manhattanproject.com
Sat Dec 4 18:52:10 GMT 1999


On Fri, 3 Dec 1999, Don Park wrote:
> What is the advantage of YML over these
> solutions?
 
> 3. Road Signs
> 
> <element>
>   <sax:cache>true</sax:cache>
>   <foo>bar</foo>
>   <sax:cache>false</sax:cache>
> </element>

This structure does not seem to be 
recursive, given that I'm interpreting
it as I would a processing instruction.

> 2. Parental Guidence
>

> <element>
>   <sax:cache>
>     <foo>bar</foo>
>   </sax:cache> </element>
 
This *could* be logically equivalent 
depending upon your interpretation.
Consider this instead:
 
<element>
  <sax:cache>
    <foo>
       <bar/>
    </foo>
  </sax:cache> 
</element>
 
If the processor would provide random access
to <bar/>, then the answer is no -- this is
not the same as YML.
 
If, however, you use a keyword like this 
to denote that the _immediate children_ 
are placed into random access storage, 
then the answer is almost.  In addition, a 
mechanism is required to gaurentee that 
all of the random access children occur 
before the first sequential child.

 
> 1. Pockets
>
> <element>
>   <pocket:attributes>
>     <att>
>       <ch>val</ch>
>     </att>
>   </pocket:attributes>
>   <pocket:children>
>     <foo>
>       <pocket:text>bar</pocket:text>
>     </foo>
>   </pocket:children>
> </element>

First, I don't get what you had intended
with <pocket:text>bar</pocket:text>, so
let's consider this replaced with
<text>bar</text> to proceed.

If attributes/children means random/sequential
access, then, of the three, this is the
closest since there seems to be an implicit
requirement that all random access children
occur before sequential access children.

However, you did not use this construct
recursively -- <ch> and <text> were
not marked with the sequential/random
access distinction.  If this distinction 
were embedded into a binary syntax, then 
this type of problem would not occur.
So, here is the YML version of the above,
assuming sequential access for <ch>
and random access for <bar>.
 
  <element
    <att>
       <ch>val</ch>
    </att>   
  >
    <foo 
      <text>bar</text>
    />
  </element>  

Or, using syntax sugar:

  <element att=<ch>val</ch> >
    <foo text="bar" />
  </element>

Major advantage here is that the doubly 
recursive syntax drives the processing 
choice as to collect attributes together 
and provide them via random access (DOM), 
or to provide them individually via 
sequential access (SAX).
 
I hope this moves things along!

Best Wishes,

Clark



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/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe 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