2006-01-04 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Wed, 4 Jan 2006 19:42:12 +0000 (19:42 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Wed, 4 Jan 2006 19:42:12 +0000 (19:42 -0000)
commit8536972b33a9ac0ff2493820c3a17f0540b6cee8
tree792b3479a1ea5cf5adbdd1f8a9759a09a602eafd
parentfc029667a106e1db8468ecba670dbdba42be4f19
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.

* RdpPattern.cs :
  - Implemented textOnlyDeriv and mixedTextDeriv of "memoization".
    Details are described in the "derivative" algorithm:
    http://www.thaiopensource.com/relaxng/derivative.html#Memoization
  - Added MakeChoiceLeaf() to implement "choice-leaves":
    http://www.thaiopensource.com/relaxng/derivative.html#Avoiding_exponential_blowup
  - To intern effectively, reorder choice and interleave contents by
    hash code.
  - Avoid extra pattern creation with related to empty and notAllowed
    as one hand of binary branches.

* RelaxngValidatingReaderTests.cs : regressions mentioned in the
  previous fix were solved.

svn path=/trunk/mcs/; revision=55071
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/ChangeLog
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Derivative/RdpPatterns.cs
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/ChangeLog
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngGrammar.cs
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng/RelaxngValidatingReader.cs
mcs/class/Commons.Xml.Relaxng/Test/ChangeLog
mcs/class/Commons.Xml.Relaxng/Test/RelaxngValidatingReaderTests.cs