[code.view]

[top] / java / jdom / TODO.txt

     Items that need to be done:
     
     --- ITEMS REMAINING BEFORE 1.1 ---
     
     None!
     
     --- ITEMS TO CONSIDER FOR 1.2 ---
     
     * Integrate the contributed StAXBuilder.
     
     * Rusty's "base uri" support for Element and the rest.
     
     * Investigate a way to do in-memory validation.  First step is probably
       to get an in-memory representation of a DTD as per
       http://xmlhack.com/read.php?item=626
       http://www.wutka.com/dtdparser.html
       http://lists.denveronline.net/lists/jdom-interest/2000-July/001431.html
       http://lists.denveronline.net/lists/jdom-interest/2001-February/004661.html
       Maybe new DTDValidator(dtd).validate(doc);
       Then later new SchemaValidator(schema).validate(doc);
       Could instead do doc.validate(dtd/schema) but then we'd have to dynamically
       switch between recognizing DTDs and the various schemas.
       The method would probably either throw InvalidDocumentException or might
       take an ErrorHandler-style interface implementation if there are non-fatal
       errors possible.
       It'd also be possible to have a programmatic verifier, that determined for
       example if an orderid="100" entry was valid against a database entry.
       http://dcb.sun.com/practices/devnotebook/xml_msv.jsp
       http://www.sun.com/software/xml/developers/multischema/
     
     * Create an HTMLOutputter to handle the HTML specific aspects (closing tags,
       escaped characters like é, etc).
     
     --- FUTURE IDEAS ---
     
     * Utility methods for comparing nodes by content instead of reference.
       Hopefully base this on whatever standard emerges in this area.
     
     * Note in the docs where necessary our multithreading policy.
     
     * Create a JDOM logo.
     
     * Look at http://www.sosnoski.com/opensrc/xmls/format.html.
     
     * Look at interfaces for the core classes, Element with ConcreteElement being
       our code.  Base on the factory model.  Allow no access between objects
       except using the public API, to avoid the import node problem.  Do the big
       switchover using javax.xml.jdom as interfaces and default impl, use org.jdom
       for the concretes.  May not need to break existing code (sick and wrong).
       - read-only?  Experimentation happening in jdom-javax module.
     
     * Ensure JDOM is appropriately tweaked for subclassing, per the threads
       started by Joe Bowbeer.
       http://www.servlets.com/archive/servlet/ReadMsg?msgId=7601 begins it
     
     * Ensure JDOM is flawless regarding clone semantics, per more threads by
       Joe Bowbeer.
       http://www.servlets.com/archive/servlet/ReadMsg?msgId=7602 begins it
     
     * Joe summarizes his issues at
       http://www.servlets.com/archive/servlet/ReadMsg?msgId=7697
     
     * Add in attribute type support to DOM to match what's in SAX.
     
     * Look into implementing an id() method now that we have attribute types.
     
     * Look into how the factory builder model could support giving the factory
       extra knowledge about the context (line number, element stack, etc), and
       allow it to report errors or to return a code indicating the element should
       be ignored.
       (Laurent Bihanic wrote JH a private email about this on Dec 28 2001.)
     
     * Write a "GNU JAXP (i.e. AElfred) DOM adapter" (elharo looking into this).
     
     * Create "build dist" for distribution
       Use fixcrlf in dist (instead of package as currently done)
       Probably include source with jdom.jar built
     
     * Populate jdom-test.  Hong Zhang <Hong.Zhang AT Sun.COM> once volunteered to
       help with the J2EE CTS.
     
     * Add setIgnoringAllWhitespace(boolean) method.
     
     * Consider a listener interface so you could listen to doc changes.
       (Probably after 1.1 honestly; this can be done through manual subclasses
       already.)  Some pertinent messages on this topic:
       http://lists.denveronline.net/lists/jdom-interest/2000-July/001586.html
       http://lists.denveronline.net/lists/jdom-interest/2000-July/001587.html
       http://lists.denveronline.net/lists/jdom-interest/2000-July/001600.html
     
     * Consider a "locator" ability for nodes to remember the line number on which
       they were declared, to help debug semantic errors.
       http://lists.denveronline.net/lists/jdom-interest/2000-October/003422.html
     
     * Consider an XMLOutputter flag or feature to convert characters with well
       known named character entities to their named char entity form instead of
       numeric.
     
     * Determine if DOMBuilder and DOMOutputter should transparently support DOM1.
     
     * Create a builder based on Xerces' XNI, which will be more featureful and
       probably faster than the one based on SAX.
       See http://lists.denveronline.net/lists/jdom-interest/2001-July/007362.html
       Some existing SAX limitations which hurt round-tripping:
       * Can't tell if attribute values are included from the DTD, because SAX
         doesn't tell if attributes are standalone/implicit
         (See http://www.saxproject.org/apidoc/org/xml/sax/ext/Attributes2.html)
         (Thought: could use a bit in the type value to save memory)
       * Can't get access to retain the internal dtd subset unless entity
         expansion is off
       * Can't get access to whitespace outside the root element.
     
     * Write a guide for contributors.  Short summary:
         Follow Sun's coding guidelines, use 4-space (no tab) indents, no lines
         longer than 80 characters
     
     * Consider a builder for a read-only document.  It could "intern" objects to
       reduce memory consumption.  In fact, interning may be good for String
       objects regardless.
     
     * Consider having the license be clear org.jdom is a protected namespace.
     
     * Think about the idea of using more inheritance in JDOM to allow
       lightweight but not XML 1.0 complete implementations.  For example Element
       could have a superclass "CommonXMLElement" that supported only what Common
       XML requires.  Builders could build such elements to be faster and lighter
       than full elements -- perfect for things like reading config files.  Lots
       of difficulties with this design though.
     
     * Create a Verifier lookup table as an int[256] growable to int[64K] where
       bits in the returned value indicate that char's ability to be used for a
       task.  So "lookup[(int)'x'] & LETTER_MASK" tells us if it's a letter
       or not.
     
     * Consider an HTMLBuilder that reads not-necessarily-well-formed HTML and
       produces a JDOM Document.  The approach I'd suggest is to build on top of
       JTidy first.  That gives a working implementation fast, at the cost of a
       157K Tidy.jar in the distribution.  After that, perhaps someone would lead
       an effort to change the JTidy code to build a JDOM Document directly,
       instead of making a DOM Document or XML stream first.  That would be a lot
       faster, use less memory, and make our dist smaller.  See
       http://www.sourceforge.net/projects/jtidy for Tidy.
       See post by Jacob.Robertson@argushealth.com on 2/13/2002.
     
     * Look at a (contrib?) outputter option using SAX filters per
       http://lists.denveronline.net/lists/jdom-interest/2000-October/003303.html
       http://lists.denveronline.net/lists/jdom-interest/2000-October/003304.html
       http://lists.denveronline.net/lists/jdom-interest/2000-October/003318.html
       http://lists.denveronline.net/lists/jdom-interest/2000-October/003535.html
     
     * Look at event-based parsing as per the following thread:
       http://lists.denveronline.net/lists/jdom-interest/2000-November/003613.html
       and replies.
       Also see posts with the subject "streamdom".
     
     * Considering that local vars are considerably faster that instance vars, test
       if using local vars can speed building.
     
     * Consider using a List of instance data so elements only use what they really
       need (saving attrib list, namespace list)
     
     * Investigate doc.getDescription() to let people add doc descriptions.  It's
       an idea from IBM's parser suggested by andyk.
     
     * Work on creating a deferred builder that parses only what's necessary to
       satisfy the programmer's requests.  See Ayal Spitz' post at
       http://lists.denveronline.net/lists/jdom-interest/2001-April/005685.html
     
     * Change the various setAttributeValue() methods in Element and
       Attribute to check the attribute type and normalize the string
       according to the attribute type. i.e. normalize the white space if
       the attribute has any type other than CDATA or UNDECLARED.
     
     * Give attributes the "specified" flag like in DOM.  This probably isn't
       receivable from SAXBuilder, but it would be from DOMBuilder and other
       builders.  Then give XMLOutputter the ability to avoid outputting
       "unspecified" attributes.
     
     * Should there be XPath support within Element, Document, etc?
     
     

[top] / java / jdom / TODO.txt

contact | logmethods.com