Change summary for Matra - The DTD Parser.
Mar 27, 2004 (Version 0.8.1b - beta version)
- Organized the TODOs - gave them unique numbers.
- Fixed bug# 921463
- PubidLiteral not checked for in Notation declaration
Invalid chars (for e.g., ` ) where not flagged when parsing a Notation declaration. - 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. - Fixed bug# 919118
- Spelling mistake in Notation error message
Notation was spelling "Notaion" in one of the error messages. :) - Updated some more javadocs.
- The batch files now work with Windows ME too.
Feb 12, 2004 (Version 0.8b - beta version)
- Branched out from the main trunk in cvs.
- Matra now reads (and ignores) PI instructions. It currently reads, and ignores, the xmldecl too.
- 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. - 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.
- 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.
- 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.
- 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. - 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. - Created batch and shell scripts for easy usage - matra.bat, matra.sh, merge.bat, merge.sh, dtdtree.bat and dtdtree.sh
- Matra 0.8b was tested on the unix platform too.
- Filled in the missing javadocs (most of them ...)
- 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. - Corrected the Matra usage text.
- The parsing routine now checks for end of data errors - for incomplete declarations.
com.conradroche.dtd.decl PI com.conradroche.dtd.parser PIReaderNew Classes added
com.conradroche.matra.decl PI com.conradroche.matra.parser PIReaderImpl
Oct 06, 2003 (Version 0.7a - alpha version)
- Created the matra web site - http://matra.sourceforge.net
- Created UML diagrams and put it in the web site in SVG format.
- Nearly completed the interface definitions dtd packages.
- 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.
- The cursor read location is not encapsulated in the CursorLocation class. The method getCurrentLocation() of the Data class now returns a CursorLocation.
- Filled in more of the javadoc in the java code.
- Member variables in certain classes had surprisingly package level access! Caught them during creating of the UML diagrams. Fixed them to be private.
- Javadoc todos are now identified with the JavaDoc task tag.
- DTDSyntaxException now contains a CursorLocation - population of this object while throwing this exception is pending though :).
- DTDTree now distinguishes between an attribute default and fixed values.
fixed values are denoted by the
'=='
sign and default by the'='
sign. - Classified the documentation todos.
com.conradroche.dtd.decl AttlistDecl ElementDecl com.conradroche.dtd.decl.elem CompositeContentParticle ContentModel ContentParticle ContentSpec MixedContent SimpleContentParticle com.conradroche.dtd.parser AttlistReader ElementDeclReader EntityDeclReader NotationReaderNew Classes added
com.conradroche.matra.data CursorLocation com.conradroche.matra.decl ExternalID Notation com.conradroche.matra.parser AttlistReaderImpl ElementDeclReaderImpl EntityDeclReaderImpl NotationReaderImplnew Test cases added
com.conradroche.matra.test.parser AttlistReaderImplTest NotationReaderImplTest
Sep 20, 2003 (Version 0.6a - alpha version)
- Comments are no longer kept as String, but held within a class called Comment.
- 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 ('--').
- 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.
- Added an AssertionUtil to assert equality of String arrays.
- Added many of the missing javadoc comments.
- 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.
- Fixed a bug in ParseDTDFile, parseDTDUrl - it used to throw an exception if no command line parameters were passed.
- Categorized and reorganized the TODOs.
- Added the EBNF for the DTD (from the XML Specifications).
- 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.
com.conradroche.dtd.decl Entity.java ExternalID.java Notation.java GeneralEntity.java ParameterEntity.java Comment.java AttDef.java com.conradroche.dtd.parser CommentReader.javaNew Classes added
com.conradroche.matra.decl Comment.java GeneralEntity.java ParameterEntity.java com.conradroche.matra.parser CommentReaderImpl.javanew Test cases added
com.conradroche.matra.test MatraTestSuite.java com.conradroche.matra.test.data DataTestSuite.java com.conradroche.matra.test.decl DeclTestSuite.java EnumAttributeTest.java com.conradroche.matra.test.parser CommentReaderImplTest.java ReaderTestSuite.java com.conradroche.matra.test.util AssertionUtil.java
Aug 16, 2003 (Version 0.5a - alpha version)
- Made a lot of changes to the package structure of the project.
Now all the packages fall under the com.conradroche.matra package.
com.conradroche.matra.data 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.
com.conradroche.matra.io 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.
- 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.
- Added an intermediate class between Data and DTDData - ParseableData. Now Data encapsulates data retrieval, ParseableData handles generic parsing and DTDData handles DTD related parsing.
- Added a lot of additional methods to DTDData to make DTD parsing easier - like getNmToken().
- Added new exceptions
DTDSyntaxException - thrown when a syntax error is encountered.
DuplicateDefinitionException - thrown when a duplicate element type definition is encountered. - Added DTDUrl to retrieve a DTD from a URL source.
- Added DTDSerializer. This is an incomplete work. When complete it will help in serializing the DTD in memory to one or more DTD files.
- Added a long list of TODOs.
- 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. - 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)
- Created the 0.1a alpha version of the DTD Parser.
- Data.java (com.conradroche.parser.Data)
Utility class to parse a String. - ParserHelper.java (com.conradroche.util.ParserHelper)
Utility class to help in parsing XML. - AttList.java (com.conradroche.dtdparser.AttList)
Class to store the attribute list for an element type. - Attribute.java (com.conradroche.dtdparser.Attribute)
- DocType.java (com.conradroche.dtdparser.DocType)
- DTDData.java (com.conradroche.dtdparser.DTDData)
- DTDFile.java (com.conradroche.dtdparser.DTDFile)
- DTDParser.java (com.conradroche.dtdparser.DTDParser)
- DTDSource.java (com.conradroche.dtdparser.DTDSource)
- DTDTree.java (com.conradroche.dtdparser.DTDTree)
- ElementType.java (com.conradroche.dtdparser.ElementType)
- Entity.java (com.conradroche.dtdparser.Entity)
- DTDException.java (com.conradroche.dtdparser.DTDException)
None.