+2006-04-19 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngValidatingReader.cs : (.ctor) reject null pattern.
+ To filter xmlns attributes out, just use NamespaceURI.
+
+2006-04-07 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : use new RelaxngReader .ctor () with XmlResolver
+ argument. Fix by Alexandre Alapetite.
+
+2006-04-03 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : set XmlResolver that is passed by
+ RelaxngPattern.Read() as its property.
+
+2006-03-29 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ 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 <atsushi@ximian.com>
+
+ 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 <atsushi@ximian.com>
+
+ * RelaxngValidatingReader.cs : removed extra tables.
+
+2006-01-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngValidatingReader.cs : fixed warning.
+
+2006-01-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngValidatingReader.cs : Use RdpPattern.EmptyTextDeriv(). It
+ significantly improves performance wrt empty text nodes.
+
+2006-01-10 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <alexmipego@gmail.com>
+
+ * RelaxngValidatingReader.cs: fix typo
+
+2006-01-04 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * Misc.cs : it has inconsistent newlines. Removed unused code.
+
+2005-12-27 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngGrammar.cs : expand refs before checking content pattern.
+
+2005-12-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : RelaxngData and RelaxngValue was writing QName
+ instead of NCName for type attribute (wrong).
+
+2005-12-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : in WriteCompact(), use WriteNamespace() to
+ let RncWriter handle namespace output by itself.
+
+2005-09-20 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : fixed incorrect use of virtual.
+
+2005-03-18 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngReader.cs : there was two public namespace constant. One
+ should be obsoleted.
+
+2005-03-01 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : RdpUnresolvedRef should process empty/notAllowed
+ elimination on its referenced pattern.
+
+2005-02-27 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngReader.cs : ns attribute on root element should also be
+ handled as well as datatypeLibrary.
+
+2005-02-06 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngPattern.cs : fixed 2.0 typo.
+
+2005-01-26 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngGrammar.cs, RelaxngPattern.cs, RelaxngNameClass.cs :
+ added RelaxngPattern.WriteCompact(TextWriter) and all internal
+ WriteRnc() overrides.
+
+2004-12-06 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngException.cs : Added new .ctor() that takes RelaxngElementBase
+ to provide target grammar component location.
+
+2004-12-06 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngException.cs : don't store debug string. It was so harmful
+ for performance.
+
+2004-12-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngValidatingReader.cs : no, it was very easy. But to avoid
+ state-changeful property, it is now bool Emptiable().
+
+2004-12-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * RelaxngValidatingReader.cs : reverted IsEmptiable. It was not ready.
+
+2004-12-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * 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 <atsushi@ximian.com>
+
+ * RelaxngGrammar.cs : fixed error that happened on recompilation.
+
2004-07-14 Atsushi Enomoto <atsushi@ximian.com>
* RelaxngGrammar.cs : When definition is missing, the error message