Alexander Repenning's XMLisp (which works with MCL and LispWorks) is beautiful, in an insane way.
XMLisp is the integration of Lisp with XML. The Lisp Meta Object Protocol is used to establish a simple and highly efficient mapping between CLOS objects and the XML extensible markup language. It is not just an API to read XML files and turn them into some Lisp flavored representation. Instead, it integrates Lisp and XML into one environment at two levels. At a language level it allows the arbitrary combination of Lisp expressions and XML elements. CLOS objects can be printed as XML elements. XML elements evaluate into CLOS objects. At a tool level XMLisp allows users to fluidly experiment with XML. Type XML elements into the lisp listener. Evaluate complete or parts of hierarchical XML elements. Inspect complex XML elements using the inspector. Get support from symbol completion when editing XML.
Check it out:
? (defclass A (xml-serializer) ((href :accessor href :initform "" :initarg :href)) (:documentation "HTML link")) #<STANDARD-CLASS A> ? (make-instance 'a :href "http://lemonodor.com/") <a href="http://lemonodor.com/"/> ? (describe *) <a href="http://lemonodor.com/"/> Class: #<STANDARD-CLASS A> Wrapper: #<CCL::CLASS-WRAPPER A #x2877F56> Instance slots CONTENT: NIL HREF: "http://lemonodor.com/" ? (describe <a href="http://lemonodor.com/"/>) <a href="http://lemonodor.com/"/> Class: #<STANDARD-CLASS A> Wrapper: #<CCL::CLASS-WRAPPER A #x2877F56> Instance slots CONTENT: NIL HREF: "http://lemonodor.com/"
It's like object relational mapping for XML. Make sure to look at the RSS example on the project page.
Posted by jjwiseman at February 14, 2005 12:53 PMDo you know what the license is for this? AFAICT, it's just copyrighted, and there are no license terms listed.
I don't have a beef with this --- I'm not saying that everything has to be open source. Just it's worth knowing the license terms for any software you're going to start using...
Posted by: Robert Goldman on February 15, 2005 07:28 AM