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