<?xml version="1.0" encoding="ISO-8859-1"?>
<document url="http://www.dom4j.org/goals.xml">

  <properties>
    <title>Design Goals</title>
    <author email="jstrachan@apache.org">James Strachan</author>
 </properties>
 
  <body>
    
    <header>
      <p>This document outlines our design goals for <i>dom4j</i> and our 
        philosophy.
      </p>
    </header>

    <section name="Easy to use">
      <p>We think that an XML framework for Java should be simple, easy to use 
        and intuitive for a Java programmer.
        We want to take the best features from DOM and SAX and put them 
        together into a new unified API which is optimised the for the Java 
        platform.
      </p>
    </section>

    <section name="Standards compliant">
      <p>We want to fully support DOM and SAX together with existing 
        Java platform standards such as the Java 2 Collections and J2EE.
      </p>
    </section>

    <section name="Complete XPath integration">
      <p>We want complete XPath support integrated into the API and for it to 
        be very easy to use. XPath is the ideal technology for navigating 
        around XML documents simply and easily without writing lines and lines 
        of code.
      </p>
    </section>

    <section name="Flexible implementations">
      <p>We want to be able to support very flexible, performant and 
        memory efficient implementations of XML documents.
        So we want the API to be based on Java interfaces just like the Java 2 
        Collections framework.
      </p>
      <p>Just as no single List implementation will suffice (the JDK comes 
        with at least 3) we believe we need a framework allowing plug and play 
        XML document implementations. 
        For some users, using a LinkedList performs better than an ArrayList
        because their usage characteristics differ. 
        Others like to use a Vector as it is synchronized. 
        We believe an XML model should have the same flexibility.
      </p>
    </section>

    <section name="Handle very large documents">
      <p>One of the primary goals of <i>dom4j</i> is to be a flexible XML
        framework for Java which supports most users needs whether that be
        fast and efficient parsing with small memory overhead, processing 
        very large documents or using the latest XML features such as XPath, 
        XSLT and XML Query.
      </p>
      <p>We found that we often needed to move from DOM to SAX to 
        handle very large documents or to move from SAX to DOM to handle 
        complex documents.
        Our aim is for <i>dom4j</i> to be the only framework you really need 
        on the Java platform and for it to be a good citizen supporting and 
        integrating with existing standards fully.
      </p>
    </section>

  </body>
</document>









