Change summary for Matra - The DTD Parser.

Mar 27, 2004 (Version 0.8.1b - beta version)

  1. Organized the TODOs - gave them unique numbers.

  2. Fixed bug# 921463 - PubidLiteral not checked for in Notation declaration
    Invalid chars (for e.g., ` ) where not flagged when parsing a Notation declaration.

  3. Fixed bug# 921451 - PI with invalid target Name
    Invalid 'Name' for the PI target was not check for.
    For e.g., <?1target name="value"?> will now get an exception.

  4. Fixed bug# 919118 - Spelling mistake in Notation error message
    Notation was spelling "Notaion" in one of the error messages. :)

  5. Updated some more javadocs.

  6. The batch files now work with Windows ME too.

Feb 12, 2004 (Version 0.8b - beta version)

  1. Branched out from the main trunk in cvs.

  2. Matra now reads (and ignores) PI instructions. It currently reads, and ignores, the xmldecl too.

  3. Fixed bug# 878613 - problem with dtds having ~
    Matra used to use the ~ (tilde) char as a eof indicator. This will not work for files having a tilde char. This problem was fixed.

  4. Fixed bug# 878618 - NPE on empty ATTLIST
    Empty ATTLISTs are valid according to the xml production -

    [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'

    Earlier versions of Matra didn't allow an empty ATTLIST. For e.g., the following construct will give an error in Matra 0.7a:

    Matra -s "<!ATTLIST elementName>"

    This problem was fixed.

  5. Fixed bug# 878620 - Error on invalid enumeration
    If an emumeration contained invalid chars, Matra 0.7a gave an OutOfMemoryError.

    Matra -s "<!ATTLIST elem attr (a | b | test data | c) >"

    This problem was fixed.

  6. Fixed bug# 878621 - NPE when no potential root element
    Matra checks for potential root elements.

    The following gives a NullPointerException in Matra 0.7a:

    Matra -s "<!ELEMENT ele1 (ele2?)> <!ELEMENT ele2 (ele1?)>"

    This problem was fixed.

  7. Fixed bug# 878624 - stacktrace printed even when -v not specified
    Matra 0.7a printed the stacktrace even in the quiet mode - when an io exception was encountered. This problem was fixed.

  8. Fixed bug# 884400 - Error on valid Notation declaration
    Matra 0.7a read a token instead of the quoted string following the SYSTEM and PUBLIC tokens in a Notation declaration. This is fixed.

  9. Created batch and shell scripts for easy usage - matra.bat,, merge.bat,, dtdtree.bat and

  10. Matra 0.8b was tested on the unix platform too.

  11. Filled in the missing javadocs (most of them ...)

  12. The dtdtree now distinguishes between EMPTY and (#PCDATA) content models.
    The EMPTY content model is identified by a '=' holding the element node to the tree.

  13. Corrected the Matra usage text.

  14. The parsing routine now checks for end of data errors - for incomplete declarations.
New Interfaces added

New Classes added


Oct 06, 2003 (Version 0.7a - alpha version)

  1. Created the matra web site -

  2. Created UML diagrams and put it in the web site in SVG format.

  3. Nearly completed the interface definitions dtd packages.

  4. Matra now reads Notation declarations too (using NotationReader). It will flag an error if it finds an incorrect Notation declaration. It does not do anything with the declaration as of now.

  5. The cursor read location is not encapsulated in the CursorLocation class. The method getCurrentLocation() of the Data class now returns a CursorLocation.

  6. Filled in more of the javadoc in the java code.

  7. Member variables in certain classes had surprisingly package level access! Caught them during creating of the UML diagrams. Fixed them to be private.

  8. Javadoc todos are now identified with the JavaDoc task tag.

  9. DTDSyntaxException now contains a CursorLocation - population of this object while throwing this exception is pending though :).

  10. DTDTree now distinguishes between an attribute default and fixed values. fixed values are denoted by the '==' sign and default by the '=' sign.

  11. Classified the documentation todos.
New Interfaces added


New Classes added


new Test cases added

Sep 20, 2003 (Version 0.6a - alpha version)

  1. Comments are no longer kept as String, but held within a class called Comment.

  2. Added a CommentReader that would read the comment and create an appropriate Comment object. This functionality was moved from the DTDData::readCommentBlock method. This reader now throws exceptions for invalid comments having double-hypens ('--').

  3. Added test suites at package level (for the three packages that have test cases) and added a master test suite - MatraTestSuite - that includes all the test suites.

  4. Added an AssertionUtil to assert equality of String arrays.

  5. Added many of the missing javadoc comments.

  6. Created a set of interfaces for the Declarations in the DTD. This is a work in progress which I plan to finish before the next release.

  7. Fixed a bug in ParseDTDFile, parseDTDUrl - it used to throw an exception if no command line parameters were passed.

  8. Categorized and reorganized the TODOs.

  9. Added the EBNF for the DTD (from the XML Specifications).

  10. Matra used to stop processing the remaining DTDs in the list of DTDs if parsing of one of the DTDs failed; changed this behavior to continue processing of the remaining DTDs.
New Interfaces added

New Classes added

new Test cases added




Aug 16, 2003 (Version 0.5a - alpha version)

  1. Made a lot of changes to the package structure of the project. Now all the packages fall under the com.conradroche.matra package. contains the data classes.
    com.conradroche.matra.decl contains the basic declarations classes.
    com.conradroche.matra.dtdparser contains the parser.
    com.conradroche.matra.example contains the example classes.
    com.conradroche.matra.exception contains the exception classes. contain the io related classes.
    com.conradroche.matra.serialize contains the DTD Serializer.
    com.conradroche.matra.test and its subpackages contain the JUnit test cases.
    com.conradroche.matra.tree contains the DTD Tree generator.

  2. Added JUnit test classes to test the project classes. This helped to nail down some bugs. Currently added test cases for the data package and presently working on the decl package classes.

  3. Added an intermediate class between Data and DTDData - ParseableData. Now Data encapsulates data retrieval, ParseableData handles generic parsing and DTDData handles DTD related parsing.

  4. Added a lot of additional methods to DTDData to make DTD parsing easier - like getNmToken().

  5. Added new exceptions
    DTDSyntaxException - thrown when a syntax error is encountered.
    DuplicateDefinitionException - thrown when a duplicate element type definition is encountered.

  6. Added DTDUrl to retrieve a DTD from a URL source.

  7. Added DTDSerializer. This is an incomplete work. When complete it will help in serializing the DTD in memory to one or more DTD files.

  8. Added a long list of TODOs.

  9. And most importantly, cleaned up the example code!
    Added SimpleMatraEg - a very simple parsing example; ParseDTDFile - an example for parsing dtd files.
    ParseDTDUrl - an example for parsing dtd files present on the web.

  10. Modified the ParseDTDEg and made it into a command line exec, renamed it to Matra. Matra can be used for parsing DTD file, printing trees and merging DTDs.

Aug 05, 2000 (Version 0.1a - alpha version)

  1. Created the 0.1a alpha version of the DTD Parser.
Classes added Interfaces added