Re: XML Java API Standardization

Steven Ball (steve@cs.anu.edu.au)
Mon, 23 Jun 1997 09:56:35 +1000


> (I am not a Java person so I don't know the syntax for doing the following
> in Java...)

I'm no Java-phile either ;-)

> The idea is to
>
> 1) have a textual representation of an XML document as a Python program
> 2) be able to re-create textual representations of XML document structures
> as Python programs

I've done essentially the same thing for Tcl. My XML parser emits a
"Heirarchical Tcl List Representation" of an XML document. For example:

set doc {<?XML VERSION="1.0"?>
<!DOCTYPE MEMO SYSTEM "memo.dtd">
<MEMO REF="1234">
<TO>Audience</TO>
<FROM>Steve</FROM>
<MESSAGE>This is XML!</MESSAGE>
</MEMO>}

XML::parse $doc

returns ==>

parse:pi ?XML {VERSION 1.0} {}
parse:pi !DOCTYPE {SYSTEM memo.dtd} {}
parse:elem MEMO {REF 1234} {
parse:elem TO {} {
parse:text Audience {} {}
}
parse:elem FROM {} {
parse:text Steve {} {}
}
parse:elem MESSAGE {} {
parse:text {This is XML!} {} {}
}
}

(above has been edited slightly for email-readability)

This representation has two features: it can be easily manipulated
as a list, especially with the dummy arguments to parse:pi and parse:text,
and it can be passed to the `eval' command for execution - the element contents
are themselves scripts.

> 1) Such structures give an immediate API in the form of Lispy list
> processing stuff.
> 2) Such structures allow parsers to be compared / checked for correct
> interpretation of XML.
> 3) Such structures give developers something to aim at when developing XML
> markup aware tools.

Agreed, and the similarity of our (independent) approaches is noteworthy.
My only comment is that (2) is modulo list syntax.

Cheers,
Steve Ball