$Id: TODO 59 2006-04-12 12:08:39Z roscopeco $

==== BUGS

* Some C funcs need more NULL checking, they're throwing wierd 
  ArgumentErrors into RubyLand. See TODOs in source.
  
==== ENHANCEMENTS

* Add warnings to each of the xpath functions if xpath isn't compiled
  in.

* Flush out XML::XPath::Context to more closely mirror the
  _xmlXPathContext(libxml/xpath.h) structure.

* Add XML::Node#sibling= to add siblings to an XML document

* Cleanup the variable naming schemes and standardize on one.  Ideas:

  * All VALUE encapsulated objects are prefixed with the character
    'r'.  rnode, rdoc, rctxt, rxpath, rxnset, rxns.

  * Their unwrapped C equiv drops the 'r'.  Since operating with
    libxml isn't context less, this should help catch the cases
    where having routines that are libxml derived (ex: xmlNodePtr)
    and ruby-libxml derived (ex: ruby_xml_node) should collide in
    the same name space convention.  This will act as a reminder
    and deterrant against haphazardly returning and using libxml
    objects when they should be passed in.  ruby-libxml is a set
    of tools, not and end result.  Put the power and options in
    the hands of the user and don't confine or constrain anything
    within reason.  Just because someone can't think of a use for
    it doesn't mean it's not possible or useful to someone.  It's
    the weird shit that makes a library powerful. 

	      rnode  -> node
	      rdoc   -> doc
	      rctxt  -> ctxt
	      rxpath -> xpath

* Should sweep through the code and remove all instances of
  'return(Qnil)' with exceptions if 'return(Qnil)' is being used for
  signaling an error or inability to process the document.
  
* Need to add the ability to create namespace objects and modify them
  accordingly.

* Need to figure out how to easily apply a namespace object to either a
  document or a node.

* Add an XML::DTD class.

* Add ability to dynamically create DTD's.

* Add ability to set auto-parse on XML::Parser classes.

* Add ability to set auto-set on XML::XPath classes.

* What's the counter part to XML::Node#sibling= ?  XML::Node#next ??
  There's a certain degree of othogonality that I'm missing in the API
  at the moment and it's picking away at my brain like a bad Dan Quale
  quote.

* Add a way of inspecting an XML::Node so that it can be serialized.

* Have XML::Node#child= accept ChildNodeLists.

* Add ability to append hashes and arrays via the XML::Node#<< method.

* Node (etc.) #[] should support symbol keys.

* Make nodes comparable (on qualified name?)

==== Data Serialization

* Need to define DTD for basic ruby types that have been XML serialized
  and deserialized.
