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