On Tuesday, January 22, 2002, at 01:51 PM, Murray Altheim wrote:
This message describes the XNode, an API for use with Xindice that I've sent on to Tom and Kimbro for review. This is considered a proposal, a donation to the Apache project's Xindice code base. I'm interested in hearing feedback, and if it's generally positive, the API would be donated as part of Xindice. Sun will be releasing a UDDI registry project soon that includes an implementation of this API. If accepted as part of Xindice it'll be under an Apache license, if not, Sun will probably maintain copyright of it. Since I'm leaving the company next week to return to school I'm hoping the Xindice community accepts this donation, as I'd like to see it become a part of Xindice (I'm the author).
I'm hoping to post online the entire javadoc of the API sometime soon. I'd send it to the list (a 32K zip), but I know how people feel about attachments on listservers, and I'm not sure it'd get through anyway. So below is a brief description in lieu of the more extensive documentation.
I posted your docs online http://www.xmldatabases.org/projects/xndoc/.
------------------------------------------------------------------------
Description
Since Xindice has no general method for associating metadata with each "record" in the database, XNode was developed for this purpose. XNode is a very simple API, only five files (including an Exception class).
This is really an issue that we should resolve properly, i.e. by directly exposing this type of meta-data, rather then by just wrapping the content.
I'm not sure how extensible we'll want that mechanism to be though. So it would be cool to have this available for people who want to have fully extensible meta-data. The real question is whether this is part of the core server or not. To me it doesn't seem like it should be, but then I also understand that may be the only way this can be released.
Is there more to this that I'm not seeing? If this was included, is it something other people would find valuable? Would you be able to continue maintaining it?
An XNode is an object acting as a container for XML content by providing an envelope element and some basic metadata attributes such as a node ID (nid), a timestamp, etc. If you're familiar with SOAP, it'll seem similar.
An instance of such markup (wrapping an XHTML document) might appear as:
<xnode:Envelope xmlns:xnode="http://www.apache.org/xnode/1.0/" xnode:id="n3892"> <xnode:Header xnode:created="2001-10-22T18:33:56" xnode:modified="2001-10-24T09:11:37" /> <xnode:Body> <html xmlns="http://www.w3.org/1999/xhtml"> [document content] </html> </xnode:Body> </xnode:Envelope>
Substituting "SOAP-ENV" for "xnode", this is notably similar to a *very* simplified SOAP (which for having "Simple" in its title isn't in the end all that simple). The above code is how an XNode is stored in Xindice, such that upon extraction the XNode object can be reconstituted. The XNode <xnode:Header> element is designed to be extended for other purposes, though 'created' and 'modified' should be supported.
----------------------
Classes and Interfaces
XNode abstract class: the XNode object, a wrapper for XML content.
XNodeException class: extends Exception for exceptions thrown in XNode processing.
XNodeState final class: defines a fixed set of enumerated types as processing states.
XNodeFactory interface: defines an interface for a factory for creating XNode objects.
XNodeStore interface: defines an interface for a processor for connecting and disconnecting from a Xindice server as well as common Collection and Node manipulations (create, get, delete, etc.)
----
Comments welcome.
Murray
.........................................................................
..
Murray Altheim <mailto:murray.altheim@sun.com>
XML Technology Center, Java and XML Software
Sun Microsystems, Inc., MS MPK17-102, 1601 Willow Rd., Menlo Park, CA 94025
Corporations do not have human rights, despite the altogether too-human opinions of the US Supreme Court.
Kimbro Staken XML Database Software, Consulting and Writing http://www.xmldatabases.org/
