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