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