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