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