New test.
[mono.git] / mcs / class / Commons.Xml.Relaxng / Commons.Xml.Relaxng / ChangeLog
index 7a177d9bdd26cb6aa1e6bc9bd9b953461c8b784d..b5b3b320a044e5f97870375eb4c04818daa65ede 100644 (file)
@@ -1,3 +1,337 @@
+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