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