OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: [xml-dev] S-expressions vs. XML

[ Lists Home | Date Index | Thread Index ]

Rich Salz wrote:
> >>Actually, since S-expressions are isomorphic to the basic XML data model,
> >>one could argue that X# == LISP :-)
> >
> > I've heard this claim asserted many, many times,
> > but I still don't believe it.
> Let's see, an XML element is
>       <x attr1=value1...>content</x>
> So the attributes are an assoc list, the content is a (recursive) list
> of text strings or nodes. That could be represented in S-expr as
>      (x ( (attr1 value1)... ) content )
> If there are no attributes
>      (x () content )

That's a reasonable first approximation to g :: XML -> S-Exp.

You don't have an isomorphism yet, since the range
of g (hence the domain of f) is only a subset of all
S-expressions over atoms and strings.  But that's fixable.

The real problem is that g discards context information,
which is an essential part of the XML data model.

> For example:
>      <foo attr='text'><bar>hello</bar><bar a='b'>world</bar>!</foo>
> would be
>      (foo ( ('attr' 'text'))
>           (bar () 'hello')
>           (bar ( ('a' 'b')) 'world')
>            '!'
>       )
> > h = XPath(ancestor::*/following-sibling::*).
> Don't have enough neurons to figure out why the above is "tricky."

Let x be the text node "hello" in the XML example.
Then h(x) includes the element node "<bar a='b'>world</bar>"
and the text node "!".  There's no f :: S-Exp -> XML that
can satisfy h(x) = h(f(g(x))), since g(x) is just the
string 'hello'.

You can fix this problem too -- it's possible to build
*any* data structure out of cons cells and atoms --
but the resulting s-expressions aren't going to look
very much like what most people think of when they
say XML is just a more verbose way to write Lisp.

--Joe English



News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS