2010-04-06 Jb Evain <jbevain@novell.com>
[mcs.git] / class / Commons.Xml.Relaxng / Commons.Xml.Relaxng / ChangeLog
blob5ca967410d4670c2ac0d758a20f3f82f1d5753e5
1 2009-02-23  Atsushi Enomoto <atsushi@ximian.com>
3         * RelaxngValidatingReader.cs : implemented error recovery feature.
4           Use InvalidNodeFound event (of type RelaxngValidationEventHandler)
5           to handle validation error like ValidationEventHandler in
6           System.Xml.XmlSchema.
8 2009-02-19  Atsushi Enomoto <atsushi@ximian.com>
10         * XsdDatatypeProvider.cs : detect grammar-level error in type usage
11           at compile time.
13 2009-02-17  Atsushi Enomoto <atsushi@ximian.com>
15         * XsdDatatypeProvider.cs : workaround .NET/Mono Regex bug that
16           does not handle \p{Latin-1Supplement} to work with OOXML grammar.
18 2009-01-20  Atsushi Enomoto <atsushi@ximian.com>
20         * RelaxngReader.cs : fixed wrong text skip and ns/datatypeLibrary
21           stack pop. Fixed bug #463267.
23 2009-01-20  Atsushi Enomoto <atsushi@ximian.com>
25         * RelaxngGrammar.cs : fix confused use of datatype provider property.
26           Fixed bug #463264. Based on the patch by Mark Junker.
28 2008-11-11  Atsushi Enomoto <atsushi@ximian.com>
30         * RelaxngPattern.cs : handle inherited default namespace in compact 
31           syntax as expected.
33 2008-08-25  Atsushi Enomoto <atsushi@ximian.com>
35         * RelaxngPattern.cs : unlike "include" element, "external" element
36           was always resolved as XML syntax, and hence blocked use of
37           external element in compact syntax.
39 2007-12-27  Atsushi Enomoto <atsushi@ximian.com>
41         * RelaxngPattern.cs : (RelaxngInclude) when a relative Uri is
42           specified as its BaseUri, make it into an absolute path and
43           then resolve the URI.
45 2007-12-17  Atsushi Enomoto <atsushi@ximian.com>
47         * RelaxngPattern.cs : (RelaxngInclude) when it is constructed from
48           the compact syntax, resolve included file as compact syntax too.
49         * RelaxngGrammar.cs : to make above possible, add a new
50           IsSourceCompactSyntax field that is to be set in RncParser.
52 2006-04-19  Atsushi Enomoto <atsushi@ximian.com>
54         * RelaxngValidatingReader.cs : (.ctor) reject null pattern.
55           To filter xmlns attributes out, just use NamespaceURI.
57 2006-04-07  Atsushi Enomoto <atsushi@ximian.com>
59         * RelaxngPattern.cs : use new RelaxngReader .ctor () with XmlResolver
60           argument. Fix by Alexandre Alapetite.
62 2006-04-03  Atsushi Enomoto <atsushi@ximian.com>
64         * RelaxngPattern.cs : set XmlResolver that is passed by
65           RelaxngPattern.Read() as its property.
67 2006-03-29  Atsushi Enomoto <atsushi@ximian.com>
69         * RelaxngDatatype.cs : Compare() should not be just a stupid object
70           comparison, but should rather be type-dependent equality.
71           Thanks to Alexandre.
73 2006-03-28  Atsushi Enomoto <atsushi@ximian.com>
75         Based on the patch by Alexandre Alapetite:
76         * RelaxngException.cs : added another constructor that takes
77           pattern, string and innerException.
78         * RelaxngReader.cs
79           RelaxngPattern.cs :
80           - wrap xml resolution error in RelaxngInclude.Read(). This change
81             is argurable but might be convenient for certain users.
82           - Added another constructor to RelaxngReader, and another overload
83             for RelaxngPattern.Read(), otherwise RelaxngPattern.Read() can
84             never use different XmlResolvers.
86 2006-03-27  Atsushi Enomoto <atsushi@ximian.com>
88         Patch by Alexandre Alapetite (http://alexandre.alapetite.net/cv/)
89         * RelaxngPattern.cs : RelaxngInclude.Read() could be NRE when
90           there is an error in XmlTextReader .ctor().
91         * RelaxngValidatingReader.cs : If the input XmlReader is already 
92           positioned on the first node to validate, skip Read() here.
94 2006-02-02  Atsushi Enomoto <atsushi@ximian.com>
96         * RelaxngValidatingReader.cs : removed extra tables.
98 2006-01-16  Atsushi Enomoto <atsushi@ximian.com>
100         * RelaxngValidatingReader.cs : fixed warning.
102 2006-01-16  Atsushi Enomoto <atsushi@ximian.com>
104         * RelaxngValidatingReader.cs : just keep previous TextDeriv() result
105           for each pattern; they are mostly not reused. It makes validator
106           about 30% faster in certain validation and reduces memory use.
108 2006-01-13  Atsushi Enomoto <atsushi@ximian.com>
110         * RelaxngValidatingReader.cs : actually using Hashtable of Hashtable
111           (instead of ArrayList of custom MemoizationStart class) is much
112           better for performance. It makes StartTagOpenDeriv and
113           StartAttDeriv more than 10x faster than before.
115 2006-01-13  Atsushi Enomoto <atsushi@ximian.com>
117         * RelaxngDatatype.cs, RelaxngDefaultDatatypes.cs,
118           XsdDatatypeProvider.cs, RelaxngValidatingReader.cs :
119           Memoize TextDeriv() results for context independent inputs.
121           Due to the API freeze they are kept as internal virtual for now.
123 2006-01-12  Atsushi Enomoto <atsushi@ximian.com>
125         * RelaxngValidatingReader.cs : Use RdpPattern.EmptyTextDeriv(). It
126           significantly improves performance wrt empty text nodes.
128 2006-01-10  Atsushi Enomoto <atsushi@ximian.com>
130         * RelaxngValidatingReader.cs :
131           - Split memoization support things into MemoizationStore class.
132           - Split single memo ArrayList into a couple of Hashtables and 
133             ArrayLists which memoize each kind of derivative results.
134           - Introduced StartAttDeriv() and EndAttDeriv() to replace AttDeriv()
135             and memoize results efficiently. It is textually written in the
136             "derivative algorithm", but not formally specified.
137           - Introduced IsTextValueDependent and EmptyTextDeriv() to 
138             differentiate those patterns which results differ depending on
139             the text value and those which doesn't.
140             Those EmptyTextDeriv results are memoized.
142 2006-01-10  Atsushi Enomoto <atsushi@ximian.com>
144         * Misc.cs : NormalizeWhitespace() was creating extraneous char[] and
145           it could be heavily called depending on patterns.
146         * RelaxngDefaultDatatypes.cs : avoid extraneous call to
147           NormalizeWhitespace().
149 2006-01-05  Atsushi Enomoto <atsushi@ximian.com>
151         * RelaxngValidatingReader.cs :
152           - weak match 3 in Section 6.2.7 was missing (in derivative, it is
153             childrenDeriv cx p [] = childrenDeriv cx p [(TextNode "")] ).
154           - uncommented out whitespace handling in TextOnlyDeriv (it is 
155             "in if whitespace s then choice p p1 else p1" in derivative).
156           - MixedTextDeriv() is not fixed to not require string argument.
157         * XsdDatatypeProvider.cs : call Read() after ReadTypedValue().
159 2006-01-04  Alexandre Miguel Pedro Gomes <alexmipego@gmail.com>
161         * RelaxngValidatingReader.cs: fix typo
163 2006-01-04  Atsushi Enomoto <atsushi@ximian.com>
165         * RelaxngValidatingReader.cs :
166           - Simplified CreateValidationError().
167           - Don't validate 1) whitespaces outside element and 2) whitespaces
168             which do not consist of text only content.
169           - Implemented "memoization":
170             http://www.thaiopensource.com/relaxng/derivative.html#Memoization
171           - with related to memoization, use new TextOnlyDeriv() and 
172             MixedTextDeriv() to validate texts. See also RdpPattern changes.
173         * RelaxngGrammar.cs : don't update pool tables for static instances.
175 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
177         * Misc.cs RelaxngDatatype.cs RelaxngPattern.cs RelaxngException.cs
178           RelaxngMergedProvider.cs RelaxngPatternType.cs RelaxngReader.cs
179           RelaxngDefaultDatatypes.cs XsdDatatypeProvider.cs
180           RelaxngValidatingReader.cs RelaxngDatatypeProvider.cs
181           RelaxngGrammar.cs RelaxngNameClass.cs :
183           This is the smarter way to set eol-style without messing code
184           history.
186 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
188         * RelaxngDatatype.cs RelaxngPattern.cs RelaxngException.cs
189           RelaxngMergedProvider.cs RelaxngPatternType.cs RelaxngReader.cs
190           RelaxngDefaultDatatypes.cs XsdDatatypeProvider.cs
191           RelaxngValidatingReader.cs RelaxngDatatypeProvider.cs
192           RelaxngGrammar.cs RelaxngNameClass.cs :
193           turned out that they all have LF on copyright lines while they are
194           written to have CRLF.
196 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
198         * Misc.cs : it has inconsistent newlines. Removed unused code.
200 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
202         * RelaxngGrammar.cs : A constraint in 4.18 that grammar must have at
203           least one start element was missing. This fixes test #199 and #200.
205 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
207         * RelaxngValidatingReader.cs : validate whitespaces as text nodes. It
208           rather invalidated some valid documents incorrectly (since it kept
209           text pattern remaining). This fixed following tests: 237/2.v.xml,
210           256/2.i.xml, 258/2.i.xml, 261/1.v.xml, 261/3.v.xml, 261/4.v.xml,
211           268/2.v.xml and 269/2.v.xml, while it exposed bugs on 260/2.i.xml
212           and 261/6.i.xml (they are not regressions).
214 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
216         * XsdDatatypeProvider.cs : Namespace remapping was required to make
217           simple type restriction work fine. This fixes test #261/1.v.xml,
218           #268/2.v.xml and #269/2.v.xml.
220 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
222         * RelaxngValidatingReader.cs : it needs to cache text nodes to allow
223           split texts by such nodes as comments or processing instructions.
224           This fixes test #268 and #269.
226 2005-12-27  Atsushi Enomoto <atsushi@ximian.com>
228         * RelaxngGrammar.cs : expand refs before checking content pattern.
230 2005-12-16  Atsushi Enomoto <atsushi@ximian.com>
232         * RelaxngPattern.cs : RelaxngData and RelaxngValue was writing QName
233           instead of NCName for type attribute (wrong).
235 2005-12-16  Atsushi Enomoto <atsushi@ximian.com>
237         * RelaxngPattern.cs : in WriteCompact(), use WriteNamespace() to
238           let RncWriter handle namespace output by itself.
240 2005-09-20  Atsushi Enomoto <atsushi@ximian.com>
242         * RelaxngValidatingReader.cs : added explicit error message for
243           attribute XmlReader validation (spec section 7.1.5 explicitly
244           prohibits start//attribute so such validation never happens).
245         * RelaxngGrammar.cs : name class analysis is now done inside
246           CheckConstraints(), so nothing to add here.
247         * RelaxngPattern.cs : (RdpUnresolvedRef) now GetLabels() could be
248           invoked here, so just ignore.
250 2005-07-31  Atsushi Enomoto <atsushi@ximian.com>
252         * RelaxngGrammar.cs : spec 7.3 check is kinda implemented but cannot
253           verify now because of weird exception handling in the runtime.
255 2005-06-07  Atsushi Enomoto <atsushi@ximian.com>
257         * RelaxngReader.cs : When ReadPattern() if no valid pattern appears
258           then raise an error. In Read() when there are only non RELAX NG 
259           elements it resulted in an infinite loop.
261 2005-04-06  Atsushi Enomoto <atsushi@ximian.com>
263         * RelaxngPattern.cs : fixed incorrect use of virtual.
265 2005-03-18  Atsushi Enomoto <atsushi@ximian.com>
267         * XsdDatatypeProvider.cs : quick hack to workaround not to be rejected 
268           under MS.NET because of NOTATION type (thus, NOTATION type is not
269           available in this provider).
271 2005-03-01  Atsushi Enomoto <atsushi@ximian.com>
273         * RelaxngReader.cs : there was two public namespace constant. One
274           should be obsoleted.
276 2005-03-01  Atsushi Enomoto <atsushi@ximian.com>
278         * RelaxngPattern.cs : RdpUnresolvedRef should process empty/notAllowed
279           elimination on its referenced pattern.
281 2005-02-27  Atsushi Enomoto <atsushi@ximian.com>
283         * XsdDatatypeProvider.cs : Added simpleType parameter support.
284         * RelaxngValidatingReader.cs : added ReportDetails flag to report all
285           expected element names / attribute names. Removed all unused code.
287 2005-02-06  Atsushi Enomoto <atsushi@ximian.com>
289         * RelaxngReader.cs : ns attribute on root element should also be 
290           handled as well as datatypeLibrary.
292 2005-02-06  Atsushi Enomoto <atsushi@ximian.com>
294         * RelaxngReader.cs : it was not handling datatypeLibrary attribute
295           on root element. Added DefaultNamespace handling.
296         * RelaxngGrammar.cs : added DefaultNamespace property.
297         * RelaxngPattern.cs : WriteCompact() now outputs "default namespace =..".
299 2005-01-26  Atsushi Enomoto <atsushi@ximian.com>
301         * RelaxngPattern.cs : fixed 2.0 typo.
303 2005-01-26  Atsushi Enomoto <atsushi@ximian.com>
305         * RelaxngGrammar.cs, RelaxngPattern.cs, RelaxngNameClass.cs :
306           added RelaxngPattern.WriteCompact(TextWriter) and all internal 
307           WriteRnc() overrides.
309 2004-12-06  Atsushi Enomoto <atsushi@ximian.com>
311         * RelaxngValidatingReader.cs :
312           - Existing GetLabels() was insufficient to support attribute labels
313             by design (since those state object always reflects the status
314             after Read() and inside Read() attributes are checked and attribute
315             derivatives are consumed). So just made existing stuff as obsolete.
316           - Added object GetCurrentState() that returns RdpPattern wrapper.
317           - Added Emptiable(object state) that returns whether the 
318             specified state is emptiable.
319           - Added GetElementLabels(object state) and GetAttributeLabels(object
320             state) that returns the collection of XmlQualifiedName that 
321             represents possible element names or attribute names from the
322             argument state.
323           - Added AfterOpenStartTag(state,name,ns), OpenStartTag(state,name,
324             ns), AfterAttribute(state, name, ns), Attribute(state,name,ns),
325             AfterCloseStartTag(state), CloseStartTag(state),
326             AfterEndTag(state) and EndTag(state) to simulate state transition.
327             AfterXXX() returns another state instance if the transition was
328             successful or null. XXX() returns bool that indicates if the 
329             transition was successful or not and proceeds the state in case
330             of success.
332 2004-12-06  Atsushi Enomoto <atsushi@ximian.com>
334         * RelaxngException.cs : Added new .ctor() that takes RelaxngElementBase
335           to provide target grammar component location.
337 2004-12-06  Atsushi Enomoto <atsushi@ximian.com>
339         * RelaxngNameClass.cs,
340           RelaxngPattern.cs,
341           RelaxngGrammar.cs :
342           Added related grammar component location to error message.
343           In RelaxngDefine, Compile() caused error on duplicate key on
344           Hashtable.Add().
345         * RelaxngReader.cs : In GetStrippedAttribute(), use 
346           GetAttribute(string,string).
348 2004-12-06  Atsushi Enomoto <atsushi@ximian.com>
350         * RelaxngException.cs : don't store debug string. It was so harmful
351           for performance.
353 2004-12-05  Atsushi Enomoto <atsushi@ximian.com>
355         * RelaxngValidatingReader.cs :
356           - Better way to expose API; use ExpectedElements and 
357             ExpectedAttributes of type ICollection. Now GetLabels is obsolete.
358           - Implemented notAllowed check. It might be too heavy since it
359             checks all the QNames returned by GetLabels. In such case, use
360             RoughLabelCheck = true.
361           - Added RoughLabelCheck of type bool that indicates to omit
362             notAllowed check.
364 2004-12-05  Atsushi Enomoto <atsushi@ximian.com>
366         * RelaxngValidatingReader.cs : no, it was very easy. But to avoid
367           state-changeful property, it is now bool Emptiable().
369 2004-12-05  Atsushi Enomoto <atsushi@ximian.com>
371         * RelaxngValidatingReader.cs : reverted IsEmptiable. It was not ready.
373 2004-12-05  Atsushi Enomoto <atsushi@ximian.com>
375         * RelaxngPattern.cs : added GetLabels() override to RdpUnresolvedRef.
376         * RelaxngValidatingReader.cs :
377           Added GetLabels() that collects "allowed element names and
378           attributes" at current state.
379           Added IsEmptiable that indicates whether current reader can be
380           closed by an end tag.
382 2004-11-28  Atsushi Enomoto <atsushi@ximian.com>
384         * RelaxngGrammar.cs : fixed error that happened on recompilation.
386 2004-07-14  Atsushi Enomoto <atsushi@ximian.com>
388         * RelaxngGrammar.cs : When definition is missing, the error message
389           should show what definition is missing.
391 2004-06-25  Atsushi Enomoto <atsushi@ximian.com>
393         * Misc.cs, RelaxngDatatype.cs, RelaxngDatatypeProvider.cs,
394           RelaxngDefaultDatatype.cs, RelaxngException.cs, RelaxngGrammar.cs,
395           RelaxngMergedProvider.cs, RelaxngNameClass.cs, RelaxngPattern.cs,
396           RelaxngPatternType.cs, RelaxngReader.cs, RelaxngValidatingReader.cs,
397           XsdDatatypeProvider.cs : Added/replaced novell license term.
399 2004-06-21  Atsushi Enomoto <atsushi@ximian.com>
401         * Misc.cs,
402           RelaxngPattern.cs,
403           RelaxngReader.cs :
404           Use XmlResolver (or XmlUrlResolver) directly. XmlResolver was
405           incorrectly _used_ before null check. Don't create XmlResolver
406           instance for _every_ pattern object.
407         * RelaxngPattern.cs : UnresolvedRef.ExpandRef() should return not
408           try to find target derivative pattern twice. It was the culprit of
409           infinite loop. Removed dirty switches.
410         * RelaxngGrammar.cs : code cleanup.
412 2004-06-17  Atsushi Enomoto <atsushi@ximian.com>
414         * Misc.cs, RelaxngGrammar.cs, RelaxngPattern.cs, RelaxngReader.cs :
415           Added XmlResolver property to fix bug #60334.
416           Check incrrect recursion check that caused possible infinite loop.
418 2004-05-31  Atsushi Enomoto <atsushi@ximian.com>
420         * Misc.cs : made Util class internal.
421         * RelaxngDatatypeProvider.cs : looks commit was missing.
422         * RelaxngException.cs : made one .ctor() internal that accepts
423           RdpPattern.
424         * RelaxngNameClas.cs : Names list should not be settable.
425         * RelaxngPattern.cs : RelaxngRefPattern class is internal use only.
426         * RelaxngPatternType.cs : there is not "Include" pattern.
428 2004-05-30  Atsushi Enomoto <atsushi@ximian.com>
430         * RelaxngDatatypeProvider.cs : removed meaningless using alias.
431         * RelaxngGrammar.cs : modified ArrayList to RelaxngGrammarContentList.
432           RelaxngMergedProvider.cs : Added #if PNET switch to support non-
433           xmlschema available environment.
434         * RelaxngPattern.cs : added IGrammarContent and
435           RelaxngGrammarContentList.
437 2004-03-17  Atsushi Enomoto <atsushi@ximian.com>
439         * RelaxngNameClass.cs : Introduced RelaxngNameClassList class.
441 2004-03-15  Atsushi Enomoto <atsushi@ximian.com>
443         * RelaxngGrammar.cs,
444           RelaxngNameClass.cs,
445           RelaxngPattern.cs : Added Write() support.
447 2004-02-28  Atsushi Enomoto <atsushi@ximian.com>
449         * RelaxngReader.cs : ReadPattern() should be public.
451 2004-02-25  Atsushi Enomoto <atsushi@ximian.com>
453         * Removed 
454           - RngGrammar.cs
455           - RngNameClass.cs
456           - RngPattern.cs
457           - RngPatternType.cs
458           They are moved to RelaxngXXX.cs and improved
460 2004-02-25  Atsushi Enomoto <atsushi@ximian.com>
462         * Added 
463           - RelaxngDatatype.cs
464           - RelaxngDatatypeProvider.cs
465           - RelaxngDefaultDatatypes.cs
466           - RelaxngException.cs
467           - RelaxngGrammar.cs
468           - RelaxngMergedProvider.cs
469           - RelaxngNameClass.cs
470           - RelaxngPattern.cs
471           - RelaxngPatternType.cs
472           - XsdDatatypeProvider.cs
473         * Misc.cs,
474           RelaxngReader.cs,
475           RelaxngValidatingReader.cs : Radical design changes.
477         In short:
478           - API redesign (renaming RngXxx to RelaxngXxx)
479           - Strict grammar validation
480           - Datatype support (XML Schema primitive datatypes)
481           - Some derivative bugfixes such as list validation.
483 2003-05-19  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
485         * RelaxngReader.cs :
486           + Now skips immaterial content correctly.
487           + Removed MoveToContent().
488           + Trimming attribute values and names.
489           + Fixed ReadNameClassChoice(), ReadNameClassExcept(),
490             ReadPatternExcept (). They require one or more contents.
491           + QName resolver fix.
492           + ReadListPattern() failed to read actual content.
493         * RelaxngValidatingReader.cs :
494           + Fixed incorrect error message.
495           + Fixed incorrect attribute namespace handling.
496         * RngGrammar.cs : Some simplification stuff fix. 
497           Support for illegal recursion check.
498         * RngNameClass.cs : fixed RngNsName ctor() (argument not passed).
499         * RngPattern.cs : fixed ParentRef.Compile() (was treated same as Ref).
501 2003-05-05  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
503         * RelaxngReader.cs : ReadExternalRef() hadn't resolved base uri.
505 2003-04-29  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
507         * Started.
508         * added ChangeLog, RelaxngReader.cs, RelaxngValidatingReader.cs,
509           RngGrammar.cs, RngNameClasses.cs, RngPattern.cs, RngPatternType.cs
510           and Misc.cs.