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