2010-07-23  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngPattern.cs : inherit XmlResolver to parsed rng component.
	  Fixed bug #622630.

2010-06-25  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngReader.cs : don't use Name, use LocalName. Fixed bug #617264.

2009-02-23  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngValidatingReader.cs : implemented error recovery feature.
	  Use InvalidNodeFound event (of type RelaxngValidationEventHandler)
	  to handle validation error like ValidationEventHandler in
	  System.Xml.XmlSchema.

2009-02-19  Atsushi Enomoto <atsushi@ximian.com>

	* XsdDatatypeProvider.cs : detect grammar-level error in type usage
	  at compile time.

2009-02-17  Atsushi Enomoto <atsushi@ximian.com>

	* XsdDatatypeProvider.cs : workaround .NET/Mono Regex bug that
	  does not handle \p{Latin-1Supplement} to work with OOXML grammar.

2009-01-20  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngReader.cs : fixed wrong text skip and ns/datatypeLibrary
	  stack pop. Fixed bug #463267.

2009-01-20  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngGrammar.cs : fix confused use of datatype provider property.
	  Fixed bug #463264. Based on the patch by Mark Junker.

2008-11-11  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngPattern.cs : handle inherited default namespace in compact 
	  syntax as expected.

2008-08-25  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngPattern.cs : unlike "include" element, "external" element
	  was always resolved as XML syntax, and hence blocked use of
	  external element in compact syntax.

2007-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngPattern.cs : (RelaxngInclude) when a relative Uri is
	  specified as its BaseUri, make it into an absolute path and
	  then resolve the URI.

2007-12-17  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngPattern.cs : (RelaxngInclude) when it is constructed from
	  the compact syntax, resolve included file as compact syntax too.
	* RelaxngGrammar.cs : to make above possible, add a new
	  IsSourceCompactSyntax field that is to be set in RncParser.

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
	  should show what definition is missing.

2004-06-25  Atsushi Enomoto <atsushi@ximian.com>

	* 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 <atsushi@ximian.com>

	* 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 <atsushi@ximian.com>

	* 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 <atsushi@ximian.com>

	* 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 <atsushi@ximian.com>

	* 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 <atsushi@ximian.com>

	* RelaxngNameClass.cs : Introduced RelaxngNameClassList class.

2004-03-15  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngGrammar.cs,
	  RelaxngNameClass.cs,
	  RelaxngPattern.cs : Added Write() support.

2004-02-28  Atsushi Enomoto <atsushi@ximian.com>

	* RelaxngReader.cs : ReadPattern() should be public.

2004-02-25  Atsushi Enomoto <atsushi@ximian.com>

	* Removed 
	  - RngGrammar.cs
	  - RngNameClass.cs
	  - RngPattern.cs
	  - RngPatternType.cs
	  They are moved to RelaxngXXX.cs and improved

2004-02-25  Atsushi Enomoto <atsushi@ximian.com>

	* 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 <ginga@kit.hi-ho.ne.jp>

	* 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 <ginga@kit.hi-ho.ne.jp>

	* RelaxngReader.cs : ReadExternalRef() hadn't resolved base uri.

2003-04-29  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>

	* Started.
	* added ChangeLog, RelaxngReader.cs, RelaxngValidatingReader.cs,
	  RngGrammar.cs, RngNameClasses.cs, RngPattern.cs, RngPatternType.cs
	  and Misc.cs.

