2006-04-19 Atsushi Enomoto * RelaxngValidatingReader.cs : (.ctor) reject null pattern. To filter xmlns attributes out, just use NamespaceURI. 2006-04-07 Atsushi Enomoto * RelaxngPattern.cs : use new RelaxngReader .ctor () with XmlResolver argument. Fix by Alexandre Alapetite. 2006-04-03 Atsushi Enomoto * RelaxngPattern.cs : set XmlResolver that is passed by RelaxngPattern.Read() as its property. 2006-03-29 Atsushi Enomoto * RelaxngDatatype.cs : Compare() should not be just a stupid object comparison, but should rather be type-dependent equality. Thanks to Alexandre. 2006-03-28 Atsushi Enomoto Based on the patch by Alexandre Alapetite: * RelaxngException.cs : added another constructor that takes pattern, string and innerException. * RelaxngReader.cs RelaxngPattern.cs : - wrap xml resolution error in RelaxngInclude.Read(). This change is argurable but might be convenient for certain users. - Added another constructor to RelaxngReader, and another overload for RelaxngPattern.Read(), otherwise RelaxngPattern.Read() can never use different XmlResolvers. 2006-03-27 Atsushi Enomoto Patch by Alexandre Alapetite (http://alexandre.alapetite.net/cv/) * RelaxngPattern.cs : RelaxngInclude.Read() could be NRE when there is an error in XmlTextReader .ctor(). * RelaxngValidatingReader.cs : If the input XmlReader is already positioned on the first node to validate, skip Read() here. 2006-02-02 Atsushi Enomoto * RelaxngValidatingReader.cs : removed extra tables. 2006-01-16 Atsushi Enomoto * RelaxngValidatingReader.cs : fixed warning. 2006-01-16 Atsushi Enomoto * RelaxngValidatingReader.cs : just keep previous TextDeriv() result for each pattern; they are mostly not reused. It makes validator about 30% faster in certain validation and reduces memory use. 2006-01-13 Atsushi Enomoto * RelaxngValidatingReader.cs : actually using Hashtable of Hashtable (instead of ArrayList of custom MemoizationStart class) is much better for performance. It makes StartTagOpenDeriv and StartAttDeriv more than 10x faster than before. 2006-01-13 Atsushi Enomoto * RelaxngDatatype.cs, RelaxngDefaultDatatypes.cs, XsdDatatypeProvider.cs, RelaxngValidatingReader.cs : Memoize TextDeriv() results for context independent inputs. Due to the API freeze they are kept as internal virtual for now. 2006-01-12 Atsushi Enomoto * RelaxngValidatingReader.cs : Use RdpPattern.EmptyTextDeriv(). It significantly improves performance wrt empty text nodes. 2006-01-10 Atsushi Enomoto * RelaxngValidatingReader.cs : - Split memoization support things into MemoizationStore class. - Split single memo ArrayList into a couple of Hashtables and ArrayLists which memoize each kind of derivative results. - Introduced StartAttDeriv() and EndAttDeriv() to replace AttDeriv() and memoize results efficiently. It is textually written in the "derivative algorithm", but not formally specified. - Introduced IsTextValueDependent and EmptyTextDeriv() to differentiate those patterns which results differ depending on the text value and those which doesn't. Those EmptyTextDeriv results are memoized. 2006-01-10 Atsushi Enomoto * Misc.cs : NormalizeWhitespace() was creating extraneous char[] and it could be heavily called depending on patterns. * RelaxngDefaultDatatypes.cs : avoid extraneous call to NormalizeWhitespace(). 2006-01-05 Atsushi Enomoto * RelaxngValidatingReader.cs : - weak match 3 in Section 6.2.7 was missing (in derivative, it is childrenDeriv cx p [] = childrenDeriv cx p [(TextNode "")] ). - uncommented out whitespace handling in TextOnlyDeriv (it is "in if whitespace s then choice p p1 else p1" in derivative). - MixedTextDeriv() is not fixed to not require string argument. * XsdDatatypeProvider.cs : call Read() after ReadTypedValue(). 2006-01-04 Alexandre Miguel Pedro Gomes * RelaxngValidatingReader.cs: fix typo 2006-01-04 Atsushi Enomoto * RelaxngValidatingReader.cs : - Simplified CreateValidationError(). - Don't validate 1) whitespaces outside element and 2) whitespaces which do not consist of text only content. - Implemented "memoization": http://www.thaiopensource.com/relaxng/derivative.html#Memoization - with related to memoization, use new TextOnlyDeriv() and MixedTextDeriv() to validate texts. See also RdpPattern changes. * RelaxngGrammar.cs : don't update pool tables for static instances. 2005-12-27 Atsushi Enomoto * Misc.cs RelaxngDatatype.cs RelaxngPattern.cs RelaxngException.cs RelaxngMergedProvider.cs RelaxngPatternType.cs RelaxngReader.cs RelaxngDefaultDatatypes.cs XsdDatatypeProvider.cs RelaxngValidatingReader.cs RelaxngDatatypeProvider.cs RelaxngGrammar.cs RelaxngNameClass.cs : This is the smarter way to set eol-style without messing code history. 2005-12-27 Atsushi Enomoto * RelaxngDatatype.cs RelaxngPattern.cs RelaxngException.cs RelaxngMergedProvider.cs RelaxngPatternType.cs RelaxngReader.cs RelaxngDefaultDatatypes.cs XsdDatatypeProvider.cs RelaxngValidatingReader.cs RelaxngDatatypeProvider.cs RelaxngGrammar.cs RelaxngNameClass.cs : turned out that they all have LF on copyright lines while they are written to have CRLF. 2005-12-27 Atsushi Enomoto * Misc.cs : it has inconsistent newlines. Removed unused code. 2005-12-27 Atsushi Enomoto * RelaxngGrammar.cs : A constraint in 4.18 that grammar must have at least one start element was missing. This fixes test #199 and #200. 2005-12-27 Atsushi Enomoto * RelaxngValidatingReader.cs : validate whitespaces as text nodes. It rather invalidated some valid documents incorrectly (since it kept text pattern remaining). This fixed following tests: 237/2.v.xml, 256/2.i.xml, 258/2.i.xml, 261/1.v.xml, 261/3.v.xml, 261/4.v.xml, 268/2.v.xml and 269/2.v.xml, while it exposed bugs on 260/2.i.xml and 261/6.i.xml (they are not regressions). 2005-12-27 Atsushi Enomoto * XsdDatatypeProvider.cs : Namespace remapping was required to make simple type restriction work fine. This fixes test #261/1.v.xml, #268/2.v.xml and #269/2.v.xml. 2005-12-27 Atsushi Enomoto * RelaxngValidatingReader.cs : it needs to cache text nodes to allow split texts by such nodes as comments or processing instructions. This fixes test #268 and #269. 2005-12-27 Atsushi Enomoto * RelaxngGrammar.cs : expand refs before checking content pattern. 2005-12-16 Atsushi Enomoto * RelaxngPattern.cs : RelaxngData and RelaxngValue was writing QName instead of NCName for type attribute (wrong). 2005-12-16 Atsushi Enomoto * RelaxngPattern.cs : in WriteCompact(), use WriteNamespace() to let RncWriter handle namespace output by itself. 2005-09-20 Atsushi Enomoto * RelaxngValidatingReader.cs : added explicit error message for attribute XmlReader validation (spec section 7.1.5 explicitly prohibits start//attribute so such validation never happens). * RelaxngGrammar.cs : name class analysis is now done inside CheckConstraints(), so nothing to add here. * RelaxngPattern.cs : (RdpUnresolvedRef) now GetLabels() could be invoked here, so just ignore. 2005-07-31 Atsushi Enomoto * RelaxngGrammar.cs : spec 7.3 check is kinda implemented but cannot verify now because of weird exception handling in the runtime. 2005-06-07 Atsushi Enomoto * RelaxngReader.cs : When ReadPattern() if no valid pattern appears then raise an error. In Read() when there are only non RELAX NG elements it resulted in an infinite loop. 2005-04-06 Atsushi Enomoto * RelaxngPattern.cs : fixed incorrect use of virtual. 2005-03-18 Atsushi Enomoto * XsdDatatypeProvider.cs : quick hack to workaround not to be rejected under MS.NET because of NOTATION type (thus, NOTATION type is not available in this provider). 2005-03-01 Atsushi Enomoto * RelaxngReader.cs : there was two public namespace constant. One should be obsoleted. 2005-03-01 Atsushi Enomoto * RelaxngPattern.cs : RdpUnresolvedRef should process empty/notAllowed elimination on its referenced pattern. 2005-02-27 Atsushi Enomoto * XsdDatatypeProvider.cs : Added simpleType parameter support. * RelaxngValidatingReader.cs : added ReportDetails flag to report all expected element names / attribute names. Removed all unused code. 2005-02-06 Atsushi Enomoto * RelaxngReader.cs : ns attribute on root element should also be handled as well as datatypeLibrary. 2005-02-06 Atsushi Enomoto * RelaxngReader.cs : it was not handling datatypeLibrary attribute on root element. Added DefaultNamespace handling. * RelaxngGrammar.cs : added DefaultNamespace property. * RelaxngPattern.cs : WriteCompact() now outputs "default namespace =..". 2005-01-26 Atsushi Enomoto * RelaxngPattern.cs : fixed 2.0 typo. 2005-01-26 Atsushi Enomoto * RelaxngGrammar.cs, RelaxngPattern.cs, RelaxngNameClass.cs : added RelaxngPattern.WriteCompact(TextWriter) and all internal WriteRnc() overrides. 2004-12-06 Atsushi Enomoto * RelaxngValidatingReader.cs : - Existing GetLabels() was insufficient to support attribute labels by design (since those state object always reflects the status after Read() and inside Read() attributes are checked and attribute derivatives are consumed). So just made existing stuff as obsolete. - Added object GetCurrentState() that returns RdpPattern wrapper. - Added Emptiable(object state) that returns whether the specified state is emptiable. - Added GetElementLabels(object state) and GetAttributeLabels(object state) that returns the collection of XmlQualifiedName that represents possible element names or attribute names from the argument state. - Added AfterOpenStartTag(state,name,ns), OpenStartTag(state,name, ns), AfterAttribute(state, name, ns), Attribute(state,name,ns), AfterCloseStartTag(state), CloseStartTag(state), AfterEndTag(state) and EndTag(state) to simulate state transition. AfterXXX() returns another state instance if the transition was successful or null. XXX() returns bool that indicates if the transition was successful or not and proceeds the state in case of success. 2004-12-06 Atsushi Enomoto * RelaxngException.cs : Added new .ctor() that takes RelaxngElementBase to provide target grammar component location. 2004-12-06 Atsushi Enomoto * RelaxngNameClass.cs, RelaxngPattern.cs, RelaxngGrammar.cs : Added related grammar component location to error message. In RelaxngDefine, Compile() caused error on duplicate key on Hashtable.Add(). * RelaxngReader.cs : In GetStrippedAttribute(), use GetAttribute(string,string). 2004-12-06 Atsushi Enomoto * RelaxngException.cs : don't store debug string. It was so harmful for performance. 2004-12-05 Atsushi Enomoto * RelaxngValidatingReader.cs : - Better way to expose API; use ExpectedElements and ExpectedAttributes of type ICollection. Now GetLabels is obsolete. - Implemented notAllowed check. It might be too heavy since it checks all the QNames returned by GetLabels. In such case, use RoughLabelCheck = true. - Added RoughLabelCheck of type bool that indicates to omit notAllowed check. 2004-12-05 Atsushi Enomoto * RelaxngValidatingReader.cs : no, it was very easy. But to avoid state-changeful property, it is now bool Emptiable(). 2004-12-05 Atsushi Enomoto * RelaxngValidatingReader.cs : reverted IsEmptiable. It was not ready. 2004-12-05 Atsushi Enomoto * RelaxngPattern.cs : added GetLabels() override to RdpUnresolvedRef. * RelaxngValidatingReader.cs : Added GetLabels() that collects "allowed element names and attributes" at current state. Added IsEmptiable that indicates whether current reader can be closed by an end tag. 2004-11-28 Atsushi Enomoto * RelaxngGrammar.cs : fixed error that happened on recompilation. 2004-07-14 Atsushi Enomoto * RelaxngGrammar.cs : When definition is missing, the error message should show what definition is missing. 2004-06-25 Atsushi Enomoto * Misc.cs, RelaxngDatatype.cs, RelaxngDatatypeProvider.cs, RelaxngDefaultDatatype.cs, RelaxngException.cs, RelaxngGrammar.cs, RelaxngMergedProvider.cs, RelaxngNameClass.cs, RelaxngPattern.cs, RelaxngPatternType.cs, RelaxngReader.cs, RelaxngValidatingReader.cs, XsdDatatypeProvider.cs : Added/replaced novell license term. 2004-06-21 Atsushi Enomoto * Misc.cs, RelaxngPattern.cs, RelaxngReader.cs : Use XmlResolver (or XmlUrlResolver) directly. XmlResolver was incorrectly _used_ before null check. Don't create XmlResolver instance for _every_ pattern object. * RelaxngPattern.cs : UnresolvedRef.ExpandRef() should return not try to find target derivative pattern twice. It was the culprit of infinite loop. Removed dirty switches. * RelaxngGrammar.cs : code cleanup. 2004-06-17 Atsushi Enomoto * Misc.cs, RelaxngGrammar.cs, RelaxngPattern.cs, RelaxngReader.cs : Added XmlResolver property to fix bug #60334. Check incrrect recursion check that caused possible infinite loop. 2004-05-31 Atsushi Enomoto * Misc.cs : made Util class internal. * RelaxngDatatypeProvider.cs : looks commit was missing. * RelaxngException.cs : made one .ctor() internal that accepts RdpPattern. * RelaxngNameClas.cs : Names list should not be settable. * RelaxngPattern.cs : RelaxngRefPattern class is internal use only. * RelaxngPatternType.cs : there is not "Include" pattern. 2004-05-30 Atsushi Enomoto * RelaxngDatatypeProvider.cs : removed meaningless using alias. * RelaxngGrammar.cs : modified ArrayList to RelaxngGrammarContentList. RelaxngMergedProvider.cs : Added #if PNET switch to support non- xmlschema available environment. * RelaxngPattern.cs : added IGrammarContent and RelaxngGrammarContentList. 2004-03-17 Atsushi Enomoto * RelaxngNameClass.cs : Introduced RelaxngNameClassList class. 2004-03-15 Atsushi Enomoto * RelaxngGrammar.cs, RelaxngNameClass.cs, RelaxngPattern.cs : Added Write() support. 2004-02-28 Atsushi Enomoto * RelaxngReader.cs : ReadPattern() should be public. 2004-02-25 Atsushi Enomoto * Removed - RngGrammar.cs - RngNameClass.cs - RngPattern.cs - RngPatternType.cs They are moved to RelaxngXXX.cs and improved 2004-02-25 Atsushi Enomoto * Added - RelaxngDatatype.cs - RelaxngDatatypeProvider.cs - RelaxngDefaultDatatypes.cs - RelaxngException.cs - RelaxngGrammar.cs - RelaxngMergedProvider.cs - RelaxngNameClass.cs - RelaxngPattern.cs - RelaxngPatternType.cs - XsdDatatypeProvider.cs * Misc.cs, RelaxngReader.cs, RelaxngValidatingReader.cs : Radical design changes. In short: - API redesign (renaming RngXxx to RelaxngXxx) - Strict grammar validation - Datatype support (XML Schema primitive datatypes) - Some derivative bugfixes such as list validation. 2003-05-19 Atsushi Enomoto * RelaxngReader.cs : + Now skips immaterial content correctly. + Removed MoveToContent(). + Trimming attribute values and names. + Fixed ReadNameClassChoice(), ReadNameClassExcept(), ReadPatternExcept (). They require one or more contents. + QName resolver fix. + ReadListPattern() failed to read actual content. * RelaxngValidatingReader.cs : + Fixed incorrect error message. + Fixed incorrect attribute namespace handling. * RngGrammar.cs : Some simplification stuff fix. Support for illegal recursion check. * RngNameClass.cs : fixed RngNsName ctor() (argument not passed). * RngPattern.cs : fixed ParentRef.Compile() (was treated same as Ref). 2003-05-05 Atsushi Enomoto * RelaxngReader.cs : ReadExternalRef() hadn't resolved base uri. 2003-04-29 Atsushi Enomoto * Started. * added ChangeLog, RelaxngReader.cs, RelaxngValidatingReader.cs, RngGrammar.cs, RngNameClasses.cs, RngPattern.cs, RngPatternType.cs and Misc.cs.