Cleanup debug output and format code.
Speed up 10% by elimination duplicate choices.
Fix "anyName" and "xml" namespace related bugs.
Fix bugs related to name resultion and oneOrMore element.
Add ability to quickly create a pattern without looking up information in the memoization cache.
Use memoization on all pattern creating functions.
Set element hash to its id value.Now all patterns can have a hash value.
Change the new implementation to use the refactored reference resolution.All unit tests still pass, but validating a huge ODT document still takes longer than I want to wait.
Resolve references in such a way that each element definition gets a unique id.This enables implementation of a hash function for the patterns, which in turn is needed to curb exponential scaling behavior as explained in the derivative.html document.
Do not create pattern members if they are empty. This should save quite a bit of memory.
Use JSON.stringify as default hash function.
Start framework for interning patterns
To avoid exponential blowup, it is needed to be able to compare patterns. This comparison involves tree traversal unless hashes are used and patterns are deduplicated by looking them up in a cache.
Fix unit test.
Add <choice/> support for element and attribute names to the new implementation.
Add tests for parsing of name choices.
Fix parsing of name choices.
Comment out debug output.
Fix loading for large rng file and add a few more needed functions.
Fix latest unit test.
Make circular dependencies possible.
snapshot after more tests work with new validator
snapshot after a fourth and fifth test work with new validator
snapshot after a second and third test work with new validator
snapshot after one test works with new validator
follow simplication specification more closely
Fix name resultion for attribute names.Milestone: we can now validate the ODF 1.2 in the flat XML form. This XML file is nearly 10 megabytes and the specification rng is about 440 kilobytes.
Add an extra check to make sure an attribute is really not defined.If an element is not present, getAttributeNS will return an empty string, but an empty string is possible attribute value, so an extra check is needed.
Fix bug in interleave that was exposed by test16.xml
If an interleave element has a oneOrMore child, try it every round where the current node has moved.
When in an interleave element, only report an error if there was an error.
Change the way <interleave/> is handled.Now all interleave elements that have interleave children, merge their children.That way it is easier to handle the complicated interleave scenarios.This also fixed a bug that prevented test13.xml from passing validation.
Fix a touch problem with efficiently traversing possibilities for attributes.
Only try an interleaved pattern twice if it involves subelements and not attributes. This avoid expensive re-iterations.
If first entry in interleave element does not advance the walker, try it again at the end.
Move on after parsing a text node.
Yet another fix to Relax NG parsing. Do not report an error if an element which can have text, does not.
Add class documentation.
Add fix for attribute value handling and a test for it.
Fix parsing of choice and text elements.
Fix bug in parsing of Relax NG: property "names" was lost when simplifying certain elements.
Check for attribute value.
Check if an attribute is present on an element.
Add active element to the function parameters in the Relax NG validator.
Work on Relax NG validator.
Refactor RelaxNG validator to match more closely the grammar for the Relax NG simple syntax.
Do not serialize any dom node from the http://www.w3.org/2000/xmlns/ and http://www.w3.org/1999/xhtml namespaces.xhtml is more specific and handled by the filter. xmlns should never be serialized and is hence excluded in the serializer itself.
Do not serialize a namespace declaration for "xmlns".
Filter out child nodes that are meant to be filtered out.
Load and save font-face-decls and make serializing of namespaces prettier.
Fix bug in transformation and comment out functions that are not needed in validating the simple Relax NG grammar.
Rewrite using the Relax NG simplification transformations. Still work in progress.
Work on Relax NG validation. Can now partially validate simple documents.
Add class for determining to which style key group a style reference belongs. This will be used for splitting up the element automatic-styles over styles.xml and content.xml.
Add snapshot of class for Relax NG validation. Work in progress.
Refactor use of byte arrays
Previously, byte arrays were implemented as string with values from 0 to 255 inclusive. Some runtimes such as Node and modern browsers have native array implementations. These should be faster.
This commit changes changes WebODF to use the native arrays. Since byte arrays differ across runtimes, they are now abstracted by the Runtime.
Add code to serialize the DOM to the ODF file. This is not complete yet.