Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros
FacetsChecker.cs
Go to the documentation of this file.
2using System.Text;
4
5namespace System.Xml.Schema;
6
7internal abstract class FacetsChecker
8{
9 private struct FacetsCompiler
10 {
11 private struct Map
12 {
13 internal char match;
14
15 internal string replacement;
16
17 internal Map(char m, string r)
18 {
19 match = m;
20 replacement = r;
21 }
22 }
23
25
27
28 private readonly RestrictionFlags _baseFlags;
29
31
33
35
37
38 private readonly XmlTypeCode _builtInEnum;
39
40 private bool _firstPattern;
41
43
45
46 private static readonly Map[] s_map = new Map[8]
47 {
48 new Map('c', "\\p{_xmlC}"),
49 new Map('C', "\\P{_xmlC}"),
50 new Map('d', "\\p{_xmlD}"),
51 new Map('D', "\\P{_xmlD}"),
52 new Map('i', "\\p{_xmlI}"),
53 new Map('I', "\\P{_xmlI}"),
54 new Map('w', "\\p{_xmlW}"),
55 new Map('W', "\\P{_xmlW}")
56 };
57
72
96
116
136
138 {
140 if (_firstPattern)
141 {
142 _regStr = new StringBuilder();
143 _regStr.Append('(');
144 _regStr.Append(facet.Value);
146 _firstPattern = false;
147 }
148 else
149 {
150 _regStr.Append(")|(");
151 _regStr.Append(facet.Value);
152 }
154 }
155
166
168 {
171 if (facet.Value == "preserve")
172 {
174 }
175 else if (facet.Value == "replace")
176 {
178 }
179 else
180 {
181 if (!(facet.Value == "collapse"))
182 {
184 }
186 }
188 {
190 }
193 {
195 }
197 {
199 }
200 SetFlag(facet, RestrictionFlags.WhiteSpace);
201 }
202
215
228
241
254
271
291
292 internal void FinishFacetCompile()
293 {
294 if (_firstPattern)
295 {
296 return;
297 }
298 if (_derivedRestriction.Patterns == null)
299 {
301 }
302 try
303 {
304 _regStr.Append(')');
305 string text = _regStr.ToString();
306 if (text.Contains('|'))
307 {
308 _regStr.Insert(0, '(');
309 _regStr.Append(')');
310 }
312 }
313 catch (Exception ex)
314 {
316 }
317 }
318
319 private void CheckValue(object value, XmlSchemaFacet facet)
320 {
322 switch (facet.FacetType)
323 {
325 if ((_baseFlags & RestrictionFlags.MaxInclusive) != 0 && _datatype.Compare(value, restriction.MaxInclusive) > 0)
326 {
327 throw new XmlSchemaException(System.SR.Sch_MaxInclusiveMismatch, string.Empty);
328 }
329 if ((_baseFlags & RestrictionFlags.MaxExclusive) != 0 && _datatype.Compare(value, restriction.MaxExclusive) >= 0)
330 {
331 throw new XmlSchemaException(System.SR.Sch_MaxIncExlMismatch, string.Empty);
332 }
333 break;
334 case FacetType.MaxExclusive:
335 if ((_baseFlags & RestrictionFlags.MaxExclusive) != 0 && _datatype.Compare(value, restriction.MaxExclusive) > 0)
336 {
337 throw new XmlSchemaException(System.SR.Sch_MaxExclusiveMismatch, string.Empty);
338 }
339 if ((_baseFlags & RestrictionFlags.MaxInclusive) != 0 && _datatype.Compare(value, restriction.MaxInclusive) > 0)
340 {
341 throw new XmlSchemaException(System.SR.Sch_MaxExlIncMismatch, string.Empty);
342 }
343 break;
344 case FacetType.MinInclusive:
345 if ((_baseFlags & RestrictionFlags.MinInclusive) != 0 && _datatype.Compare(value, restriction.MinInclusive) < 0)
346 {
347 throw new XmlSchemaException(System.SR.Sch_MinInclusiveMismatch, string.Empty);
348 }
349 if ((_baseFlags & RestrictionFlags.MinExclusive) != 0 && _datatype.Compare(value, restriction.MinExclusive) < 0)
350 {
351 throw new XmlSchemaException(System.SR.Sch_MinIncExlMismatch, string.Empty);
352 }
353 if ((_baseFlags & RestrictionFlags.MaxExclusive) != 0 && _datatype.Compare(value, restriction.MaxExclusive) >= 0)
354 {
355 throw new XmlSchemaException(System.SR.Sch_MinIncMaxExlMismatch, string.Empty);
356 }
357 break;
358 case FacetType.MinExclusive:
359 if ((_baseFlags & RestrictionFlags.MinExclusive) != 0 && _datatype.Compare(value, restriction.MinExclusive) < 0)
360 {
361 throw new XmlSchemaException(System.SR.Sch_MinExclusiveMismatch, string.Empty);
362 }
363 if ((_baseFlags & RestrictionFlags.MinInclusive) != 0 && _datatype.Compare(value, restriction.MinInclusive) < 0)
364 {
365 throw new XmlSchemaException(System.SR.Sch_MinExlIncMismatch, string.Empty);
366 }
367 if ((_baseFlags & RestrictionFlags.MaxExclusive) != 0 && _datatype.Compare(value, restriction.MaxExclusive) >= 0)
368 {
369 throw new XmlSchemaException(System.SR.Sch_MinExlMaxExlMismatch, string.Empty);
370 }
371 break;
372 }
373 }
374
376 {
377 if ((_derivedRestriction.Flags & RestrictionFlags.MaxInclusive) != 0 && (_derivedRestriction.Flags & RestrictionFlags.MaxExclusive) != 0)
378 {
379 throw new XmlSchemaException(System.SR.Sch_MaxInclusiveExclusive, string.Empty);
380 }
381 if ((_derivedRestriction.Flags & RestrictionFlags.MinInclusive) != 0 && (_derivedRestriction.Flags & RestrictionFlags.MinExclusive) != 0)
382 {
383 throw new XmlSchemaException(System.SR.Sch_MinInclusiveExclusive, string.Empty);
384 }
385 if ((_derivedRestriction.Flags & RestrictionFlags.Length) != 0 && (_derivedRestriction.Flags & (RestrictionFlags.MinLength | RestrictionFlags.MaxLength)) != 0)
386 {
387 throw new XmlSchemaException(System.SR.Sch_LengthAndMinMax, string.Empty);
388 }
391 {
392 throw new XmlSchemaException(System.SR.Sch_MinLengthGtMaxLength, string.Empty);
393 }
395 {
397 }
399 {
401 }
403 {
405 }
407 {
409 }
411 {
413 }
414 }
415
417 {
419 if ((_derivedRestriction.Flags & RestrictionFlags.Length) == 0 && (_baseFlags & RestrictionFlags.Length) != 0)
420 {
423 }
424 if ((_derivedRestriction.Flags & RestrictionFlags.MinLength) == 0 && (_baseFlags & RestrictionFlags.MinLength) != 0)
425 {
427 SetFlag(RestrictionFlags.MinLength);
428 }
429 if ((_derivedRestriction.Flags & RestrictionFlags.MaxLength) == 0 && (_baseFlags & RestrictionFlags.MaxLength) != 0)
430 {
432 SetFlag(RestrictionFlags.MaxLength);
433 }
434 if ((_baseFlags & RestrictionFlags.Pattern) != 0)
435 {
436 if (_derivedRestriction.Patterns == null)
437 {
439 }
440 else
441 {
443 }
444 SetFlag(RestrictionFlags.Pattern);
445 }
446 if ((_baseFlags & RestrictionFlags.Enumeration) != 0)
447 {
449 {
451 }
452 SetFlag(RestrictionFlags.Enumeration);
453 }
454 if ((_derivedRestriction.Flags & RestrictionFlags.WhiteSpace) == 0 && (_baseFlags & RestrictionFlags.WhiteSpace) != 0)
455 {
457 SetFlag(RestrictionFlags.WhiteSpace);
458 }
459 if ((_derivedRestriction.Flags & RestrictionFlags.MaxInclusive) == 0 && (_baseFlags & RestrictionFlags.MaxInclusive) != 0)
460 {
462 SetFlag(RestrictionFlags.MaxInclusive);
463 }
464 if ((_derivedRestriction.Flags & RestrictionFlags.MaxExclusive) == 0 && (_baseFlags & RestrictionFlags.MaxExclusive) != 0)
465 {
467 SetFlag(RestrictionFlags.MaxExclusive);
468 }
469 if ((_derivedRestriction.Flags & RestrictionFlags.MinInclusive) == 0 && (_baseFlags & RestrictionFlags.MinInclusive) != 0)
470 {
472 SetFlag(RestrictionFlags.MinInclusive);
473 }
474 if ((_derivedRestriction.Flags & RestrictionFlags.MinExclusive) == 0 && (_baseFlags & RestrictionFlags.MinExclusive) != 0)
475 {
477 SetFlag(RestrictionFlags.MinExclusive);
478 }
479 if ((_derivedRestriction.Flags & RestrictionFlags.TotalDigits) == 0 && (_baseFlags & RestrictionFlags.TotalDigits) != 0)
480 {
482 SetFlag(RestrictionFlags.TotalDigits);
483 }
484 if ((_derivedRestriction.Flags & RestrictionFlags.FractionDigits) == 0 && (_baseFlags & RestrictionFlags.FractionDigits) != 0)
485 {
487 SetFlag(RestrictionFlags.FractionDigits);
488 }
489 }
490
492 {
493 object typedValue;
494 Exception ex = datatype.TryParseValue(facet.Value, nameTable, nsmgr, out typedValue);
495 if (ex == null)
496 {
497 return typedValue;
498 }
499 throw new XmlSchemaException(code, new string[1] { ex.Message }, ex, facet.SourceUri, facet.LineNumber, facet.LinePosition, facet);
500 }
501
502 private static string Preprocess(string pattern)
503 {
505 stringBuilder.Append('^');
506 char[] array = pattern.ToCharArray();
507 int length = pattern.Length;
508 int num = 0;
509 for (int i = 0; i < length - 2; i++)
510 {
511 if (array[i] != '\\')
512 {
513 continue;
514 }
515 if (array[i + 1] == '\\')
516 {
517 i++;
518 continue;
519 }
520 char c = array[i + 1];
521 for (int j = 0; j < s_map.Length; j++)
522 {
523 if (s_map[j].match == c)
524 {
525 if (num < i)
526 {
527 stringBuilder.Append(array, num, i - num);
528 }
530 i++;
531 num = i + 1;
532 break;
533 }
534 }
535 }
536 if (num < length)
537 {
538 stringBuilder.Append(array, num, length - num);
539 }
540 stringBuilder.Append('$');
541 return stringBuilder.ToString();
542 }
543
545 {
546 if ((_validRestrictionFlags & flag) == 0)
547 {
549 }
550 }
551
553 {
554 if ((_derivedRestriction.Flags & flag) != 0)
555 {
557 }
558 }
559
561 {
563 if (facet.IsFixed)
564 {
566 }
567 }
568
569 private void SetFlag(RestrictionFlags flag)
570 {
572 if ((_baseFixedFlags & flag) != 0)
573 {
575 }
576 }
577 }
578
580 {
583 }
584
585 internal virtual Exception CheckValueFacets(object value, XmlSchemaDatatype datatype)
586 {
587 return null;
588 }
589
590 internal virtual Exception CheckValueFacets(decimal value, XmlSchemaDatatype datatype)
591 {
592 return null;
593 }
594
595 internal virtual Exception CheckValueFacets(long value, XmlSchemaDatatype datatype)
596 {
597 return null;
598 }
599
600 internal virtual Exception CheckValueFacets(int value, XmlSchemaDatatype datatype)
601 {
602 return null;
603 }
604
605 internal virtual Exception CheckValueFacets(short value, XmlSchemaDatatype datatype)
606 {
607 return null;
608 }
609
611 {
612 return null;
613 }
614
615 internal virtual Exception CheckValueFacets(double value, XmlSchemaDatatype datatype)
616 {
617 return null;
618 }
619
620 internal virtual Exception CheckValueFacets(float value, XmlSchemaDatatype datatype)
621 {
622 return null;
623 }
624
625 internal virtual Exception CheckValueFacets(string value, XmlSchemaDatatype datatype)
626 {
627 return null;
628 }
629
630 internal virtual Exception CheckValueFacets(byte[] value, XmlSchemaDatatype datatype)
631 {
632 return null;
633 }
634
636 {
637 return null;
638 }
639
641 {
642 return null;
643 }
644
645 internal void CheckWhitespaceFacets(ref string s, XmlSchemaDatatype datatype)
646 {
648 switch (datatype.Variety)
649 {
650 case XmlSchemaDatatypeVariety.List:
651 s = s.Trim();
652 break;
653 case XmlSchemaDatatypeVariety.Atomic:
654 if (datatype.BuiltInWhitespaceFacet == XmlSchemaWhiteSpace.Collapse)
655 {
657 }
658 else if (datatype.BuiltInWhitespaceFacet == XmlSchemaWhiteSpace.Replace)
659 {
661 }
662 else if (restriction != null && (restriction.Flags & RestrictionFlags.WhiteSpace) != 0)
663 {
664 if (restriction.WhiteSpace == XmlSchemaWhiteSpace.Replace)
665 {
667 }
668 else if (restriction.WhiteSpace == XmlSchemaWhiteSpace.Collapse)
669 {
671 }
672 }
673 break;
674 }
675 }
676
678 {
679 if (restriction != null && (restriction.Flags & RestrictionFlags.Pattern) != 0)
680 {
681 for (int i = 0; i < restriction.Patterns.Count; i++)
682 {
683 Regex regex = (Regex)restriction.Patterns[i];
684 if (!regex.IsMatch(value))
685 {
687 }
688 }
689 }
690 return null;
691 }
692
693 internal virtual bool MatchEnumeration(object value, ArrayList enumeration, XmlSchemaDatatype datatype)
694 {
695 return false;
696 }
697
699 {
702 for (int i = 0; i < facets.Count; i++)
703 {
705 if (xmlSchemaFacet.Value == null)
706 {
708 }
710 switch (xmlSchemaFacet.FacetType)
711 {
712 case FacetType.Length:
713 facetsCompiler.CompileLengthFacet(xmlSchemaFacet);
714 break;
715 case FacetType.MinLength:
716 facetsCompiler.CompileMinLengthFacet(xmlSchemaFacet);
717 break;
718 case FacetType.MaxLength:
719 facetsCompiler.CompileMaxLengthFacet(xmlSchemaFacet);
720 break;
721 case FacetType.Pattern:
723 break;
724 case FacetType.Enumeration:
725 facetsCompiler.CompileEnumerationFacet(xmlSchemaFacet, nsmgr, nameTable);
726 break;
727 case FacetType.Whitespace:
728 facetsCompiler.CompileWhitespaceFacet(xmlSchemaFacet);
729 break;
730 case FacetType.MinInclusive:
731 facetsCompiler.CompileMinInclusiveFacet(xmlSchemaFacet);
732 break;
733 case FacetType.MinExclusive:
734 facetsCompiler.CompileMinExclusiveFacet(xmlSchemaFacet);
735 break;
736 case FacetType.MaxInclusive:
737 facetsCompiler.CompileMaxInclusiveFacet(xmlSchemaFacet);
738 break;
739 case FacetType.MaxExclusive:
740 facetsCompiler.CompileMaxExclusiveFacet(xmlSchemaFacet);
741 break;
742 case FacetType.TotalDigits:
743 facetsCompiler.CompileTotalDigitsFacet(xmlSchemaFacet);
744 break;
745 case FacetType.FractionDigits:
746 facetsCompiler.CompileFractionDigitsFacet(xmlSchemaFacet);
747 break;
748 default:
750 }
751 }
752 facetsCompiler.FinishFacetCompile();
753 facetsCompiler.CompileFacetCombinations();
754 return restrictionFacets;
755 }
756
757 internal static decimal Power(int x, int y)
758 {
759 decimal result = 1m;
760 decimal num = x;
761 if (y > 28)
762 {
763 return decimal.MaxValue;
764 }
765 for (int i = 0; i < y; i++)
766 {
767 result *= num;
768 }
769 return result;
770 }
771}
virtual void AddRange(ICollection c)
virtual int Add(object? value)
static string Sch_MinInclusiveExclusive
Definition SR.cs:758
static string Sch_MaxExclusiveFacetProhibited
Definition SR.cs:644
static string Sch_FractionDigitsFacetProhibited
Definition SR.cs:652
static string Sch_TotalDigitsFacetInvalid
Definition SR.cs:668
static string Sch_MaxExclusiveFacetInvalid
Definition SR.cs:662
static string Sch_FractionDigitsNotOnDecimal
Definition SR.cs:782
static string Sch_MinExlMaxExlMismatch
Definition SR.cs:1100
static string Sch_MinExclusiveGtMaxInclusive
Definition SR.cs:766
static string Sch_MaxLengthFacetInvalid
Definition SR.cs:658
static string Sch_MaxMinLengthBaseLength
Definition SR.cs:1088
static string Sch_MinExclusiveMismatch
Definition SR.cs:1096
static string Sch_MaxIncExlMismatch
Definition SR.cs:1106
static string Sch_DupMaxLengthFacet
Definition SR.cs:614
static string Sch_InvalidFacet
Definition SR.cs:868
static string Sch_LengthFacetProhibited
Definition SR.cs:630
static string Sch_MaxInclusiveFacetInvalid
Definition SR.cs:660
static string Sch_MinExclusiveGtMaxExclusive
Definition SR.cs:762
static string Sch_WhiteSpaceRestriction2
Definition SR.cs:1118
static string Sch_DupMaxExclusiveFacet
Definition SR.cs:620
static string Sch_MaxInclusiveExclusive
Definition SR.cs:756
static string Sch_PatternConstraintFailed
Definition SR.cs:692
static string Sch_UnknownFacet
Definition SR.cs:678
static string Sch_MinLengthFacetInvalid
Definition SR.cs:656
static string Sch_MaxLengthGtBaseMaxLength
Definition SR.cs:1086
static string Sch_MaxExlIncMismatch
Definition SR.cs:1108
static string Sch_MaxInclusiveFacetProhibited
Definition SR.cs:642
static string Sch_TotalDigitsMismatch
Definition SR.cs:1110
static string Sch_MinInclusiveFacetInvalid
Definition SR.cs:664
static string Sch_MaxLengthFacetProhibited
Definition SR.cs:634
static string Sch_WhiteSpaceRestriction1
Definition SR.cs:1116
static string Sch_MinInclusiveMismatch
Definition SR.cs:1094
static string Sch_WhiteSpaceFacetProhibited
Definition SR.cs:640
static string Sch_EnumerationFacetProhibited
Definition SR.cs:638
static string Sch_DupMaxInclusiveFacet
Definition SR.cs:618
static string Sch_FacetBaseFixed
Definition SR.cs:1114
static string Sch_DupMinInclusiveFacet
Definition SR.cs:622
static string Sch_MaxExclusiveMismatch
Definition SR.cs:1092
static string Sch_DupMinExclusiveFacet
Definition SR.cs:624
static string Sch_MinIncExlMismatch
Definition SR.cs:1104
static string Sch_DupFractionDigitsFacet
Definition SR.cs:628
static string Sch_EnumerationFacetInvalid
Definition SR.cs:674
static string Sch_MinInclusiveFacetProhibited
Definition SR.cs:646
static string Sch_DupMinLengthFacet
Definition SR.cs:612
static string Sch_MaxInclusiveMismatch
Definition SR.cs:1090
static string Sch_MinExclusiveFacetInvalid
Definition SR.cs:666
static string Sch_MinInclusiveGtMaxInclusive
Definition SR.cs:760
static string Sch_MinIncMaxExlMismatch
Definition SR.cs:1102
static string Sch_DupLengthFacet
Definition SR.cs:610
static string Sch_PatternFacetProhibited
Definition SR.cs:636
static string Sch_TotalDigitsFacetProhibited
Definition SR.cs:650
static string Sch_FractionDigitsFacetInvalid
Definition SR.cs:670
static string Sch_MinExclusiveFacetProhibited
Definition SR.cs:648
static string Sch_LengthGtBaseLength
Definition SR.cs:1082
static string Sch_FractionDigitsGtTotalDigits
Definition SR.cs:684
static string Sch_MinExlIncMismatch
Definition SR.cs:1098
static string Sch_LengthFacetInvalid
Definition SR.cs:654
static string Sch_InvalidWhiteSpace
Definition SR.cs:676
static string Sch_MinLengthFacetProhibited
Definition SR.cs:632
static string Sch_PatternFacetInvalid
Definition SR.cs:672
static string Sch_DupWhiteSpaceFacet
Definition SR.cs:616
static string Sch_DupTotalDigitsFacet
Definition SR.cs:626
static string Sch_MinInclusiveGtMaxExclusive
Definition SR.cs:764
static string Sch_FractionDigitsMismatch
Definition SR.cs:1112
static string Sch_MinLengthGtMaxLength
Definition SR.cs:682
static string Sch_LengthAndMinMax
Definition SR.cs:680
static string Sch_MinLengthGtBaseMinLength
Definition SR.cs:1084
Definition SR.cs:7
unsafe StringBuilder Insert(int index, string? value, int count)
override string ToString()
StringBuilder Append(char value, int repeatCount)
int Compare(byte[] value1, byte[] value2)
override bool IsEqual(object o1, object o2)
static XmlSchemaSimpleType GetSimpleTypeFromTypeCode(XmlTypeCode typeCode)
Exception CheckPatternFacets(RestrictionFacets restriction, string value)
virtual RestrictionFacets ConstructRestriction(DatatypeImplementation datatype, XmlSchemaObjectCollection facets, XmlNameTable nameTable)
virtual bool MatchEnumeration(object value, ArrayList enumeration, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(byte[] value, XmlSchemaDatatype datatype)
void CheckWhitespaceFacets(ref string s, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(decimal value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(long value, XmlSchemaDatatype datatype)
virtual Exception CheckLexicalFacets(ref string parseString, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(int value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(short value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(string value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(TimeSpan value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(XmlQualifiedName value, XmlSchemaDatatype datatype)
static decimal Power(int x, int y)
virtual Exception CheckValueFacets(float value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(object value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(double value, XmlSchemaDatatype datatype)
virtual Exception CheckValueFacets(DateTime value, XmlSchemaDatatype datatype)
static int DecimalToInt32(decimal value)
Exception TryParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
virtual XmlSchemaDatatypeVariety Variety
static string NonCDataNormalize(string value)
static string CDataNormalize(string value)
void CompileMaxExclusiveFacet(XmlSchemaFacet facet)
void CompileWhitespaceFacet(XmlSchemaFacet facet)
void CompileMaxLengthFacet(XmlSchemaFacet facet)
void CompileMaxInclusiveFacet(XmlSchemaFacet facet)
void CompileFractionDigitsFacet(XmlSchemaFacet facet)
void CompilePatternFacet(XmlSchemaPatternFacet facet)
void SetFlag(XmlSchemaFacet facet, RestrictionFlags flag)
void CompileEnumerationFacet(XmlSchemaFacet facet, IXmlNamespaceResolver nsmgr, XmlNameTable nameTable)
void CheckDupFlag(XmlSchemaFacet facet, RestrictionFlags flag, string errorCode)
void CompileMinInclusiveFacet(XmlSchemaFacet facet)
FacetsCompiler(DatatypeImplementation baseDatatype, RestrictionFacets restriction)
void CheckValue(object value, XmlSchemaFacet facet)
object ParseFacetValue(XmlSchemaDatatype datatype, XmlSchemaFacet facet, string code, IXmlNamespaceResolver nsmgr, XmlNameTable nameTable)
void CompileMinLengthFacet(XmlSchemaFacet facet)
readonly RestrictionFlags _validRestrictionFlags
void CompileMinExclusiveFacet(XmlSchemaFacet facet)
void CheckProhibitedFlag(XmlSchemaFacet facet, RestrictionFlags flag, string errorCode)
readonly RestrictionFacets _derivedRestriction
readonly DatatypeImplementation _datatype
void CompileTotalDigitsFacet(XmlSchemaFacet facet)
void CompileLengthFacet(XmlSchemaFacet facet)