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