You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2001/05/15 23:59:55 UTC

cvs commit: xml-xerces/c/src/validators/schema GeneralAttributeCheck.cpp GeneralAttributeCheck.hpp Makefile.in SchemaSymbols.cpp SchemaSymbols.hpp TraverseSchema.cpp TraverseSchema.hpp

knoaman     01/05/15 14:59:54

  Modified:    c/Projects/OS2/VACPP40 xerces_validators.icc
               c/Projects/Win32/VC6/xerces-all/XercesLib XercesLib.dsp
               c/src/NLS/EN_US XMLErrList_EN_US.Xml
               c/src/framework XMLErrorCodes.hpp
               c/src/util/MsgLoaders/InMemory CppErrMsgs_EN_US.hpp
               c/src/util/MsgLoaders/MsgCatalog XMLMsgCat_EN_US.Msg
               c/src/util/Platforms/Win32 Version.rc
               c/src/validators/datatype DatatypeValidatorFactory.cpp
                        DatatypeValidatorFactory.hpp
               c/src/validators/schema Makefile.in SchemaSymbols.cpp
                        SchemaSymbols.hpp TraverseSchema.cpp
                        TraverseSchema.hpp
  Added:       c/src/validators/schema GeneralAttributeCheck.cpp
                        GeneralAttributeCheck.hpp
  Log:
  TraverseSchema: add attribute checking + some fixes + more error messages.
  More attribute cheking to come.
  
  Revision  Changes    Path
  1.9       +1 -0      xml-xerces/c/Projects/OS2/VACPP40/xerces_validators.icc
  
  Index: xerces_validators.icc
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/Projects/OS2/VACPP40/xerces_validators.icc,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- xerces_validators.icc	2001/05/10 17:17:37	1.8
  +++ xerces_validators.icc	2001/05/15 21:58:26	1.9
  @@ -30,4 +30,5 @@
       BASE_DIR "\\src\\validators\\schema\\SubstitutionGroupComparator.cpp",
       BASE_DIR "\\src\\validators\\schema\\NamespaceScope.cpp",
       BASE_DIR "\\src\\validators\\schema\\ComplexTypeInfo.cpp",
  +    BASE_DIR "\\src\\validators\\schema\\GeneralAttributeCheck.cpp",
       BASE_DIR "\\src\\validators\\schema\\TraverseSchema.cpp"
  
  
  
  1.59      +15 -7     xml-xerces/c/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
  
  Index: XercesLib.dsp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- XercesLib.dsp	2001/05/10 17:17:11	1.58
  +++ XercesLib.dsp	2001/05/15 21:58:33	1.59
  @@ -7,19 +7,19 @@
   CFG=XercesLib - Win32 Debug
   !MESSAGE This is not a valid makefile. To build this project using NMAKE,
   !MESSAGE use the Export Makefile command and run
  -!MESSAGE
  +!MESSAGE 
   !MESSAGE NMAKE /f "XercesLib.mak".
  -!MESSAGE
  +!MESSAGE 
   !MESSAGE You can specify a configuration when running NMAKE
   !MESSAGE by defining the macro CFG on the command line. For example:
  -!MESSAGE
  +!MESSAGE 
   !MESSAGE NMAKE /f "XercesLib.mak" CFG="XercesLib - Win32 Debug"
  -!MESSAGE
  +!MESSAGE 
   !MESSAGE Possible choices for configuration are:
  -!MESSAGE
  +!MESSAGE 
   !MESSAGE "XercesLib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
   !MESSAGE "XercesLib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
  -!MESSAGE
  +!MESSAGE 
   
   # Begin Project
   # PROP AllowPerConfigDependencies 0
  @@ -84,7 +84,7 @@
   # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo /base:"0x12000000" /version:1.4 /subsystem:windows /dll /debug /machine:I386 /out:"..\..\..\..\..\Build\Win32\VC6\Debug/xerces-c_1_4D.dll" /implib:"..\..\..\..\..\Build\Win32\VC6\Debug/xerces-c_1D.lib" /pdbtype:sept
   # SUBTRACT LINK32 /pdb:none
   
  -!ENDIF
  +!ENDIF 
   
   # Begin Target
   
  @@ -1780,6 +1780,14 @@
   # Begin Source File
   
   SOURCE=..\..\..\..\..\src\validators\schema\ComplexTypeInfo.hpp
  +# End Source File
  +# Begin Source File
  +
  +SOURCE=..\..\..\..\..\src\validators\schema\GeneralAttributeCheck.cpp
  +# End Source File
  +# Begin Source File
  +
  +SOURCE=..\..\..\..\..\src\validators\schema\GeneralAttributeCheck.hpp
   # End Source File
   # Begin Source File
   
  
  
  
  1.21      +2 -0      xml-xerces/c/src/NLS/EN_US/XMLErrList_EN_US.Xml
  
  Index: XMLErrList_EN_US.Xml
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/NLS/EN_US/XMLErrList_EN_US.Xml,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- XMLErrList_EN_US.Xml	2001/05/10 16:32:43	1.20
  +++ XMLErrList_EN_US.Xml	2001/05/15 21:58:40	1.21
  @@ -102,6 +102,8 @@
               <Message Id="IncludeNamespaceDifference" Text="Included schema '{0}' has a different targetNameSpace '{1}'"/>
               <Message Id="OnlyAnnotationExpected" Text="At most one &lt;annotation&gt; element is expected in the content."/>
               <Message Id="InvalidAttributeContent" Text="The 'atribute' content must be (annotation?, simpleType?); '{0}' encountered"/>
  +            <Message Id="AttributeRequired" Text="Attribute '{0}' must appear in '{1}'"/>
  +            <Message Id="AttributeDisallowed" Text="Attribute '{0}' cannot appear in '{1}'"/>
               <Message Id="DisplayErrorMessage" Text="{0}"/>
           </Error>
           <FatalError>
  
  
  
  1.9       +130 -128  xml-xerces/c/src/framework/XMLErrorCodes.hpp
  
  Index: XMLErrorCodes.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/framework/XMLErrorCodes.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XMLErrorCodes.hpp	2001/05/10 16:32:48	1.8
  +++ XMLErrorCodes.hpp	2001/05/15 21:58:48	1.9
  @@ -106,134 +106,136 @@
         , IncludeNamespaceDifference         = 93
         , OnlyAnnotationExpected             = 94
         , InvalidAttributeContent            = 95
  -      , DisplayErrorMessage                = 96
  -      , E_HighBounds                       = 97
  -      , F_LowBounds                        = 98
  -      , ExpectedCommentOrCDATA             = 99
  -      , ExpectedAttrName                   = 100
  -      , ExpectedNotationName               = 101
  -      , NoRepInMixed                       = 102
  -      , BadDefAttrDecl                     = 103
  -      , ExpectedDefAttrDecl                = 104
  -      , AttListSyntaxError                 = 105
  -      , ExpectedEqSign                     = 106
  -      , DupAttrName                        = 107
  -      , BadIdForXMLLangAttr                = 108
  -      , ExpectedElementName                = 109
  -      , MustStartWithXMLDecl               = 110
  -      , CommentsMustStartWith              = 111
  -      , InvalidDocumentStructure           = 112
  -      , ExpectedDeclString                 = 113
  -      , BadXMLVersion                      = 114
  -      , UnsupportedXMLVersion              = 115
  -      , UnterminatedXMLDecl                = 116
  -      , BadXMLEncoding                     = 117
  -      , BadStandalone                      = 118
  -      , UnterminatedComment                = 119
  -      , PINameExpected                     = 120
  -      , UnterminatedPI                     = 121
  -      , InvalidCharacter                   = 122
  -      , UnexpectedTextBeforeRoot           = 123
  -      , UnterminatedStartTag               = 124
  -      , ExpectedAttrValue                  = 125
  -      , UnterminatedEndTag                 = 126
  -      , ExpectedAttributeType              = 127
  -      , ExpectedEndOfTagX                  = 128
  -      , ExpectedMarkup                     = 129
  -      , NotValidAfterContent               = 130
  -      , ExpectedComment                    = 131
  -      , ExpectedCommentOrPI                = 132
  -      , ExpectedWhitespace                 = 133
  -      , NoRootElemInDOCTYPE                = 134
  -      , ExpectedQuotedString               = 135
  -      , ExpectedPublicId                   = 136
  -      , InvalidPublicIdChar                = 137
  -      , UnterminatedDOCTYPE                = 138
  -      , InvalidCharacterInIntSubset        = 139
  -      , ExpectedCDATA                      = 140
  -      , InvalidInitialNameChar             = 141
  -      , InvalidNameChar                    = 142
  -      , UnexpectedWhitespace               = 143
  -      , InvalidCharacterInAttrValue        = 144
  -      , ExpectedMarkupDecl                 = 145
  -      , TextDeclNotLegalHere               = 146
  -      , ConditionalSectInIntSubset         = 147
  -      , ExpectedPEName                     = 148
  -      , UnterminatedEntityDecl             = 149
  -      , InvalidCharacterRef                = 150
  -      , UnterminatedCharRef                = 151
  -      , ExpectedEntityRefName              = 152
  -      , EntityNotFound                     = 153
  -      , NoUnparsedEntityRefs               = 154
  -      , UnterminatedEntityRef              = 155
  -      , RecursiveEntity                    = 156
  -      , PartialMarkupInEntity              = 157
  -      , UnterminatedElementDecl            = 158
  -      , ExpectedContentSpecExpr            = 159
  -      , ExpectedAsterisk                   = 160
  -      , UnterminatedContentModel           = 161
  -      , ExpectedSystemId                   = 162
  -      , ExpectedSystemOrPublicId           = 163
  -      , UnterminatedNotationDecl           = 164
  -      , ExpectedSeqChoiceLeaf              = 165
  -      , ExpectedChoiceOrCloseParen         = 166
  -      , ExpectedSeqOrCloseParen            = 167
  -      , ExpectedEnumValue                  = 168
  -      , ExpectedEnumSepOrParen             = 169
  -      , UnterminatedEntityLiteral          = 170
  -      , MoreEndThanStartTags               = 171
  -      , IllegalRefInStandalone             = 172
  -      , ExpectedOpenParen                  = 173
  -      , AttrAlreadyUsedInSTag              = 174
  -      , BracketInAttrValue                 = 175
  -      , Expected2ndSurrogateChar           = 176
  -      , ExpectedEndOfConditional           = 177
  -      , ExpectedIncOrIgn                   = 178
  -      , ExpectedINCLUDEBracket             = 179
  -      , ExpectedTextDecl                   = 180
  -      , ExpectedXMLDecl                    = 181
  -      , UnexpectedEOE                      = 182
  -      , PEPropogated                       = 183
  -      , ExtraCloseSquare                   = 184
  -      , PERefInMarkupInIntSubset           = 185
  -      , EntityPropogated                   = 186
  -      , ExpectedNumericalCharRef           = 187
  -      , ExpectedOpenSquareBracket          = 188
  -      , BadSequenceInCharData              = 189
  -      , IllegalSequenceInComment           = 190
  -      , UnterminatedCDATASection           = 191
  -      , ExpectedNDATA                      = 192
  -      , NDATANotValidForPE                 = 193
  -      , HexRadixMustBeLowerCase            = 194
  -      , DeclStringRep                      = 195
  -      , DeclStringsInWrongOrder            = 196
  -      , NoExtRefsInAttValue                = 197
  -      , XMLDeclMustBeLowerCase             = 198
  -      , ExpectedEntityValue                = 199
  -      , BadDigitForRadix                   = 200
  -      , EndedWithTagsOnStack               = 201
  -      , AmbiguousContentModel              = 202
  -      , NestedCDATA                        = 203
  -      , UnknownPrefix                      = 204
  -      , PartialTagMarkupError              = 205
  -      , EmptyMainEntity                    = 206
  -      , CDATAOutsideOfContent              = 207
  -      , OnlyCharRefsAllowedHere            = 208
  -      , Unexpected2ndSurrogateChar         = 209
  -      , NoPIStartsWithXML                  = 210
  -      , XMLDeclMustBeFirst                 = 211
  -      , XMLVersionRequired                 = 212
  -      , StandaloneNotLegal                 = 213
  -      , TooManyColonsInName                = 214
  -      , InvalidColonPos                    = 215
  -      , ColonNotLegalWithNS                = 216
  -      , SysException                       = 217
  -      , XMLException                       = 218
  -      , UnexpectedEOF                      = 219
  -      , UnexpectedError                    = 220
  -      , BadSchemaLocation                  = 221
  -      , NoGrammarResolver                  = 222
  -      , F_HighBounds                       = 223
  +      , AttributeRequired                  = 96
  +      , AttributeDisallowed                = 97
  +      , DisplayErrorMessage                = 98
  +      , E_HighBounds                       = 99
  +      , F_LowBounds                        = 100
  +      , ExpectedCommentOrCDATA             = 101
  +      , ExpectedAttrName                   = 102
  +      , ExpectedNotationName               = 103
  +      , NoRepInMixed                       = 104
  +      , BadDefAttrDecl                     = 105
  +      , ExpectedDefAttrDecl                = 106
  +      , AttListSyntaxError                 = 107
  +      , ExpectedEqSign                     = 108
  +      , DupAttrName                        = 109
  +      , BadIdForXMLLangAttr                = 110
  +      , ExpectedElementName                = 111
  +      , MustStartWithXMLDecl               = 112
  +      , CommentsMustStartWith              = 113
  +      , InvalidDocumentStructure           = 114
  +      , ExpectedDeclString                 = 115
  +      , BadXMLVersion                      = 116
  +      , UnsupportedXMLVersion              = 117
  +      , UnterminatedXMLDecl                = 118
  +      , BadXMLEncoding                     = 119
  +      , BadStandalone                      = 120
  +      , UnterminatedComment                = 121
  +      , PINameExpected                     = 122
  +      , UnterminatedPI                     = 123
  +      , InvalidCharacter                   = 124
  +      , UnexpectedTextBeforeRoot           = 125
  +      , UnterminatedStartTag               = 126
  +      , ExpectedAttrValue                  = 127
  +      , UnterminatedEndTag                 = 128
  +      , ExpectedAttributeType              = 129
  +      , ExpectedEndOfTagX                  = 130
  +      , ExpectedMarkup                     = 131
  +      , NotValidAfterContent               = 132
  +      , ExpectedComment                    = 133
  +      , ExpectedCommentOrPI                = 134
  +      , ExpectedWhitespace                 = 135
  +      , NoRootElemInDOCTYPE                = 136
  +      , ExpectedQuotedString               = 137
  +      , ExpectedPublicId                   = 138
  +      , InvalidPublicIdChar                = 139
  +      , UnterminatedDOCTYPE                = 140
  +      , InvalidCharacterInIntSubset        = 141
  +      , ExpectedCDATA                      = 142
  +      , InvalidInitialNameChar             = 143
  +      , InvalidNameChar                    = 144
  +      , UnexpectedWhitespace               = 145
  +      , InvalidCharacterInAttrValue        = 146
  +      , ExpectedMarkupDecl                 = 147
  +      , TextDeclNotLegalHere               = 148
  +      , ConditionalSectInIntSubset         = 149
  +      , ExpectedPEName                     = 150
  +      , UnterminatedEntityDecl             = 151
  +      , InvalidCharacterRef                = 152
  +      , UnterminatedCharRef                = 153
  +      , ExpectedEntityRefName              = 154
  +      , EntityNotFound                     = 155
  +      , NoUnparsedEntityRefs               = 156
  +      , UnterminatedEntityRef              = 157
  +      , RecursiveEntity                    = 158
  +      , PartialMarkupInEntity              = 159
  +      , UnterminatedElementDecl            = 160
  +      , ExpectedContentSpecExpr            = 161
  +      , ExpectedAsterisk                   = 162
  +      , UnterminatedContentModel           = 163
  +      , ExpectedSystemId                   = 164
  +      , ExpectedSystemOrPublicId           = 165
  +      , UnterminatedNotationDecl           = 166
  +      , ExpectedSeqChoiceLeaf              = 167
  +      , ExpectedChoiceOrCloseParen         = 168
  +      , ExpectedSeqOrCloseParen            = 169
  +      , ExpectedEnumValue                  = 170
  +      , ExpectedEnumSepOrParen             = 171
  +      , UnterminatedEntityLiteral          = 172
  +      , MoreEndThanStartTags               = 173
  +      , IllegalRefInStandalone             = 174
  +      , ExpectedOpenParen                  = 175
  +      , AttrAlreadyUsedInSTag              = 176
  +      , BracketInAttrValue                 = 177
  +      , Expected2ndSurrogateChar           = 178
  +      , ExpectedEndOfConditional           = 179
  +      , ExpectedIncOrIgn                   = 180
  +      , ExpectedINCLUDEBracket             = 181
  +      , ExpectedTextDecl                   = 182
  +      , ExpectedXMLDecl                    = 183
  +      , UnexpectedEOE                      = 184
  +      , PEPropogated                       = 185
  +      , ExtraCloseSquare                   = 186
  +      , PERefInMarkupInIntSubset           = 187
  +      , EntityPropogated                   = 188
  +      , ExpectedNumericalCharRef           = 189
  +      , ExpectedOpenSquareBracket          = 190
  +      , BadSequenceInCharData              = 191
  +      , IllegalSequenceInComment           = 192
  +      , UnterminatedCDATASection           = 193
  +      , ExpectedNDATA                      = 194
  +      , NDATANotValidForPE                 = 195
  +      , HexRadixMustBeLowerCase            = 196
  +      , DeclStringRep                      = 197
  +      , DeclStringsInWrongOrder            = 198
  +      , NoExtRefsInAttValue                = 199
  +      , XMLDeclMustBeLowerCase             = 200
  +      , ExpectedEntityValue                = 201
  +      , BadDigitForRadix                   = 202
  +      , EndedWithTagsOnStack               = 203
  +      , AmbiguousContentModel              = 204
  +      , NestedCDATA                        = 205
  +      , UnknownPrefix                      = 206
  +      , PartialTagMarkupError              = 207
  +      , EmptyMainEntity                    = 208
  +      , CDATAOutsideOfContent              = 209
  +      , OnlyCharRefsAllowedHere            = 210
  +      , Unexpected2ndSurrogateChar         = 211
  +      , NoPIStartsWithXML                  = 212
  +      , XMLDeclMustBeFirst                 = 213
  +      , XMLVersionRequired                 = 214
  +      , StandaloneNotLegal                 = 215
  +      , TooManyColonsInName                = 216
  +      , InvalidColonPos                    = 217
  +      , ColonNotLegalWithNS                = 218
  +      , SysException                       = 219
  +      , XMLException                       = 220
  +      , UnexpectedEOF                      = 221
  +      , UnexpectedError                    = 222
  +      , BadSchemaLocation                  = 223
  +      , NoGrammarResolver                  = 224
  +      , F_HighBounds                       = 225
       };
   
       static bool isFatal(const XMLErrs::Codes toCheck)
  
  
  
  1.20      +3 -1      xml-xerces/c/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
  
  Index: CppErrMsgs_EN_US.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- CppErrMsgs_EN_US.hpp	2001/05/10 16:32:55	1.19
  +++ CppErrMsgs_EN_US.hpp	2001/05/15 21:58:55	1.20
  @@ -100,6 +100,8 @@
     , { 0x0049,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 }
     , { 0x0041,0x0074,0x0020,0x006D,0x006F,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x003C,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x002E,0x00 }
     , { 0x0054,0x0068,0x0065,0x0020,0x0027,0x0061,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0027,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003F,0x0029,0x003B,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 }
  +  , { 0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 }
  +  , { 0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 }
     , { 0x007B,0x0030,0x007D,0x00 }
     , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 }
     , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 }
  @@ -230,7 +232,7 @@
     , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 }
   
   };
  -const unsigned int gXMLErrArraySize = 224;
  +const unsigned int gXMLErrArraySize = 226;
   
   const XMLCh gXMLValidityArray[][128] = 
   {
  
  
  
  1.23      +127 -125  xml-xerces/c/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
  
  Index: XMLMsgCat_EN_US.Msg
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- XMLMsgCat_EN_US.Msg	2001/05/10 16:32:59	1.22
  +++ XMLMsgCat_EN_US.Msg	2001/05/15 21:59:03	1.23
  @@ -92,131 +92,133 @@
    93  Included schema '{0}' has a different targetNameSpace '{1}'
    94  At most one <annotation> element is expected in the content.
    95  The 'atribute' content must be (annotation?, simpleType?); '{0}' encountered
  - 96  {0}
  - 99  Expected comment or CDATA
  -100  Expected an attribute name
  -101  Expected a notation name
  -102  Repetition of individual elements is not legal for mixed content models
  -103  Bad default attribute declaration
  -104  Expected default attribute declaration, assuming #IMPLIED 
  -105  Attribute list syntax error
  -106  Expected equal sign
  -107  Duplication attribute name
  -108  Bad ID, '{0}', for xml:lang attribute
  -109  Expected an element name
  -110  Must start with an XMLDecl
  -111  Comments must start with <!--
  -112  Invalid document structure
  -113  Expected a 'version=', 'encoding=', or 'standalone='
  -114  Bad XML version string
  -115  Unsupported XML version, '{0}'
  -116  Unterminated XML decl
  -117  Bad XML encoding declaration, '{0}'
  -118  Bad standalone declaration
  -119  Unterminated comment
  -120  Processing instruction name expected
  -121  Unterminated processing instruction
  -122  Invalid character (Unicode: 0x{0})
  -123  Unexpected text before root element
  -124  Unterminated start tag, '{0}'
  -125  Expected an attribute value
  -126  Unterminated end tag
  -127  Expected type (CDATA, ID, NMTOKEN, ..), for attribute '{0}' of element '{1}'
  -128  Expected end of tag '{0}'
  -129  Expected tag name, comment, PI, or other markup
  -130  Not valid after content
  -131  Expected comment
  -132  Expected comment or processing instruction
  -133  Expected whitespace
  -134  No root element in DOCTYPE
  -135  Expected quoted string
  -136  Expected public id
  -137  Invalid character in public id (Unicode: 0x{0})
  -138  Unterminated DOCTYPE declaration
  -139  Invalid character in internal subset (Unicode: 0x{0})
  -140  Expected CDATA section
  -141  Invalid initial name character
  -142  Invalid name character
  -143  Unexpected whitespace
  -144  Invalid character in attribute value (Unicode: 0x{0})
  -145  Expected a markup declaration
  -146  Text declaration not legal here
  -147  Conditional section in internal subset
  -148  Expected parameter entity name
  -149  Unterminated entity declaration, '{0}'
  -150  Invalid character reference
  -151  Unterminated character reference
  -152  Expected entity name for reference
  -153  Entity '{0}' was not found
  -154  Unparsed entitty references, '{0}', not valid here
  -155  Unterminated entity reference
  -156  Recursive entity expansion
  -157  Partial markup in entity value
  -158  Unterminated element declaration, '{0}'
  -159  Expected content specification expression for element '{0}'
  -160  Expected asterisk
  -161  Unterminated Content model
  -162  Expected system id
  -163  Expected system or public id
  -164  Unterminated notation declaration
  -165  Expected ',', '|', or ')' characters
  -166  Expected '|' or ')' characters
  -167  Expected ',' or ')' characters or close parenthesis in content model of element '{0}'
  -168  Expected enumeration value for attribute '{0}'
  -169  Expected | enumeration separator, or closing paren
  -170  Unterminated entity literal
  -171  There are more end tags than start tags
  -172  Reference to external declaration in standalone document. Entity={0}
  -173  Expected an open parenthesis
  -174  The attribute '{0}' is already used in element '{1}'
  -175  A '<' character cannot be used in attribute '{0}', except through &lt;
  -176  A leading surrogate character was not followed by a legal second character
  -177  Expected ']]>' to end a conditional section
  -178  Expected INCLUDE or IGNORE here
  -179  Expected [ to follow INCLUDE or IGNORE
  -180  Expected a TextDecl here: <?xml ....
  -181  Expected a XMLDecl here: <?xml ....
  -182  Unexpected end of entity {0}
  -183  A PE propogated out of the int/ext subset, discarding extra text
  -184  An extra ] character was found an ignored
  -185  PE refs are not allowed inside markup in the internal subset
  -186  An entity propogated out of the content section into Miscellaneous
  -187  Expected &# to be followed by a numeric character value
  -188  Expected an open bracket ('[') here
  -189  The sequence ']]>' is not allowed in character data
  -190  Illegal sequence '--' in comment
  -191  Unterminated CDATA section
  -192  Expected NDATA
  -193  NDATA is not legal for parameter entities
  -194  Hex radix character refs must use 'x', not 'X'
  -195  '{0}' has already been set. Ignoring redundant setting
  -196  The XMLDecl strings must be in the order: version, encoding, standalone
  -197  External entities cannot be referred to from attribute values
  -198  The XML or Text decl must start with '<?xml ', not '<?XML '
  -199  Expected a literal entity value or PUBLIC/SYSTEM id
  -200  '{0}' is not a valid digit for the indicated radix
  -201  The input ended before all started tags were ended. Last tag started was '{0}'
  -202  The content model for element '{0}' is ambiguous
  -203  Nested CDATA sections are not allowed
  -204  The prefix '{0}' has not been mapped to any URI
  -205  The start and the end tag were in the different entities
  -206  The main XML document cannot be empty
  -207  CDATA is not allowed outside the root element
  -208  Only numeric character entities or special character entities are legal here
  -209  Got an unexpected trailing surrogate character
  -210  No processing instruction starts with 'xml'
  -211  The XML or Text declaration must start at line/column 1/1
  -212  The 'version=' string is required in an XMLDecl
  -213  The 'standalone=' string is only allowed in the main XML entity
  -214  When namespaces are enabled, a name can have only one colon character
  -215  When namespaces are enabled, the colon cannot be the first or last character
  -216  Colons are not allowed in this name when namespaces are enabled
  -217  A system exception occured during processing
  -218  An exception occured! Type:{0}, Message:{1}
  -219  Unexpected end of file exception. Message: {0}
  -220  UnexpectedError
  -221  The schemaLocation attribute does not contain pairs of values.
  -222  Internal error: don't have a GrammarResolver for TraverseSchema
  + 96  Attribute '{0}' must appear in '{1}'
  + 97  Attribute '{0}' cannot appear in '{1}'
  + 98  {0}
  +101  Expected comment or CDATA
  +102  Expected an attribute name
  +103  Expected a notation name
  +104  Repetition of individual elements is not legal for mixed content models
  +105  Bad default attribute declaration
  +106  Expected default attribute declaration, assuming #IMPLIED 
  +107  Attribute list syntax error
  +108  Expected equal sign
  +109  Duplication attribute name
  +110  Bad ID, '{0}', for xml:lang attribute
  +111  Expected an element name
  +112  Must start with an XMLDecl
  +113  Comments must start with <!--
  +114  Invalid document structure
  +115  Expected a 'version=', 'encoding=', or 'standalone='
  +116  Bad XML version string
  +117  Unsupported XML version, '{0}'
  +118  Unterminated XML decl
  +119  Bad XML encoding declaration, '{0}'
  +120  Bad standalone declaration
  +121  Unterminated comment
  +122  Processing instruction name expected
  +123  Unterminated processing instruction
  +124  Invalid character (Unicode: 0x{0})
  +125  Unexpected text before root element
  +126  Unterminated start tag, '{0}'
  +127  Expected an attribute value
  +128  Unterminated end tag
  +129  Expected type (CDATA, ID, NMTOKEN, ..), for attribute '{0}' of element '{1}'
  +130  Expected end of tag '{0}'
  +131  Expected tag name, comment, PI, or other markup
  +132  Not valid after content
  +133  Expected comment
  +134  Expected comment or processing instruction
  +135  Expected whitespace
  +136  No root element in DOCTYPE
  +137  Expected quoted string
  +138  Expected public id
  +139  Invalid character in public id (Unicode: 0x{0})
  +140  Unterminated DOCTYPE declaration
  +141  Invalid character in internal subset (Unicode: 0x{0})
  +142  Expected CDATA section
  +143  Invalid initial name character
  +144  Invalid name character
  +145  Unexpected whitespace
  +146  Invalid character in attribute value (Unicode: 0x{0})
  +147  Expected a markup declaration
  +148  Text declaration not legal here
  +149  Conditional section in internal subset
  +150  Expected parameter entity name
  +151  Unterminated entity declaration, '{0}'
  +152  Invalid character reference
  +153  Unterminated character reference
  +154  Expected entity name for reference
  +155  Entity '{0}' was not found
  +156  Unparsed entitty references, '{0}', not valid here
  +157  Unterminated entity reference
  +158  Recursive entity expansion
  +159  Partial markup in entity value
  +160  Unterminated element declaration, '{0}'
  +161  Expected content specification expression for element '{0}'
  +162  Expected asterisk
  +163  Unterminated Content model
  +164  Expected system id
  +165  Expected system or public id
  +166  Unterminated notation declaration
  +167  Expected ',', '|', or ')' characters
  +168  Expected '|' or ')' characters
  +169  Expected ',' or ')' characters or close parenthesis in content model of element '{0}'
  +170  Expected enumeration value for attribute '{0}'
  +171  Expected | enumeration separator, or closing paren
  +172  Unterminated entity literal
  +173  There are more end tags than start tags
  +174  Reference to external declaration in standalone document. Entity={0}
  +175  Expected an open parenthesis
  +176  The attribute '{0}' is already used in element '{1}'
  +177  A '<' character cannot be used in attribute '{0}', except through &lt;
  +178  A leading surrogate character was not followed by a legal second character
  +179  Expected ']]>' to end a conditional section
  +180  Expected INCLUDE or IGNORE here
  +181  Expected [ to follow INCLUDE or IGNORE
  +182  Expected a TextDecl here: <?xml ....
  +183  Expected a XMLDecl here: <?xml ....
  +184  Unexpected end of entity {0}
  +185  A PE propogated out of the int/ext subset, discarding extra text
  +186  An extra ] character was found an ignored
  +187  PE refs are not allowed inside markup in the internal subset
  +188  An entity propogated out of the content section into Miscellaneous
  +189  Expected &# to be followed by a numeric character value
  +190  Expected an open bracket ('[') here
  +191  The sequence ']]>' is not allowed in character data
  +192  Illegal sequence '--' in comment
  +193  Unterminated CDATA section
  +194  Expected NDATA
  +195  NDATA is not legal for parameter entities
  +196  Hex radix character refs must use 'x', not 'X'
  +197  '{0}' has already been set. Ignoring redundant setting
  +198  The XMLDecl strings must be in the order: version, encoding, standalone
  +199  External entities cannot be referred to from attribute values
  +200  The XML or Text decl must start with '<?xml ', not '<?XML '
  +201  Expected a literal entity value or PUBLIC/SYSTEM id
  +202  '{0}' is not a valid digit for the indicated radix
  +203  The input ended before all started tags were ended. Last tag started was '{0}'
  +204  The content model for element '{0}' is ambiguous
  +205  Nested CDATA sections are not allowed
  +206  The prefix '{0}' has not been mapped to any URI
  +207  The start and the end tag were in the different entities
  +208  The main XML document cannot be empty
  +209  CDATA is not allowed outside the root element
  +210  Only numeric character entities or special character entities are legal here
  +211  Got an unexpected trailing surrogate character
  +212  No processing instruction starts with 'xml'
  +213  The XML or Text declaration must start at line/column 1/1
  +214  The 'version=' string is required in an XMLDecl
  +215  The 'standalone=' string is only allowed in the main XML entity
  +216  When namespaces are enabled, a name can have only one colon character
  +217  When namespaces are enabled, the colon cannot be the first or last character
  +218  Colons are not allowed in this name when namespaces are enabled
  +219  A system exception occured during processing
  +220  An exception occured! Type:{0}, Message:{1}
  +221  Unexpected end of file exception. Message: {0}
  +222  UnexpectedError
  +223  The schemaLocation attribute does not contain pairs of values.
  +224  Internal error: don't have a GrammarResolver for TraverseSchema
   
   
   $set 2
  
  
  
  1.26      +127 -125  xml-xerces/c/src/util/Platforms/Win32/Version.rc
  
  Index: Version.rc
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/util/Platforms/Win32/Version.rc,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Version.rc	2001/05/10 16:33:04	1.25
  +++ Version.rc	2001/05/15 21:59:10	1.26
  @@ -197,131 +197,133 @@
       93                L"\x0049\x006E\x0063\x006C\x0075\x0064\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x00"
       94                L"\x0041\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x003C\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00"
       95                L"\x0054\x0068\x0065\x0020\x0027\x0061\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x003F\x0029\x003B\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x00"
  -    96                L"\x007B\x0030\x007D\x00"
  -    99                L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0043\x0044\x0041\x0054\x0041\x00"
  -    100               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
  -    101               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x00"
  -    102               L"\x0052\x0065\x0070\x0065\x0074\x0069\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0069\x006E\x0064\x0069\x0076\x0069\x0064\x0075\x0061\x006C\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0073\x00"
  -    103               L"\x0042\x0061\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  -    104               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0061\x0073\x0073\x0075\x006D\x0069\x006E\x0067\x0020\x0023\x0049\x004D\x0050\x004C\x0049\x0045\x0044\x0020\x00"
  -    105               L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006C\x0069\x0073\x0074\x0020\x0073\x0079\x006E\x0074\x0061\x0078\x0020\x0065\x0072\x0072\x006F\x0072\x00"
  -    106               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x0071\x0075\x0061\x006C\x0020\x0073\x0069\x0067\x006E\x00"
  -    107               L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
  -    108               L"\x0042\x0061\x0064\x0020\x0049\x0044\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0066\x006F\x0072\x0020\x0078\x006D\x006C\x003A\x006C\x0061\x006E\x0067\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
  -    109               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x00"
  -    110               L"\x004D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
  -    111               L"\x0043\x006F\x006D\x006D\x0065\x006E\x0074\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x003C\x0021\x002D\x002D\x00"
  -    112               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0073\x0074\x0072\x0075\x0063\x0074\x0075\x0072\x0065\x00"
  -    113               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x002C\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x00"
  -    114               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
  -    115               L"\x0055\x006E\x0073\x0075\x0070\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    116               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0064\x0065\x0063\x006C\x00"
  -    117               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    118               L"\x0042\x0061\x0064\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  -    119               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
  -    120               L"\x0050\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x00"
  -    121               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
  -    122               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  -    123               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0065\x0078\x0074\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
  -    124               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    125               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x00"
  -    126               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x00"
  -    127               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x0020\x0028\x0043\x0044\x0041\x0054\x0041\x002C\x0020\x0049\x0044\x002C\x0020\x004E\x004D\x0054\x004F\x004B\x0045\x004E\x002C\x0020\x002E\x002E\x0029\x002C\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
  -    128               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0074\x0061\x0067\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    129               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0020\x006E\x0061\x006D\x0065\x002C\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x002C\x0020\x0050\x0049\x002C\x0020\x006F\x0072\x0020\x006F\x0074\x0068\x0065\x0072\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x00"
  -    130               L"\x004E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0066\x0074\x0065\x0072\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x00"
  -    131               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
  -    132               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
  -    133               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
  -    134               L"\x004E\x006F\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x00"
  -    135               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0071\x0075\x006F\x0074\x0065\x0064\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
  -    136               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
  -    137               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  -    138               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  -    139               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  -    140               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
  -    141               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0069\x006E\x0069\x0074\x0069\x0061\x006C\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  -    142               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  -    143               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
  -    144               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  -    145               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  -    146               L"\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
  -    147               L"\x0043\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
  -    148               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x00"
  -    149               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    150               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  -    151               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  -    152               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x0020\x0066\x006F\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  -    153               L"\x0045\x006E\x0074\x0069\x0074\x0079\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00"
  -    154               L"\x0055\x006E\x0070\x0061\x0072\x0073\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0073\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0068\x0065\x0072\x0065\x00"
  -    155               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  -    156               L"\x0052\x0065\x0063\x0075\x0072\x0073\x0069\x0076\x0065\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0065\x0078\x0070\x0061\x006E\x0073\x0069\x006F\x006E\x00"
  -    157               L"\x0050\x0061\x0072\x0074\x0069\x0061\x006C\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x00"
  -    158               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    159               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0065\x0078\x0070\x0072\x0065\x0073\x0073\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    160               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0073\x0074\x0065\x0072\x0069\x0073\x006B\x00"
  -    161               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00"
  -    162               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0069\x0064\x00"
  -    163               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x006F\x0072\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
  -    164               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  -    165               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x002C\x0020\x0027\x007C\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
  -    166               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x007C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
  -    167               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0065\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    168               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    169               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x007C\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0073\x0065\x0070\x0061\x0072\x0061\x0074\x006F\x0072\x002C\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0069\x006E\x0067\x0020\x0070\x0061\x0072\x0065\x006E\x00"
  -    170               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x00"
  -    171               L"\x0054\x0068\x0065\x0072\x0065\x0020\x0061\x0072\x0065\x0020\x006D\x006F\x0072\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0074\x0068\x0061\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x0073\x00"
  -    172               L"\x0052\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x0074\x006F\x0020\x0065\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x002E\x0020\x0045\x006E\x0074\x0069\x0074\x0079\x003D\x007B\x0030\x007D\x00"
  -    173               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x00"
  -    174               L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
  -    175               L"\x0041\x0020\x0027\x003C\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0020\x0074\x0068\x0072\x006F\x0075\x0067\x0068\x0020\x0026\x006C\x0074\x003B\x00"
  -    176               L"\x0041\x0020\x006C\x0065\x0061\x0064\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0063\x006F\x006E\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  -    177               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0074\x006F\x0020\x0065\x006E\x0064\x0020\x0061\x0020\x0063\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
  -    178               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x0020\x0068\x0065\x0072\x0065\x00"
  -    179               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x005B\x0020\x0074\x006F\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x00"
  -    180               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0054\x0065\x0078\x0074\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
  -    181               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
  -    182               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x007B\x0030\x007D\x00"
  -    183               L"\x0041\x0020\x0050\x0045\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x002F\x0065\x0078\x0074\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x002C\x0020\x0064\x0069\x0073\x0063\x0061\x0072\x0064\x0069\x006E\x0067\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x0074\x0065\x0078\x0074\x00"
  -    184               L"\x0041\x006E\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x005D\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0061\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
  -    185               L"\x0050\x0045\x0020\x0072\x0065\x0066\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0073\x0069\x0064\x0065\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
  -    186               L"\x0041\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0074\x006F\x0020\x004D\x0069\x0073\x0063\x0065\x006C\x006C\x0061\x006E\x0065\x006F\x0075\x0073\x00"
  -    187               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0026\x0023\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0076\x0061\x006C\x0075\x0065\x00"
  -    188               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0062\x0072\x0061\x0063\x006B\x0065\x0074\x0020\x0028\x0027\x005B\x0027\x0029\x0020\x0068\x0065\x0072\x0065\x00"
  -    189               L"\x0054\x0068\x0065\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0064\x0061\x0074\x0061\x00"
  -    190               L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x002D\x002D\x0027\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
  -    191               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
  -    192               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x004E\x0044\x0041\x0054\x0041\x00"
  -    193               L"\x004E\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
  -    194               L"\x0048\x0065\x0078\x0020\x0072\x0061\x0064\x0069\x0078\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0075\x0073\x0065\x0020\x0027\x0078\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x0058\x0027\x00"
  -    195               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0062\x0065\x0065\x006E\x0020\x0073\x0065\x0074\x002E\x0020\x0049\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x0020\x0072\x0065\x0064\x0075\x006E\x0064\x0061\x006E\x0074\x0020\x0073\x0065\x0074\x0074\x0069\x006E\x0067\x00"
  -    196               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006F\x0072\x0064\x0065\x0072\x003A\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x002C\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x00"
  -    197               L"\x0045\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0072\x0065\x0064\x0020\x0074\x006F\x0020\x0066\x0072\x006F\x006D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x00"
  -    198               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x003C\x003F\x0078\x006D\x006C\x0020\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x003C\x003F\x0058\x004D\x004C\x0020\x0027\x00"
  -    199               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0072\x0020\x0050\x0055\x0042\x004C\x0049\x0043\x002F\x0053\x0059\x0053\x0054\x0045\x004D\x0020\x0069\x0064\x00"
  -    200               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x0069\x0067\x0069\x0074\x0020\x0066\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0064\x0069\x0063\x0061\x0074\x0065\x0064\x0020\x0072\x0061\x0064\x0069\x0078\x00"
  -    201               L"\x0054\x0068\x0065\x0020\x0069\x006E\x0070\x0075\x0074\x0020\x0065\x006E\x0064\x0065\x0064\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0077\x0065\x0072\x0065\x0020\x0065\x006E\x0064\x0065\x0064\x002E\x0020\x004C\x0061\x0073\x0074\x0020\x0074\x0061\x0067\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0077\x0061\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  -    202               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006D\x0062\x0069\x0067\x0075\x006F\x0075\x0073\x00"
  -    203               L"\x004E\x0065\x0073\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x00"
  -    204               L"\x0054\x0068\x0065\x0020\x0070\x0072\x0065\x0066\x0069\x0078\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0065\x006E\x0020\x006D\x0061\x0070\x0070\x0065\x0064\x0020\x0074\x006F\x0020\x0061\x006E\x0079\x0020\x0055\x0052\x0049\x00"
  -    205               L"\x0054\x0068\x0065\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x006E\x0064\x0020\x0074\x0068\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0020\x0077\x0065\x0072\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
  -    206               L"\x0054\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0079\x00"
  -    207               L"\x0043\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x0074\x0068\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
  -    208               L"\x004F\x006E\x006C\x0079\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x006F\x0072\x0020\x0073\x0070\x0065\x0063\x0069\x0061\x006C\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
  -    209               L"\x0047\x006F\x0074\x0020\x0061\x006E\x0020\x0075\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0072\x0061\x0069\x006C\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  -    210               L"\x004E\x006F\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0073\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x0078\x006D\x006C\x0027\x00"
  -    211               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x0074\x0020\x006C\x0069\x006E\x0065\x002F\x0063\x006F\x006C\x0075\x006D\x006E\x0020\x0031\x002F\x0031\x00"
  -    212               L"\x0054\x0068\x0065\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
  -    213               L"\x0054\x0068\x0065\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x00"
  -    214               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0061\x006E\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x006C\x0079\x0020\x006F\x006E\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  -    215               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0074\x0068\x0065\x0020\x0066\x0069\x0072\x0073\x0074\x0020\x006F\x0072\x0020\x006C\x0061\x0073\x0074\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  -    216               L"\x0043\x006F\x006C\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0069\x0073\x0020\x006E\x0061\x006D\x0065\x0020\x0077\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x00"
  -    217               L"\x0041\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x00"
  -    218               L"\x0041\x006E\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0021\x0020\x0054\x0079\x0070\x0065\x003A\x007B\x0030\x007D\x002C\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x007B\x0031\x007D\x00"
  -    219               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0066\x0069\x006C\x0065\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x002E\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x0020\x007B\x0030\x007D\x00"
  -    220               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0045\x0072\x0072\x006F\x0072\x00"
  -    221               L"\x0054\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0070\x0061\x0069\x0072\x0073\x0020\x006F\x0066\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x002E\x00"
  -    222               L"\x0049\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x003A\x0020\x0064\x006F\x006E\x0027\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0047\x0072\x0061\x006D\x006D\x0061\x0072\x0052\x0065\x0073\x006F\x006C\x0076\x0065\x0072\x0020\x0066\x006F\x0072\x0020\x0054\x0072\x0061\x0076\x0065\x0072\x0073\x0065\x0053\x0063\x0068\x0065\x006D\x0061\x00"
  +    96                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x0027\x007B\x0031\x007D\x0027\x00"
  +    97                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x0027\x007B\x0031\x007D\x0027\x00"
  +    98                L"\x007B\x0030\x007D\x00"
  +    101               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0043\x0044\x0041\x0054\x0041\x00"
  +    102               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
  +    103               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x00"
  +    104               L"\x0052\x0065\x0070\x0065\x0074\x0069\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0069\x006E\x0064\x0069\x0076\x0069\x0064\x0075\x0061\x006C\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0073\x00"
  +    105               L"\x0042\x0061\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  +    106               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0061\x0073\x0073\x0075\x006D\x0069\x006E\x0067\x0020\x0023\x0049\x004D\x0050\x004C\x0049\x0045\x0044\x0020\x00"
  +    107               L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006C\x0069\x0073\x0074\x0020\x0073\x0079\x006E\x0074\x0061\x0078\x0020\x0065\x0072\x0072\x006F\x0072\x00"
  +    108               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x0071\x0075\x0061\x006C\x0020\x0073\x0069\x0067\x006E\x00"
  +    109               L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
  +    110               L"\x0042\x0061\x0064\x0020\x0049\x0044\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0066\x006F\x0072\x0020\x0078\x006D\x006C\x003A\x006C\x0061\x006E\x0067\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
  +    111               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x00"
  +    112               L"\x004D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
  +    113               L"\x0043\x006F\x006D\x006D\x0065\x006E\x0074\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x003C\x0021\x002D\x002D\x00"
  +    114               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0073\x0074\x0072\x0075\x0063\x0074\x0075\x0072\x0065\x00"
  +    115               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x002C\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x00"
  +    116               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
  +    117               L"\x0055\x006E\x0073\x0075\x0070\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    118               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0064\x0065\x0063\x006C\x00"
  +    119               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    120               L"\x0042\x0061\x0064\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  +    121               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
  +    122               L"\x0050\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x00"
  +    123               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
  +    124               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  +    125               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0065\x0078\x0074\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
  +    126               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    127               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x00"
  +    128               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x00"
  +    129               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x0020\x0028\x0043\x0044\x0041\x0054\x0041\x002C\x0020\x0049\x0044\x002C\x0020\x004E\x004D\x0054\x004F\x004B\x0045\x004E\x002C\x0020\x002E\x002E\x0029\x002C\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
  +    130               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0074\x0061\x0067\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    131               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0020\x006E\x0061\x006D\x0065\x002C\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x002C\x0020\x0050\x0049\x002C\x0020\x006F\x0072\x0020\x006F\x0074\x0068\x0065\x0072\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x00"
  +    132               L"\x004E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0066\x0074\x0065\x0072\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x00"
  +    133               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
  +    134               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
  +    135               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
  +    136               L"\x004E\x006F\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x00"
  +    137               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0071\x0075\x006F\x0074\x0065\x0064\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
  +    138               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
  +    139               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  +    140               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  +    141               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  +    142               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
  +    143               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0069\x006E\x0069\x0074\x0069\x0061\x006C\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  +    144               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  +    145               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
  +    146               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
  +    147               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  +    148               L"\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
  +    149               L"\x0043\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
  +    150               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x00"
  +    151               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    152               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  +    153               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  +    154               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x0020\x0066\x006F\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  +    155               L"\x0045\x006E\x0074\x0069\x0074\x0079\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00"
  +    156               L"\x0055\x006E\x0070\x0061\x0072\x0073\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0073\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0068\x0065\x0072\x0065\x00"
  +    157               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
  +    158               L"\x0052\x0065\x0063\x0075\x0072\x0073\x0069\x0076\x0065\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0065\x0078\x0070\x0061\x006E\x0073\x0069\x006F\x006E\x00"
  +    159               L"\x0050\x0061\x0072\x0074\x0069\x0061\x006C\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x00"
  +    160               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    161               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0065\x0078\x0070\x0072\x0065\x0073\x0073\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    162               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0073\x0074\x0065\x0072\x0069\x0073\x006B\x00"
  +    163               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00"
  +    164               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0069\x0064\x00"
  +    165               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x006F\x0072\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
  +    166               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
  +    167               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x002C\x0020\x0027\x007C\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
  +    168               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x007C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
  +    169               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0065\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    170               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    171               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x007C\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0073\x0065\x0070\x0061\x0072\x0061\x0074\x006F\x0072\x002C\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0069\x006E\x0067\x0020\x0070\x0061\x0072\x0065\x006E\x00"
  +    172               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x00"
  +    173               L"\x0054\x0068\x0065\x0072\x0065\x0020\x0061\x0072\x0065\x0020\x006D\x006F\x0072\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0074\x0068\x0061\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x0073\x00"
  +    174               L"\x0052\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x0074\x006F\x0020\x0065\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x002E\x0020\x0045\x006E\x0074\x0069\x0074\x0079\x003D\x007B\x0030\x007D\x00"
  +    175               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x00"
  +    176               L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
  +    177               L"\x0041\x0020\x0027\x003C\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0020\x0074\x0068\x0072\x006F\x0075\x0067\x0068\x0020\x0026\x006C\x0074\x003B\x00"
  +    178               L"\x0041\x0020\x006C\x0065\x0061\x0064\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0063\x006F\x006E\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  +    179               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0074\x006F\x0020\x0065\x006E\x0064\x0020\x0061\x0020\x0063\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
  +    180               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x0020\x0068\x0065\x0072\x0065\x00"
  +    181               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x005B\x0020\x0074\x006F\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x00"
  +    182               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0054\x0065\x0078\x0074\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
  +    183               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
  +    184               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x007B\x0030\x007D\x00"
  +    185               L"\x0041\x0020\x0050\x0045\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x002F\x0065\x0078\x0074\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x002C\x0020\x0064\x0069\x0073\x0063\x0061\x0072\x0064\x0069\x006E\x0067\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x0074\x0065\x0078\x0074\x00"
  +    186               L"\x0041\x006E\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x005D\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0061\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
  +    187               L"\x0050\x0045\x0020\x0072\x0065\x0066\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0073\x0069\x0064\x0065\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
  +    188               L"\x0041\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0074\x006F\x0020\x004D\x0069\x0073\x0063\x0065\x006C\x006C\x0061\x006E\x0065\x006F\x0075\x0073\x00"
  +    189               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0026\x0023\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0076\x0061\x006C\x0075\x0065\x00"
  +    190               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0062\x0072\x0061\x0063\x006B\x0065\x0074\x0020\x0028\x0027\x005B\x0027\x0029\x0020\x0068\x0065\x0072\x0065\x00"
  +    191               L"\x0054\x0068\x0065\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0064\x0061\x0074\x0061\x00"
  +    192               L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x002D\x002D\x0027\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
  +    193               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
  +    194               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x004E\x0044\x0041\x0054\x0041\x00"
  +    195               L"\x004E\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
  +    196               L"\x0048\x0065\x0078\x0020\x0072\x0061\x0064\x0069\x0078\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0075\x0073\x0065\x0020\x0027\x0078\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x0058\x0027\x00"
  +    197               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0062\x0065\x0065\x006E\x0020\x0073\x0065\x0074\x002E\x0020\x0049\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x0020\x0072\x0065\x0064\x0075\x006E\x0064\x0061\x006E\x0074\x0020\x0073\x0065\x0074\x0074\x0069\x006E\x0067\x00"
  +    198               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006F\x0072\x0064\x0065\x0072\x003A\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x002C\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x00"
  +    199               L"\x0045\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0072\x0065\x0064\x0020\x0074\x006F\x0020\x0066\x0072\x006F\x006D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x00"
  +    200               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x003C\x003F\x0078\x006D\x006C\x0020\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x003C\x003F\x0058\x004D\x004C\x0020\x0027\x00"
  +    201               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0072\x0020\x0050\x0055\x0042\x004C\x0049\x0043\x002F\x0053\x0059\x0053\x0054\x0045\x004D\x0020\x0069\x0064\x00"
  +    202               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x0069\x0067\x0069\x0074\x0020\x0066\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0064\x0069\x0063\x0061\x0074\x0065\x0064\x0020\x0072\x0061\x0064\x0069\x0078\x00"
  +    203               L"\x0054\x0068\x0065\x0020\x0069\x006E\x0070\x0075\x0074\x0020\x0065\x006E\x0064\x0065\x0064\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0077\x0065\x0072\x0065\x0020\x0065\x006E\x0064\x0065\x0064\x002E\x0020\x004C\x0061\x0073\x0074\x0020\x0074\x0061\x0067\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0077\x0061\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x00"
  +    204               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006D\x0062\x0069\x0067\x0075\x006F\x0075\x0073\x00"
  +    205               L"\x004E\x0065\x0073\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x00"
  +    206               L"\x0054\x0068\x0065\x0020\x0070\x0072\x0065\x0066\x0069\x0078\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0065\x006E\x0020\x006D\x0061\x0070\x0070\x0065\x0064\x0020\x0074\x006F\x0020\x0061\x006E\x0079\x0020\x0055\x0052\x0049\x00"
  +    207               L"\x0054\x0068\x0065\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x006E\x0064\x0020\x0074\x0068\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0020\x0077\x0065\x0072\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
  +    208               L"\x0054\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0079\x00"
  +    209               L"\x0043\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x0074\x0068\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
  +    210               L"\x004F\x006E\x006C\x0079\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x006F\x0072\x0020\x0073\x0070\x0065\x0063\x0069\x0061\x006C\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
  +    211               L"\x0047\x006F\x0074\x0020\x0061\x006E\x0020\x0075\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0072\x0061\x0069\x006C\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  +    212               L"\x004E\x006F\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0073\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x0078\x006D\x006C\x0027\x00"
  +    213               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x0074\x0020\x006C\x0069\x006E\x0065\x002F\x0063\x006F\x006C\x0075\x006D\x006E\x0020\x0031\x002F\x0031\x00"
  +    214               L"\x0054\x0068\x0065\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
  +    215               L"\x0054\x0068\x0065\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x00"
  +    216               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0061\x006E\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x006C\x0079\x0020\x006F\x006E\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  +    217               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0074\x0068\x0065\x0020\x0066\x0069\x0072\x0073\x0074\x0020\x006F\x0072\x0020\x006C\x0061\x0073\x0074\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
  +    218               L"\x0043\x006F\x006C\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0069\x0073\x0020\x006E\x0061\x006D\x0065\x0020\x0077\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x00"
  +    219               L"\x0041\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x00"
  +    220               L"\x0041\x006E\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0021\x0020\x0054\x0079\x0070\x0065\x003A\x007B\x0030\x007D\x002C\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x007B\x0031\x007D\x00"
  +    221               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0066\x0069\x006C\x0065\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x002E\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x0020\x007B\x0030\x007D\x00"
  +    222               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0045\x0072\x0072\x006F\x0072\x00"
  +    223               L"\x0054\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0070\x0061\x0069\x0072\x0073\x0020\x006F\x0066\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x002E\x00"
  +    224               L"\x0049\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x003A\x0020\x0064\x006F\x006E\x0027\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0047\x0072\x0061\x006D\x006D\x0061\x0072\x0052\x0065\x0073\x006F\x006C\x0076\x0065\x0072\x0020\x0066\x006F\x0072\x0020\x0054\x0072\x0061\x0076\x0065\x0072\x0073\x0065\x0053\x0063\x0068\x0065\x006D\x0061\x00"
   END
   STRINGTABLE DISCARDABLE
   BEGIN
  
  
  
  1.6       +100 -60   xml-xerces/c/src/validators/datatype/DatatypeValidatorFactory.cpp
  
  Index: DatatypeValidatorFactory.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/DatatypeValidatorFactory.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DatatypeValidatorFactory.cpp	2001/05/11 21:51:13	1.5
  +++ DatatypeValidatorFactory.cpp	2001/05/15 21:59:19	1.6
  @@ -56,6 +56,10 @@
   
   /*
    * $Log: DatatypeValidatorFactory.cpp,v $
  + * Revision 1.6  2001/05/15 21:59:19  knoaman
  + * TraverseSchema: add attribute checking + some fixes + more error messages.
  + * More attribute cheking to come.
  + *
    * Revision 1.5  2001/05/11 21:51:13  knoaman
    * Schema updates and fixes.
    *
  @@ -84,6 +88,8 @@
   #include <validators/datatype/StringDatatypeValidator.hpp>
   #include <validators/datatype/BooleanDatatypeValidator.hpp>
   #include <validators/datatype/DecimalDatatypeValidator.hpp>
  +#include <util/PlatformUtils.hpp>
  +#include <util/XMLDeleterFor.hpp>
   
   
   // ---------------------------------------------------------------------------
  @@ -233,14 +239,20 @@
       chLatin_P, chDigit_1, chLatin_M, chNull
   };
   
  +
  +// ---------------------------------------------------------------------------
  +//  DatatypeValidatorFactory: Static member data
  +// ---------------------------------------------------------------------------
  +RefHashTableOf<DatatypeValidator>* DatatypeValidatorFactory::fBuiltInRegistry = 0;
  +
  +
   // ---------------------------------------------------------------------------
   //  DatatypeValidatorFactory: Constructors and Destructor
   // ---------------------------------------------------------------------------
   DatatypeValidatorFactory::DatatypeValidatorFactory()
  -    : fRegistryExpanded(false)
  -      , fRegistry(0)
  +    : fRegistryExpanded(0)
  +      , fUserDefinedRegistry(0)
   {
  -
   }
   
   DatatypeValidatorFactory::~DatatypeValidatorFactory()
  @@ -253,12 +265,12 @@
   //  DatatypeValidatorFactory: Reset methods
   // ---------------------------------------------------------------------------
   void DatatypeValidatorFactory::resetRegistry() {
  -
  -    if (fRegistry != 0) {
   
  -        fRegistry->removeAll();
  -		fRegistryExpanded = false;
  +    if (fUserDefinedRegistry != 0) {
  +        fUserDefinedRegistry->removeAll();
       }
  +
  +    // TO DO: reset some primitive datatypes static - fields (ID & IDREFS)
   }
   
   
  @@ -270,35 +282,40 @@
   	if (fRegistryExpanded)
   		return;
   
  -    if (fRegistry == 0) {
  -        fRegistry = new RefHashTableOf<DatatypeValidator>(109);
  +    if (fBuiltInRegistry == 0) {
  +
  +        fBuiltInRegistry = new RefHashTableOf<DatatypeValidator>(109);
  +        XMLPlatformUtils::registerLazyData
  +        (
  +            new XMLDeleterFor<DVHashTable>(fBuiltInRegistry)
  +        );
       }
   
   	try {
   
  -        fRegistry->put((void*) SchemaSymbols::fgDT_STRING,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_STRING,
                          new StringDatatypeValidator());
   
   /*
  -        fRegistry->put((void*) XMLUni::fgIDString,
  +        fBuiltInRegistry->put((void*) XMLUni::fgIDString,
                          new IDDatatypeValidator());
  -        fRegistry->put((void*) XMLUni::fgIDRefString,
  +        fBuiltInRegistry->put((void*) XMLUni::fgIDRefString,
                          new IDREFDatatypeValidator());
  -        fRegistry->put((void*) XMLUni::fgEntityString,
  +        fBuiltInRegistry->put((void*) XMLUni::fgEntityString,
                          new ENTITYDatatypeValidator());
  -        fRegistry->put((void*) XMLUni::fgNotationString,
  +        fBuiltInRegistry->put((void*) XMLUni::fgNotationString,
                          new NOTATIONDatatypeValidator());
   	    */
   
           // Create 'IDREFS' datatype validator
   	    createDatatypeValidator(XMLUni::fgIDRefsString, 
  -                    getDatatypeValidator(XMLUni::fgIDRefString), 0, true);
  +                    getDatatypeValidator(XMLUni::fgIDRefString), 0, true, 0, false);
   
           // Create 'ENTITIES' datatype validator
           createDatatypeValidator(XMLUni::fgEntitiesString,
  -		            getDatatypeValidator(XMLUni::fgEntityString), 0, true);
  +		            getDatatypeValidator(XMLUni::fgEntityString), 0, true, 0, false);
   
  -        RefHashTableOf<KVStringPair>* facets = new RefHashTableOf<KVStringPair>(3);
  +        RefHashTableOf<KVStringPair>* facets = new RefHashTableOf<KVStringPair>(2);
   
           facets->put((void*) SchemaSymbols::fgELT_PATTERN ,
                       new KVStringPair(SchemaSymbols::fgELT_PATTERN,fgTokPattern));
  @@ -307,11 +324,13 @@
   
           // Create 'NMTOKEN' datatype validator
           createDatatypeValidator(XMLUni::fgNmTokenString, 
  -                    getDatatypeValidator(SchemaSymbols::fgDT_STRING),facets, false);
  +                    getDatatypeValidator(SchemaSymbols::fgDT_STRING),facets, false, 0, false);
   
           // Create 'NMTOKENS' datatype validator
           createDatatypeValidator(XMLUni::fgNmTokensString,
  -		            getDatatypeValidator(XMLUni::fgNmTokenString), 0, true);
  +		            getDatatypeValidator(XMLUni::fgNmTokenString), 0, true, 0, false);
  +
  +        fRegistryExpanded = 1;
       }
   	catch(...) {
           throw;
  @@ -321,41 +340,38 @@
   
   void DatatypeValidatorFactory::expandRegistryToFullSchemaSet()
   {
  -	if (fRegistryExpanded)
  +	if (fRegistryExpanded == 2)
   		return;
  -
  -    if (fRegistry == 0) {
  -        fRegistry = new RefHashTableOf<DatatypeValidator>(109);
  -    }
   
  -    // Initialize common Schema/DTD Datatype validator set if not initialized
  -    if (fRegistry->get(SchemaSymbols::fgDT_STRING) == 0) {
  +	// Initialize common Schema/DTD Datatype validator set if not initialized
  +    if (fBuiltInRegistry == 0
  +        || fBuiltInRegistry->get(SchemaSymbols::fgDT_STRING) == 0) {
           initializeDTDRegistry();
       }
   
   	try {
  -        fRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN, 
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN, 
                          new BooleanDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL,
                          new DecimalDatatypeValidator());
   /*
  -        fRegistry->put((void*) SchemaSymbols::fgDT_FLOAT,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_FLOAT,
                          new FloatDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE,
                          new DoubleDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY,
                          new HexBinaryDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY,
                          new Base64BinaryDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_ANYURI,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYURI,
                          new AnyURIDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_QNAME,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_QNAME,
                          new QNameDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_DURATION,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DURATION,
                          new DurationDatatypeValidator());
  -        fRegistry->put((void*) SchemaSymbols::fgDT_DAY,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DAY,
                          new DayDatatypeValidator()); 
  -        fRegistry->put((void*) SchemaSymbols::fgDT_TIME,
  +        fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_TIME,
                          new TimeDatatypeValidator());
           */
   
  @@ -372,7 +388,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_NORMALIZEDSTRING,
                       getDatatypeValidator(SchemaSymbols::fgDT_STRING),
  -				    facets, false);
  +				    facets, false, 0, false);
   
   		// Create 'token' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -382,7 +398,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_TOKEN,
                         getDatatypeValidator(SchemaSymbols::fgDT_NORMALIZEDSTRING),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'language' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -392,7 +408,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_LANGUAGE, 
                         getDatatypeValidator(SchemaSymbols::fgDT_TOKEN),
  -                      facets, false );
  +                      facets, false, 0, false);
   
           // Create 'Name' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -402,7 +418,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_NAME,
                         getDatatypeValidator(SchemaSymbols::fgDT_TOKEN),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create a 'NCName' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -412,7 +428,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_NCNAME,
                         getDatatypeValidator(SchemaSymbols::fgDT_TOKEN),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'integer' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -422,7 +438,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_INTEGER,
                         getDatatypeValidator(SchemaSymbols::fgDT_DECIMAL),
  -                      facets, false);
  +                      facets, false, 0, false);
   
   /*
           // Create 'nonPositiveInteger' datatype validator
  @@ -433,7 +449,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_NONPOSITIVEINTEGER, 
                         getDatatypeValidator(SchemaSymbols::fgDT_INTEGER),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'negativeInteger' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -443,7 +459,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_NEGATIVEINTEGER, 
                         getDatatypeValidator(SchemaSymbols::fgDT_NONPOSITIVEINTEGER),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'long' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -455,7 +471,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_LONG,
                         getDatatypeValidator(SchemaSymbols::fgDT_INTEGER),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'int' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -467,7 +483,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_INT,
                         getDatatypeValidator(SchemaSymbols::fgDT_LONG),
  -                      facets,false);
  +                      facets,false, 0, false);
   
           // Create 'short' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -479,7 +495,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_SHORT,
                         getDatatypeValidator(SchemaSymbols::fgDT_INT),                                
  -                      facets, false);
  +                      facets, false, 0 ,false);
   
           // Create 'byte' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -491,7 +507,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_BYTE,
                         getDatatypeValidator(SchemaSymbols::fgDT_SHORT),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'nonNegativeInteger' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -501,7 +517,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER,
                         getDatatypeValidator(SchemaSymbols::fgDT_INTEGER),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'unsignedLong' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -511,7 +527,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_ULONG,
                         getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'unsignedInt' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -521,7 +537,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_UINT,
                         getDatatypeValidator(SchemaSymbols::fgDT_ULONG),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'unsignedShort' datatypeValidator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -531,7 +547,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_USHORT, 
                         getDatatypeValidator(SchemaSymbols::fgDT_UINT),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'unsignedByte' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -541,7 +557,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_UBYTE,
                         getDatatypeValidator(SchemaSymbols::fgDT_USHORT),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // Create 'positiveInteger' datatype validator
           facets = new RefHashTableOf<KVStringPair>(3);
  @@ -551,7 +567,7 @@
   
           createDatatypeValidator(SchemaSymbols::fgDT_POSITIVEINTEGER,
                         getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER),
  -                      facets, false);
  +                      facets, false, 0, false);
   
           // REVISIT - Add the remaining datatype validators
           // Create 'dateTime' datatype validator
  @@ -567,7 +583,7 @@
           // Create 'gMonth' datatype validator
   */
   
  -        fRegistryExpanded = true;
  +        fRegistryExpanded = 2;
       }
       catch(...){
           throw;
  @@ -582,7 +598,8 @@
   		                                          DatatypeValidator* const baseValidator,
                                                     RefHashTableOf<KVStringPair>* const facets,
                                                     const bool derivedByList,
  -                                                  const int finalSet)
  +                                                  const int finalSet,
  +                                                  const bool userDefined)
   {
   	if (baseValidator == 0) {
           return 0;
  @@ -609,7 +626,18 @@
       }
   
       if (datatypeValidator != 0) {
  -        fRegistry->put((void *)typeName, datatypeValidator);
  +
  +        if (userDefined) {
  +
  +            if (!fUserDefinedRegistry) {
  +                fUserDefinedRegistry = new RefHashTableOf<DatatypeValidator>(29);
  +            }
  +
  +            fUserDefinedRegistry->put((void *)typeName, datatypeValidator);
  +        }
  +        else {
  +            fBuiltInRegistry->put((void *)typeName, datatypeValidator);
  +        }
       }
   
       return datatypeValidator;
  @@ -619,7 +647,8 @@
   DatatypeValidator*
   DatatypeValidatorFactory::createDatatypeValidator(const XMLCh* const typeName,
                                                     RefVectorOf<DatatypeValidator>* const validators,
  -                                                  const int finalSet)
  +                                                  const int finalSet,
  +                                                  const bool userDefined)
   {
       if (validators == 0)
           return 0;
  @@ -628,8 +657,20 @@
   
       //datatypeValidator = new UnionDatatypeValidator(validators, finalSet);
   
  +
       if (datatypeValidator != 0) {
  -        fRegistry->put((void*) typeName, datatypeValidator); 
  +
  +        if (userDefined) {
  +
  +            if (!fUserDefinedRegistry) {
  +                fUserDefinedRegistry = new RefHashTableOf<DatatypeValidator>(29);
  +            }
  +
  +            fUserDefinedRegistry->put((void *)typeName, datatypeValidator);
  +        }
  +        else {
  +            fBuiltInRegistry->put((void *)typeName, datatypeValidator);
  +        }
       }
   
       return datatypeValidator;
  
  
  
  1.4       +45 -28    xml-xerces/c/src/validators/datatype/DatatypeValidatorFactory.hpp
  
  Index: DatatypeValidatorFactory.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/DatatypeValidatorFactory.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DatatypeValidatorFactory.hpp	2001/05/11 13:27:28	1.3
  +++ DatatypeValidatorFactory.hpp	2001/05/15 21:59:23	1.4
  @@ -55,15 +55,12 @@
    */
   
   /*
  - * $Id: DatatypeValidatorFactory.hpp,v 1.3 2001/05/11 13:27:28 tng Exp $
  + * $Id: DatatypeValidatorFactory.hpp,v 1.4 2001/05/15 21:59:23 knoaman Exp $
    */
   
   #if !defined(DATATYPEVALIDATORFACTORY_HPP)
   #define DATATYPEVALIDATORFACTORY_HPP
   
  -#include <validators/datatype/DatatypeValidator.hpp>
  -#include <util/RefVectorOf.hpp>
  -
   /**
    * This class implements a factory of Datatype Validators. Internally the
    * DatatypeValidators are kept in a registry.
  @@ -77,7 +74,7 @@
    * facets and registering the Datatype into registry table.
    * This implementation uses a Hahtable as a registry. The datatype validators created
    * by the factory will be deleted by the registry.
  - *
  + * 
    * As the Parser parses an instance document it knows if validation needs
    * to be checked. If no validation is necesary we should not instantiate a
    * DatatypeValidatorFactory.
  @@ -85,9 +82,16 @@
    */
   
   // ---------------------------------------------------------------------------
  +//  Includes
  +// ---------------------------------------------------------------------------
  +#include <validators/datatype/DatatypeValidator.hpp>
  +#include <util/RefVectorOf.hpp>
  +
  +// ---------------------------------------------------------------------------
   //  DatatypeValidatorFactory: Local declaration
   // ---------------------------------------------------------------------------
   typedef RefHashTableOf<KVStringPair> KVStringPairHashTable;
  +typedef RefHashTableOf<DatatypeValidator> DVHashTable;
   
   
   class VALIDATORS_EXPORT DatatypeValidatorFactory
  @@ -134,29 +138,29 @@
   
       /**
   	  * Initializes registry with primitive and derived Simple types.
  -      *
  -      * This method does not clear the registry to clear the registry you
  +      * 
  +      * This method does not clear the registry to clear the registry you 
   	  * have to call resetRegistry.
  -      *
  -      * The net effect of this method is to start with a the smallest set of
  +      * 
  +      * The net effect of this method is to start with a the smallest set of 
   	  * datatypes needed by the validator.
   	  *
  -	  * If we start with DTD's, then we initialize the table to only
  +	  * If we start with DTD's, then we initialize the table to only 
   	  * the 9 validators needed by DTD Validation.
   	  */
   	void initializeDTDRegistry();
   
   	/**
   	  * Initializes registry with primitive and derived Simple types.
  -      *
  -      * This method does not clear the registry to clear the registry you
  +      * 
  +      * This method does not clear the registry to clear the registry you 
   	  * have to call resetRegistry.
  -      *
  -      * The net effect of this method is to start with a the smallest set of
  +      * 
  +      * The net effect of this method is to start with a the smallest set of 
   	  * datatypes needed by the validator.
   	  *
  -      * If we start with Schema's then we initialize to to full set of
  -	  * validators.	
  +      * If we start with Schema's then we initialize to to full set of 
  +	  * validators.	  
   	  */
   	void expandRegistryToFullSchemaSet();
   
  @@ -168,7 +172,7 @@
       /** @name Validator Factory Functions */
       //@{
   
  -    /**
  +    /** 
         * Creates a new datatype validator of type baseValidator's class and
         * adds it to the registry
         *
  @@ -187,9 +191,10 @@
   		                                       DatatypeValidator* const,
                                                  RefHashTableOf<KVStringPair>* const,
                                                  const bool,
  -                                               const int = 0);
  +                                               const int = 0,
  +                                               const bool = true);
   
  -    /**
  +    /** 
         * Creates a new datatype validator of type UnionDatatypeValidator and
         * adds it to the registry
         *
  @@ -200,7 +205,8 @@
         */
       DatatypeValidator* createDatatypeValidator(const XMLCh* const,
                                                  RefVectorOf<DatatypeValidator>* const,
  -                                               const int finalSet);
  +                                               const int finalSet,
  +                                               const bool = true);
   
   	//@}
   
  @@ -221,22 +227,33 @@
       //  fRegistryExpanded
       //      Indicated whether we have expanded the registry or not.
   	//		
  -    //  fRegistry
  -    //      This is a hashtable of dataype validators.
  +    //  fUserDefinedRegistry
  +    //      This is a hashtable of user defined dataype validators.
  +    //
  +    //  fBuiltInRegistry
  +    //      This is a hashtable of built-in primitive datatype validators.
       // -----------------------------------------------------------------------
  -	bool                               fRegistryExpanded;
  -	RefHashTableOf<DatatypeValidator>* fRegistry;
  +	int                                fRegistryExpanded;
  +    RefHashTableOf<DatatypeValidator>* fUserDefinedRegistry;
  +	static RefHashTableOf<DatatypeValidator>* fBuiltInRegistry;
   };
   
   
   // ---------------------------------------------------------------------------
   //  DatatypeValidatorFactory: Getters
   // ---------------------------------------------------------------------------
  -inline DatatypeValidator*
  +inline DatatypeValidator* 
   DatatypeValidatorFactory::getDatatypeValidator(const XMLCh* const dvType) const
   {
  -	if (dvType && fRegistry && fRegistry->containsKey(dvType)) {
  -		return fRegistry->get(dvType);
  +	if (dvType) {
  +
  +        if (fBuiltInRegistry && fBuiltInRegistry->containsKey(dvType)) {
  +		    return fBuiltInRegistry->get(dvType);
  +        }
  +
  +        if (fUserDefinedRegistry && fUserDefinedRegistry->containsKey(dvType)) {
  +		    return fUserDefinedRegistry->get(dvType);
  +        }
       }
   
   	return 0;
  @@ -247,7 +264,7 @@
   // ---------------------------------------------------------------------------
   inline void DatatypeValidatorFactory::cleanUp() {
   
  -	delete fRegistry;
  +	delete fUserDefinedRegistry;
   }
   
   #endif
  
  
  
  1.11      +5 -0      xml-xerces/c/src/validators/schema/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/schema/Makefile.in,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Makefile.in	2001/05/11 13:27:32	1.10
  +++ Makefile.in	2001/05/15 21:59:32	1.11
  @@ -55,6 +55,10 @@
   #
   #
   # $Log: Makefile.in,v $
  +# Revision 1.11  2001/05/15 21:59:32  knoaman
  +# TraverseSchema: add attribute checking + some fixes + more error messages.
  +# More attribute cheking to come.
  +#
   # Revision 1.10  2001/05/11 13:27:32  tng
   # Copyright update.
   #
  @@ -118,6 +122,7 @@
   	ComplexTypeInfo.hpp \
   	SubstitutionGroupComparator.hpp \
   	SchemaInfo.hpp \
  +	GeneralAttributeCheck.hpp \
   	TraverseSchema.hpp
   
   VALIDATORS_SCHEMA_CPP_PRIVHEADERS =
  @@ -136,6 +141,7 @@
   	ComplexTypeInfo.$(TO) \
   	SubstitutionGroupComparator.$(TO) \
   	SchemaInfo.$(TO) \
  +	GeneralAttributeCheck.$(TO) \
   	TraverseSchema.$(TO)
   
   all::	includes $(VALIDATORS_SCHEMA_CPP_OBJECTS)
  
  
  
  1.7       +25 -1     xml-xerces/c/src/validators/schema/SchemaSymbols.cpp
  
  Index: SchemaSymbols.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/schema/SchemaSymbols.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SchemaSymbols.cpp	2001/05/14 17:53:48	1.6
  +++ SchemaSymbols.cpp	2001/05/15 21:59:34	1.7
  @@ -56,6 +56,10 @@
   
   /*
    * $Log: SchemaSymbols.cpp,v $
  + * Revision 1.7  2001/05/15 21:59:34  knoaman
  + * TraverseSchema: add attribute checking + some fixes + more error messages.
  + * More attribute cheking to come.
  + *
    * Revision 1.6  2001/05/14 17:53:48  tng
    * Schema: Update Schema URL
    *
  @@ -477,8 +481,13 @@
   };
   
   const XMLCh SchemaSymbols::fgATT_FORM[] =
  +{
  +    chLatin_f, chLatin_o, chLatin_r, chLatin_m, chNull
  +};
  +
  +const XMLCh SchemaSymbols::fgATT_ID[] =
   {
  -    chLatin_f, chLatin_o, chLatin_r, chLatin_m,  chNull
  +    chLatin_i, chLatin_d, chNull
   };
   
   const XMLCh SchemaSymbols::fgATT_MAXOCCURS[] =
  @@ -539,11 +548,21 @@
       chLatin_o, chLatin_n, chNull
   };
   
  +const XMLCh SchemaSymbols::fgATT_SOURCE[] =
  +{
  +    chLatin_s, chLatin_o, chLatin_u, chLatin_r, chLatin_c, chLatin_e, chNull
  +};
  +
   const XMLCh SchemaSymbols::fgATT_SYSTEM[] =
   {
       chLatin_s, chLatin_y, chLatin_s, chLatin_t, chLatin_e, chLatin_m, chNull
   };
   
  +const XMLCh SchemaSymbols::fgATT_PUBLIC[] =
  +{
  +    chLatin_p, chLatin_u, chLatin_b, chLatin_l, chLatin_i, chLatin_c, chNull
  +};
  +
   const XMLCh SchemaSymbols::fgATT_TARGETNAMESPACE[] =
   {
       chLatin_t, chLatin_a, chLatin_r, chLatin_g, chLatin_e, chLatin_t,
  @@ -569,6 +588,12 @@
   const XMLCh SchemaSymbols::fgATT_MIXED[] =
   {
       chLatin_m, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull
  +};
  +
  +const XMLCh SchemaSymbols::fgATT_VERSION[] =
  +{
  +    chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i,
  +    chLatin_o, chLatin_n, chNull
   };
   
   const XMLCh SchemaSymbols::fgATT_XPATH[] =
  
  
  
  1.7       +5 -1      xml-xerces/c/src/validators/schema/SchemaSymbols.hpp
  
  Index: SchemaSymbols.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/schema/SchemaSymbols.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SchemaSymbols.hpp	2001/05/11 15:17:44	1.6
  +++ SchemaSymbols.hpp	2001/05/15 21:59:38	1.7
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: SchemaSymbols.hpp,v 1.6 2001/05/11 15:17:44 tng Exp $
  + * $Id: SchemaSymbols.hpp,v 1.7 2001/05/15 21:59:38 knoaman Exp $
    */
   
   #if !defined(SCHEMASYMBOLS_HPP)
  @@ -139,6 +139,7 @@
       static const XMLCh fgATT_FINALDEFAULT[];
       static const XMLCh fgATT_FIXED[];
       static const XMLCh fgATT_FORM[];
  +    static const XMLCh fgATT_ID[];
       static const XMLCh fgATT_MAXOCCURS[];
       static const XMLCh fgATT_MINOCCURS[];
       static const XMLCh fgATT_NAME[];
  @@ -149,12 +150,15 @@
       static const XMLCh fgATT_REF[];
       static const XMLCh fgATT_REFER[];
       static const XMLCh fgATT_SCHEMALOCATION[];
  +    static const XMLCh fgATT_SOURCE[];
       static const XMLCh fgATT_SYSTEM[];
  +    static const XMLCh fgATT_PUBLIC[];
       static const XMLCh fgATT_TARGETNAMESPACE[];
       static const XMLCh fgATT_TYPE[];
       static const XMLCh fgATT_USE[];
       static const XMLCh fgATT_VALUE[];
       static const XMLCh fgATT_MIXED[];
  +    static const XMLCh fgATT_VERSION[];
       static const XMLCh fgATT_XPATH[];
       static const XMLCh fgATTVAL_TWOPOUNDANY[];
       static const XMLCh fgATTVAL_TWOPOUNDLOCAL[];
  
  
  
  1.6       +176 -12   xml-xerces/c/src/validators/schema/TraverseSchema.cpp
  
  Index: TraverseSchema.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/schema/TraverseSchema.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TraverseSchema.cpp	2001/05/11 21:51:19	1.5
  +++ TraverseSchema.cpp	2001/05/15 21:59:39	1.6
  @@ -56,6 +56,10 @@
   
   /*
    * $Log: TraverseSchema.cpp,v $
  + * Revision 1.6  2001/05/15 21:59:39  knoaman
  + * TraverseSchema: add attribute checking + some fixes + more error messages.
  + * More attribute cheking to come.
  + *
    * Revision 1.5  2001/05/11 21:51:19  knoaman
    * Schema updates and fixes.
    *
  @@ -106,6 +110,9 @@
   #include <parsers/DOMParser.hpp>
   #include <dom/DOM_DOMException.hpp>
   #include <validators/schema/SchemaInfo.hpp>
  +#include <validators/datatype/InvalidDatatypeValueException.hpp>
  +#include <validators/datatype/InvalidDatatypeFacetException.hpp>
  +#include <validators/schema/GeneralAttributeCheck.hpp>
   
   // ---------------------------------------------------------------------------
   //  TraverseSchema: Local declaration
  @@ -196,6 +203,7 @@
       , fCurrentSchemaInfo(0)
       , fImportLocations(0)
       , fIncludeLocations(0)
  +    , fAttributeCheck(0)
   {
   
   	try {
  @@ -228,6 +236,8 @@
           return;
       }
   
  +    fAttributeCheck = GeneralAttributeCheck::instance();
  +
       //Make sure namespace binding is defaulted
       DOMString rootPrefix = fSchemaRootElement.getPrefix();
   
  @@ -309,6 +319,12 @@
   
   void TraverseSchema::traverseSchemaHeader() {
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::GlobalContext;
  +    fAttributeCheck->checkAttributes(fSchemaRootElement, scope, this);
  +
       retrieveNamespaceMapping();
   
       fElementDefaultQualified = 
  @@ -347,6 +363,12 @@
   void TraverseSchema::traverseInclude(const DOM_Element& elem) {
   
       // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = GeneralAttributeCheck::GlobalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
  +    // ------------------------------------------------------------------
       // First, handle any ANNOTATION declaration
       // ------------------------------------------------------------------
       if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) {
  @@ -499,6 +521,12 @@
   void TraverseSchema::traverseImport(const DOM_Element& elem) {
   
       // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = GeneralAttributeCheck::GlobalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
  +    // ------------------------------------------------------------------
       // First, handle any ANNOTATION declaration
       // ------------------------------------------------------------------
       if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) {
  @@ -624,6 +652,16 @@
   TraverseSchema::traverseChoiceSequence(const DOM_Element& elem,
                                          const int modelGroupType)
   {
  +
  +    // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
  +    // ------------------------------------------------------------------
  +    // Process contents
  +    // ------------------------------------------------------------------
       DOM_Element child = checkContent(elem, XUtil::getFirstChildElement(elem), true);
       ContentSpecNode* left = 0;
       ContentSpecNode* right = 0;
  @@ -717,6 +755,19 @@
     */
   int TraverseSchema::traverseSimpleTypeDecl(const DOM_Element& childElem) 
   {
  +
  +    // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    bool topLevel = isTopLevelComponent(childElem);
  +    unsigned short scope = (topLevel) ? GeneralAttributeCheck::GlobalContext
  +                                      : GeneralAttributeCheck::LocalContext;    
  +
  +    fAttributeCheck->checkAttributes(childElem, scope, this);
  +
  +    // ------------------------------------------------------------------
  +    // Process contents
  +    // ------------------------------------------------------------------
       const XMLCh* name = getElementAttValue(childElem,SchemaSymbols::fgATT_NAME);
   
       if (XMLString::stringLen(fTargetNSURIString) != 0) {
  @@ -818,6 +869,13 @@
           return -1;
       }
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = (topLevel) ? GeneralAttributeCheck::GlobalContext 
  +                                      : GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
   //    fCurrentTypeNameStack->push(XMLString::replicate(name));
   
       // ------------------------------------------------------------------
  @@ -975,6 +1033,12 @@
   ContentSpecNode*
   TraverseSchema::traverseAny(const DOM_Element& elem) {
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
       // ------------------------------------------------------------------
       // First, handle any ANNOTATION declaration
       // ------------------------------------------------------------------
  @@ -1103,6 +1167,15 @@
   	return 0;
   
       // Work in progress
  +    // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
  +    // ------------------------------------------------------------------
  +    // Process contents
  +    // ------------------------------------------------------------------
       DOM_Element child = checkContent(elem, XUtil::getFirstChildElement(elem), true);
   
       if (child == 0) {
  @@ -1190,15 +1263,11 @@
   void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem,
                                              ComplexTypeInfo* const typeInfo) {
   
  -    bool         topLevel = isTopLevelComponent(elem);
  -    const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME);
  -    const XMLCh* ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF);
  -    const XMLCh* defaultVal = getElementAttValue(elem, SchemaSymbols::fgATT_DEFAULT);
  -    const XMLCh* fixedVal = getElementAttValue(elem, SchemaSymbols::fgATT_FIXED);
  -    const XMLCh* useVal = getElementAttValue(elem, SchemaSymbols::fgATT_USE);
  -    bool         nameEmpty = (XMLString::stringLen(name) == 0) ? true : false;
  -    bool         refEmpty = (XMLString::stringLen(ref) == 0) ? true : false;
  -    DOM_Element  simpleType = checkContent(elem, XUtil::getFirstChildElement(elem), true);
  +    bool           topLevel = isTopLevelComponent(elem);
  +    const XMLCh*   name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME);
  +    const XMLCh*   ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF);
  +    bool           nameEmpty = (XMLString::stringLen(name) == 0) ? true : false;
  +    bool           refEmpty = (XMLString::stringLen(ref) == 0) ? true : false;
   
       if (topLevel) {
   
  @@ -1217,8 +1286,21 @@
       if (nameEmpty && refEmpty) {
           reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttribute);
           return;
  -    }    
  +    }
  +
  +    // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = (topLevel) ? GeneralAttributeCheck::GlobalContext
  +                                      : GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
   
  +
  +    const XMLCh* defaultVal = getElementAttValue(elem, SchemaSymbols::fgATT_DEFAULT);
  +    const XMLCh* fixedVal = getElementAttValue(elem, SchemaSymbols::fgATT_FIXED);
  +    const XMLCh* useVal = getElementAttValue(elem, SchemaSymbols::fgATT_USE);
  +    DOM_Element  simpleType = checkContent(elem, XUtil::getFirstChildElement(elem), true);
  +
       if(XMLString::stringLen(defaultVal) != 0) {
   
           if (XMLString::stringLen(fixedVal) != 0) {
  @@ -1519,6 +1601,16 @@
           return 0;
       }
   
  +    // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = (topLevel) ? GeneralAttributeCheck::GlobalContext
  +                                      : GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
  +    // ------------------------------------------------------------------
  +    // Process contents
  +    // ------------------------------------------------------------------
       if(XMLString::stringLen(fixed) != 0 && XMLString::stringLen(deflt) != 0) {
           reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ElementWithFixedAndDefault);
       }
  @@ -1780,6 +1872,12 @@
   								   const int typeNameIndex,
                                      const int finalSet) {
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(contentElem, scope, this);
  +
       DatatypeValidator* baseValidator = 0;
       DOM_Element        content = contentElem;
       const XMLCh*       typeName = fStringPool.getValueForId(typeNameIndex);
  @@ -1844,6 +1942,14 @@
   				  fStringPool.getValueForId(strId), baseValidator,0, true, finalSet);
   		}
       }
  +    catch(const InvalidDatatypeValueException& idve) {
  +        reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idve.getMessage());
  +    }
  +    catch (const InvalidDatatypeFacetException& idfe) {
  +        reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idfe.getMessage());
  +    }
       catch(...) {
           reportSchemaError(XMLUni::fgXMLErrDomain,
                             XMLErrs::DatatypeValidatorCreationError, typeName);
  @@ -1857,6 +1963,12 @@
   								          const int typeNameIndex,
                                             const int finalSet) {
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(contentElem, scope, this);
  +
       DatatypeValidator* baseValidator = 0;
       DOM_Element        content = contentElem;
       const XMLCh*       typeName = fStringPool.getValueForId(typeNameIndex);
  @@ -1909,6 +2021,7 @@
   
           if (content.getNodeType() == DOM_Node::ELEMENT_NODE) {
   
  +            fAttributeCheck->checkAttributes(contentElem, scope, this);
               facetName = content.getLocalName();
               fBuffer.set(facetName.rawBuffer(), facetName.length());
   
  @@ -1997,6 +2110,14 @@
                       false, finalSet);
   		}
       }
  +    catch(const InvalidDatatypeValueException& idve) {
  +        reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idve.getMessage());
  +    }
  +    catch (const InvalidDatatypeFacetException& idfe) {
  +        reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idfe.getMessage());
  +    }
       catch(...) {
   
           reportSchemaError(XMLUni::fgXMLErrDomain,
  @@ -2013,6 +2134,12 @@
   								    const int typeNameIndex,
                                       const int finalSet) {
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(contentElem, scope, this);
  +
       int                             size = 1;
       DOM_Element                     content = contentElem;
       const XMLCh* const              typeName = 
  @@ -2116,6 +2243,14 @@
   			}
   		}
       }
  +    catch(const InvalidDatatypeValueException& idve) {
  +        reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idve.getMessage());
  +    }
  +    catch (const InvalidDatatypeFacetException& idfe) {
  +        reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idfe.getMessage());
  +    }
       catch(...) {
           reportSchemaError(XMLUni::fgXMLErrDomain,
                             XMLErrs::DatatypeValidatorCreationError, typeName);
  @@ -2159,6 +2294,12 @@
                                                  ComplexTypeInfo* const typeInfo)
   {
       // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(contentDecl, scope, this);
  +
  +    // -----------------------------------------------------------------------
       // Set the content type to be simple, and initialize content spec handle
       // -----------------------------------------------------------------------
       typeInfo->setContentType(SchemaElementDecl::Simple);
  @@ -2173,6 +2314,8 @@
           throw;
       }
   
  +    fAttributeCheck->checkAttributes(simpleContent, scope, this);
  +
       // -----------------------------------------------------------------------
       // The content should be either "restriction" or "extension"
       // -----------------------------------------------------------------------
  @@ -2292,6 +2435,8 @@
       
                   if (content.getNodeType() == DOM_Node::ELEMENT_NODE) {
   
  +                    fAttributeCheck->checkAttributes(content, scope, this);
  +
                       DOMString attValue = 
                           content.getAttribute(SchemaSymbols::fgATT_VALUE);
   
  @@ -2378,6 +2523,14 @@
                           )
                       );
   				}
  +                catch(const InvalidDatatypeValueException& idve) {
  +                    reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idve.getMessage());
  +                }
  +                catch (const InvalidDatatypeFacetException& idfe) {
  +                    reportSchemaError(XMLUni::fgValidityDomain,
  +                          XMLValid::DisplayErrorMessage, idfe.getMessage());
  +                }
                   catch(...) {
                       reportSchemaError(XMLUni::fgXMLErrDomain,
                                         XMLErrs::DatatypeValidatorCreationError, typeName);
  @@ -2449,6 +2602,12 @@
                                                   ComplexTypeInfo* const typeInfo,
                                                   const bool isMixed)
   {
  +    // ------------------------------------------------------------------
  +    // Check attributes
  +    // ------------------------------------------------------------------
  +    unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(contentDecl, scope, this);
  +
       // -----------------------------------------------------------------------
       // Determine whether the content is mixed, or element-only
       // Setting here overrides any setting on the complex type decl
  @@ -2501,7 +2660,7 @@
       // Handle the base type name 
       // -----------------------------------------------------------------------
       const XMLCh* baseName = 
  -            getElementAttValue(contentDecl, SchemaSymbols::fgATT_BASE);
  +            getElementAttValue(complexContent, SchemaSymbols::fgATT_BASE);
   
       if (XMLString::stringLen(baseName) == 0) {
   
  @@ -2556,6 +2715,12 @@
     */
   SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOM_Element& elem) {
   
  +    // -----------------------------------------------------------------------
  +    // Check Attributes
  +    // -----------------------------------------------------------------------
  +	unsigned short scope = GeneralAttributeCheck::LocalContext;
  +    fAttributeCheck->checkAttributes(elem, scope, this);
  +
       // ------------------------------------------------------------------
       // First, handle any ANNOTATION declaration
       // ------------------------------------------------------------------
  @@ -2589,7 +2754,7 @@
           attDefType = XMLAttDef::ProcessContents_Lax;
       }
       else {
  -        reportSchemaError(0, 0, processContents); //"Invalid 'processContents' value: '{0}'
  +//        reportSchemaError(0, 0, processContents); //"Invalid 'processContents' value: '{0}'
       }
   
       // ------------------------------------------------------------------
  
  
  
  1.5       +5 -1      xml-xerces/c/src/validators/schema/TraverseSchema.hpp
  
  Index: TraverseSchema.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/schema/TraverseSchema.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TraverseSchema.hpp	2001/05/11 21:51:20	1.4
  +++ TraverseSchema.hpp	2001/05/15 21:59:42	1.5
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: TraverseSchema.hpp,v 1.4 2001/05/11 21:51:20 knoaman Exp $
  + * $Id: TraverseSchema.hpp,v 1.5 2001/05/15 21:59:42 knoaman Exp $
    */
   
   #if !defined(TRAVERSESCHEMA_HPP)
  @@ -96,6 +96,7 @@
   class SchemaInfo;
   class InputSource;
   class ErrorHandler;
  +class GeneralAttributeCheck;
   
   
   class VALIDATORS_EXPORT TraverseSchema
  @@ -494,7 +495,10 @@
       SchemaInfo*                      fCurrentSchemaInfo;
       ValueVectorOf<unsigned int>*     fImportLocations;
       ValueVectorOf<unsigned int>*     fIncludeLocations;
  +    GeneralAttributeCheck*           fAttributeCheck;
       static XMLStringPool             fStringPool;
  +
  +    friend class GeneralAttributeCheck;
   };
   
   
  
  
  
  1.1                  xml-xerces/c/src/validators/schema/GeneralAttributeCheck.cpp
  
  Index: GeneralAttributeCheck.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: GeneralAttributeCheck.cpp,v $
   * Revision 1.1  2001/05/15 21:59:31  knoaman
   * TraverseSchema: add attribute checking + some fixes + more error messages.
   * More attribute cheking to come.
   *
   */
  
  // ---------------------------------------------------------------------------
  //  Includes
  // ---------------------------------------------------------------------------
  #include <validators/schema/GeneralAttributeCheck.hpp>
  #include <validators/schema/SchemaSymbols.hpp>
  #include <util/XMLString.hpp>
  #include <util/XMLUniDefs.hpp>
  #include <util/Janitor.hpp>
  #include <dom/DOM_NamedNodeMap.hpp>
  #include <framework/XMLErrorCodes.hpp>
  #include <validators/schema/TraverseSchema.hpp>
  #include <util/PlatformUtils.hpp>
  #include <util/XMLDeleterFor.hpp>
  
  // ---------------------------------------------------------------------------
  //  Local const data
  // ---------------------------------------------------------------------------
  const XMLCh fgValueOne[] =
  {
      chDigit_1, chNull
  };
  
  
  // ---------------------------------------------------------------------------
  //  Static member data initialization
  // ---------------------------------------------------------------------------
  GeneralAttributeCheck* GeneralAttributeCheck::fInstance = 0;
  const unsigned short   GeneralAttributeCheck::GlobalContext = 0;
  const unsigned short   GeneralAttributeCheck::LocalContext = 1;
  
  
  // ---------------------------------------------------------------------------
  //  AttributeInfo: Constructors and Destructor
  // ---------------------------------------------------------------------------
  AttributeInfo::AttributeInfo(const XMLCh* const name,
                               const short defaultOption,
                               const XMLCh* const defaultValue,
                               const short dvIndex)
      : fDefaultOption(defaultOption)
      , fValidatorIndex(dvIndex)
      , fName(XMLString::replicate(name))
      , fDefaultValue(0)
  {
      try {
          if (defaultValue) {
              fDefaultValue = XMLString::replicate(defaultValue);
          }    
      }
      catch(...) {
          cleanUp();
      }
  }
  
  
  AttributeInfo::~AttributeInfo()
  {
      cleanUp();
  }
  
  
  
  // ---------------------------------------------------------------------------
  //  GeneralAttributeCheck: Constructors and Destructor
  // ---------------------------------------------------------------------------
  GeneralAttributeCheck::GeneralAttributeCheck()
      : fAttributes(0)
      , fElementMap(0)
  {
      try {
          mapElements();
      }
      catch(...) {
  
          cleanUp();
          throw;
      }
  }
  
  GeneralAttributeCheck::~GeneralAttributeCheck()
  {
      cleanUp();
  }
  
  
  // ---------------------------------------------------------------------------
  //  GeneralAttributeCheck: Setup methods
  // ---------------------------------------------------------------------------
  void GeneralAttributeCheck::setUpAttributes() {
  
      fAttributes = new AttributeInfo*[Att_Count];
  
      fAttributes[Att_Abstract_D] = 
          new AttributeInfo(SchemaSymbols::fgATT_ABSTRACT, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_FALSE, 0);
  
      fAttributes[Att_Attribute_FD_D] =
  		new AttributeInfo(SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_UNQUALIFIED, DT_Form);
  
      fAttributes[Att_Base_R] = 
  		new AttributeInfo(SchemaSymbols::fgATT_BASE, Att_Required,
                            0, 0);
  
      fAttributes[Att_Base_N] = 
  		new AttributeInfo(SchemaSymbols::fgATT_BASE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Block_N] =
  	    new AttributeInfo(SchemaSymbols::fgATT_BLOCK, Att_Optional_NoDefault,
                            0, DT_Block);
  
      fAttributes[Att_Block1_N] =
          new AttributeInfo(SchemaSymbols::fgATT_BLOCK, Att_Optional_NoDefault,
                            0, DT_Block1);
  
      fAttributes[Att_Block_D_D] =
          new AttributeInfo(SchemaSymbols::fgATT_BLOCKDEFAULT, Att_Optional_Default,
                            XMLUni::fgZeroLenString, DT_Block);
  
      fAttributes[Att_Default_N] =
          new AttributeInfo(SchemaSymbols::fgATT_DEFAULT, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Element_FD_D] =
          new AttributeInfo(SchemaSymbols::fgATT_ELEMENTFORMDEFAULT, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_UNQUALIFIED, 0);
  
      fAttributes[Att_Final_N] =
          new AttributeInfo(SchemaSymbols::fgATT_FINAL, Att_Optional_NoDefault,
                            0, DT_Final);
  
  	fAttributes[Att_Final1_N] =
          new AttributeInfo(SchemaSymbols::fgATT_FINAL, Att_Optional_NoDefault,
                            0, DT_Final1);
          
      fAttributes[Att_Final_D_D] =
          new AttributeInfo(SchemaSymbols::fgATT_FINALDEFAULT, Att_Optional_Default,
                            XMLUni::fgZeroLenString, DT_Final);
  
      fAttributes[Att_Fixed_N] =
          new AttributeInfo(SchemaSymbols::fgATT_FIXED, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Fixed_D] =
          new AttributeInfo(SchemaSymbols::fgATT_FIXED, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_FALSE, 0);
  
      fAttributes[Att_Form_N] =
          new AttributeInfo(SchemaSymbols::fgATT_FORM, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_ID_N] =
          new AttributeInfo(SchemaSymbols::fgATT_ID, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_ItemType_N] =
          new AttributeInfo(SchemaSymbols::fgATT_ITEMTYPE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_MaxOccurs_D] =
          new AttributeInfo(SchemaSymbols::fgATT_MAXOCCURS, Att_Optional_Default,
                            fgValueOne, 0);
  
      fAttributes[Att_MaxOccurs1_D] =
          new AttributeInfo(SchemaSymbols::fgATT_MAXOCCURS, Att_Optional_Default,
                            fgValueOne, 0);
  
      fAttributes[Att_Member_T_N] =
          new AttributeInfo(SchemaSymbols::fgATT_MEMBERTYPES, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_MinOccurs_D] =
          new AttributeInfo(SchemaSymbols::fgATT_MINOCCURS, Att_Optional_Default,
                            fgValueOne, 0);
  
      fAttributes[Att_MinOccurs1_D] =
          new AttributeInfo(SchemaSymbols::fgATT_MINOCCURS, Att_Optional_Default,
                            fgValueOne, 0);
  
      fAttributes[Att_Mixed_D] =
          new AttributeInfo(SchemaSymbols::fgATT_MIXED, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_FALSE, 0);
  
      fAttributes[Att_Mixed_N] =
          new AttributeInfo(SchemaSymbols::fgATT_MIXED, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Name_R] =
          new AttributeInfo(SchemaSymbols::fgATT_NAME, Att_Required,
                            0, 0);
  
      fAttributes[Att_Namespace_D] =
          new AttributeInfo(SchemaSymbols::fgATT_NAMESPACE, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_TWOPOUNDANY, 0);
  
      fAttributes[Att_Namespace_N] =
          new AttributeInfo(SchemaSymbols::fgATT_NAMESPACE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Nillable_D] =
          new AttributeInfo(SchemaSymbols::fgATT_NILLABLE, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_FALSE, 0);
  
      fAttributes[Att_Process_C_D] =
          new AttributeInfo(SchemaSymbols::fgATT_PROCESSCONTENTS, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_STRICT, 0);
  
      fAttributes[Att_Public_R] =
          new AttributeInfo(SchemaSymbols::fgATT_PUBLIC, Att_Required,
                            0, 0);
  
      fAttributes[Att_Ref_R] =
          new AttributeInfo(SchemaSymbols::fgATT_REF, Att_Required,
                            0, 0);
  
      fAttributes[Att_Refer_R] =
          new AttributeInfo(SchemaSymbols::fgATT_REFER, Att_Required,
                            0, 0);
  
      fAttributes[Att_Schema_L_R] =
          new AttributeInfo(SchemaSymbols::fgATT_SCHEMALOCATION, Att_Required,
                            0, 0);
  
      fAttributes[Att_Schema_L_N] =
          new AttributeInfo(SchemaSymbols::fgATT_SCHEMALOCATION, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Source_N] =
          new AttributeInfo(SchemaSymbols::fgATT_SOURCE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Substitution_G_N] =
          new AttributeInfo(SchemaSymbols::fgATT_SUBSTITUTIONGROUP, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_System_N] =
          new AttributeInfo(SchemaSymbols::fgATT_SYSTEM, Att_Optional_NoDefault,
                            0, 0);
          
      fAttributes[Att_Target_N_N] =
          new AttributeInfo(SchemaSymbols::fgATT_TARGETNAMESPACE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Type_N] =
          new AttributeInfo(SchemaSymbols::fgATT_TYPE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Use_D] =
          new AttributeInfo(SchemaSymbols::fgATT_USE, Att_Optional_Default,
                            SchemaSymbols::fgATTVAL_OPTIONAL, 0);
  
      fAttributes[Att_Value_NNI_N] =
          new AttributeInfo(SchemaSymbols::fgATT_VALUE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Value_STR_N] =
          new AttributeInfo(SchemaSymbols::fgATT_VALUE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Value_WS_N] =
          new AttributeInfo(SchemaSymbols::fgATT_VALUE, Att_Optional_NoDefault,
                            0, 0);
  
      fAttributes[Att_Version_N] =
          new AttributeInfo(SchemaSymbols::fgATT_VERSION, Att_Optional_NoDefault,
                            0, 0);
  }
  
  void GeneralAttributeCheck::mapElements() {
  
      if (fElementMap) {
          return;
      }
  
      setUpAttributes();
  
      RefVectorOf<AttributeInfo>* attList = 0;
      int prefixContext = globalPrefix;
  	
      fElementMap = new RefHash2KeysTableOf<RefVectorOfAttributeInfo>(25);
  
      // element "attribute" - global
  	attList = new RefVectorOf<AttributeInfo>(5, false);
      attList->addElement(fAttributes[Att_Default_N]);
      attList->addElement(fAttributes[Att_Fixed_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Name_R]);
      attList->addElement(fAttributes[Att_Type_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ATTRIBUTE, prefixContext, attList);
  
      // element "element" - global
      attList = new RefVectorOf<AttributeInfo>(10, false);
      attList->addElement(fAttributes[Att_Abstract_D]);
      attList->addElement(fAttributes[Att_Block_N]);
      attList->addElement(fAttributes[Att_Default_N]);
      attList->addElement(fAttributes[Att_Final_N]);
      attList->addElement(fAttributes[Att_Fixed_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Name_R]);
      attList->addElement(fAttributes[Att_Nillable_D]);
      attList->addElement(fAttributes[Att_Substitution_G_N]);
      attList->addElement(fAttributes[Att_Type_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ELEMENT, prefixContext, attList);
  
      // element "complexType" - global
      attList = new RefVectorOf<AttributeInfo>(6, false);
      attList->addElement(fAttributes[Att_Abstract_D]);
      attList->addElement(fAttributes[Att_Block1_N]);
      attList->addElement(fAttributes[Att_Final_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Mixed_D]);
      attList->addElement(fAttributes[Att_Name_R]);
      fElementMap->put((void*) SchemaSymbols::fgELT_COMPLEXTYPE, prefixContext, attList);
  
      // element "simpleType" - global
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_Final1_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Name_R]);
      fElementMap->put((void*) SchemaSymbols::fgELT_SIMPLETYPE, prefixContext, attList);
  
      // element "schema" - global
      attList = new RefVectorOf<AttributeInfo>(7, false);
      attList->addElement(fAttributes[Att_Attribute_FD_D]);
      attList->addElement(fAttributes[Att_Block_D_D]);
      attList->addElement(fAttributes[Att_Element_FD_D]);
      attList->addElement(fAttributes[Att_Final_D_D]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Target_N_N]);
      attList->addElement(fAttributes[Att_Version_N]);
      // xml:lang = language ???
      fElementMap->put((void*) SchemaSymbols::fgELT_SCHEMA, prefixContext, attList);
  
      // element "include" - global
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Schema_L_R]);
      fElementMap->put((void*) SchemaSymbols::fgELT_INCLUDE, prefixContext, attList);
  
      // element "import" - global
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Namespace_N]);
      attList->addElement(fAttributes[Att_Schema_L_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_IMPORT, prefixContext, attList);
  
      // for element "redefine" - global (same as include)
  
  	// element "attributeGroup" - global
  
      // element "group" - global
  
      // element "annotation" - global
  
  
      // element "attribute" - local ref
      prefixContext = localRefPrefix;
      attList = new RefVectorOf<AttributeInfo>(5, false);
      attList->addElement(fAttributes[Att_Default_N]);
      attList->addElement(fAttributes[Att_Fixed_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Ref_R]);
      attList->addElement(fAttributes[Att_Use_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ATTRIBUTE, prefixContext, attList);
  
      // element "element" - local ref
      attList = new RefVectorOf<AttributeInfo>(4, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_MaxOccurs_D]);
      attList->addElement(fAttributes[Att_MinOccurs_D]);
      attList->addElement(fAttributes[Att_Ref_R]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ELEMENT, prefixContext, attList);
  
      // element "attributeGroup" - local ref
  
  
      // element "attribute" - local name
      prefixContext = localNamePrefix;
  	attList = new RefVectorOf<AttributeInfo>(7, false);
      attList->addElement(fAttributes[Att_Default_N]);
      attList->addElement(fAttributes[Att_Fixed_N]);
      attList->addElement(fAttributes[Att_Form_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Name_R]);
      attList->addElement(fAttributes[Att_Type_N]);
      attList->addElement(fAttributes[Att_Use_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ATTRIBUTE, prefixContext, attList);
  
      // for element "element" - local name
      attList = new RefVectorOf<AttributeInfo>(10, false);
      attList->addElement(fAttributes[Att_Block_N]);
      attList->addElement(fAttributes[Att_Default_N]);
      attList->addElement(fAttributes[Att_Fixed_N]);
      attList->addElement(fAttributes[Att_Form_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_MaxOccurs_D]);
      attList->addElement(fAttributes[Att_MinOccurs_D]);
      attList->addElement(fAttributes[Att_Name_R]);
      attList->addElement(fAttributes[Att_Nillable_D]);
      attList->addElement(fAttributes[Att_Type_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ELEMENT, prefixContext, attList);
  
      // element "complexType" - local name
      prefixContext = localNamePrefix;
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Mixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_COMPLEXTYPE, prefixContext, attList);
  
      // element "simpleContent" - local name
      attList = new RefVectorOf<AttributeInfo>(1, false);
      attList->addElement(fAttributes[Att_ID_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_SIMPLECONTENT, prefixContext, attList);
  
      // element "restriction" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_Base_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_RESTRICTION, prefixContext, attList);
  
      // element "extension" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_Base_R]);
      attList->addElement(fAttributes[Att_ID_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_EXTENSION, prefixContext, attList);
  
      // element "anyAttribute" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Namespace_D]);
      attList->addElement(fAttributes[Att_Process_C_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ANYATTRIBUTE, prefixContext, attList);
  
      // element "complexContent" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Mixed_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_COMPLEXCONTENT, prefixContext, attList);
  
      // element "choice" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_MaxOccurs_D]);
      attList->addElement(fAttributes[Att_MinOccurs_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_CHOICE, prefixContext, attList);
  
      // element "sequence" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_MaxOccurs_D]);
      attList->addElement(fAttributes[Att_MinOccurs_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_SEQUENCE, prefixContext, attList);
  
      // for element "any" - local name
      attList = new RefVectorOf<AttributeInfo>(5, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_MaxOccurs_D]);
      attList->addElement(fAttributes[Att_MinOccurs_D]);
      attList->addElement(fAttributes[Att_Namespace_D]);
      attList->addElement(fAttributes[Att_Process_C_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ANY, prefixContext, attList);
  
      // element "simpleType" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_Final1_N]);
      attList->addElement(fAttributes[Att_ID_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_SIMPLETYPE, prefixContext, attList);
  
      // element "list" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_ItemType_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_LIST, prefixContext, attList);
  
      // element "union" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Member_T_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_UNION, prefixContext, attList);
  
      // element "length" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_NNI_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_LENGTH, prefixContext, attList);
  
      // element "minLength" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_NNI_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_MINLENGTH, prefixContext, attList);
  
      // element "maxLength" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_NNI_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_MAXLENGTH, prefixContext, attList);
  
      // element "totalDigits" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_NNI_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_TOTALDIGITS, prefixContext, attList);
  
      // element "fractionDigits" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_NNI_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_FRACTIONDIGITS, prefixContext, attList);
  
      // element "pattern" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_STR_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_PATTERN, prefixContext, attList);
  
      // element "enumeration" - local name
      attList = new RefVectorOf<AttributeInfo>(2, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_STR_N]);
      fElementMap->put((void*) SchemaSymbols::fgELT_ENUMERATION, prefixContext, attList);
  
      // element "whiteSpace" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_WS_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_WHITESPACE, prefixContext, attList);
  
      // element "maxInclusive" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_STR_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, prefixContext, attList);
  
      // element "maxExclusive" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_STR_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_MAXEXCLUSIVE, prefixContext, attList);
  
      // for element "minInclusive" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_STR_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, prefixContext, attList);
  
      // for element "minExclusive" - local name
      attList = new RefVectorOf<AttributeInfo>(3, false);
      attList->addElement(fAttributes[Att_ID_N]);
      attList->addElement(fAttributes[Att_Value_STR_N]);
      attList->addElement(fAttributes[Att_Fixed_D]);
      fElementMap->put((void*) SchemaSymbols::fgELT_MINEXCLUSIVE, prefixContext, attList);
  
      // element "all" - local name
  
      // element "unique" - local name
  
      // element "keyref" - local name
  
      // element "selector" - local name
  
      // element "field" - local name
  
      // element "notation" - local name
  
      // element "appinfo" - local name
  
      // element "documentation" - local name
  
  }
  
  // ---------------------------------------------------------------------------
  //  GeneralAttributeCheck: CleanUp methods
  // ---------------------------------------------------------------------------
  void GeneralAttributeCheck::cleanUp() {
  
  	for (unsigned int index = 0; index < Att_Count; index++) {
              delete fAttributes[index];
      }
  
      delete [] fAttributes;
      delete fElementMap;
  }
  
  // ---------------------------------------------------------------------------
  //  GeneralAttributeCheck: Instance methods
  // ---------------------------------------------------------------------------
  GeneralAttributeCheck* GeneralAttributeCheck::instance() {
  
  	if (!fInstance) {
  
  		fInstance = new GeneralAttributeCheck();
          XMLPlatformUtils::registerLazyData
          (
              new XMLDeleterFor<GeneralAttributeCheck>(fInstance)
          );
  	}
  
      return fInstance;
  }
  
  // ---------------------------------------------------------------------------
  //  GeneralAttributeCheck: Validation methods
  // ---------------------------------------------------------------------------
  void
  GeneralAttributeCheck::checkAttributes(const DOM_Element& elem,
                                         const unsigned short elemContext,
                                         TraverseSchema* const schema) {
  
      if (elem == 0) {
          return;
      }
  
  	DOMString                   name = elem.getLocalName();
      int                         prefixContext = globalPrefix;
      unsigned int                nameLen = name.length();
      XMLCh*                      elemName = 0;
      RefVectorOf<AttributeInfo>* elemAttrs = 0;
  
  	if (nameLen) {
          elemName = new XMLCh[nameLen + 1];
          XMLString::copyNString(elemName, name.rawBuffer(), nameLen);
          elemName[nameLen] = chNull;
      }
  
  	ArrayJanitor<XMLCh> janName(elemName);
  
      if (elemContext == LocalContext) {
          if (elem.getAttribute(SchemaSymbols::fgATT_REF) == 0) {
              prefixContext = localNamePrefix;
          }
          else {
              prefixContext = localRefPrefix;
          }
      }
  
      elemAttrs = fElementMap->get(elemName, prefixContext);
  
  	if (!elemAttrs) {
          // We should report an error
          return;
      }
  
  	unsigned int           size = elemAttrs->size();
      RefHashTableOf<XMLCh>  attNameList(5);
  
      for (unsigned int i=0; i< size; i++) {
  
          AttributeInfo* attInfo = elemAttrs->elementAt(i);
  
  		if (attInfo) {
  
              XMLCh* attName = attInfo->getName();
              DOMString attValue = elem.getAttribute(attName);
  
              attNameList.put((void*) attName, 0);
  
              if (attValue.length() > 0) {
                  // validate value
  			}
              else {
                  if (attInfo->getDefaultOption() == Att_Required) {
                      schema->reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttributeRequired, attName, elemName); //"Attribute '{0}' must appear in '{1}'"
                  }
              }
          }
      }
  
      // ------------------------------------------------------------------
      // Check for disallowed attributes
      // ------------------------------------------------------------------
  	DOM_NamedNodeMap eltAttrs = elem.getAttributes();
      int attrCount = eltAttrs.getLength();
  
      for (int j = 0; j < attrCount; j++) {
  
          DOM_Node  attribute = eltAttrs.item(j);
  
  		if (attribute.isNull()) {
              break;
          }
  
          // Bypass attributes that start with xml 
          DOMString attName = attribute.getNodeName();
  		fBuffer.set(attName.rawBuffer(), attName.length());
  		XMLCh* tmpName = fBuffer.getRawBuffer();
  
          if ((*tmpName == chLatin_X || *tmpName == chLatin_x)
             && (*(tmpName+1) == chLatin_M || *(tmpName+1) == chLatin_m)
             && (*(tmpName+2) == chLatin_L || *(tmpName+2) == chLatin_l)) {
              continue;
  		}
  
  	    attName = attribute.getLocalName();
  		fBuffer.set(attName.rawBuffer(), attName.length());
  
          if (!attNameList.containsKey(fBuffer.getRawBuffer())) {
              schema->reportSchemaError(XMLUni::fgXMLErrDomain, 
                  XMLErrs::AttributeDisallowed, fBuffer.getRawBuffer(), elemName);//"Attribute '{0}' cannot appear in '{1}'"
          }
      }
  }
  
  /**
    * End of file GeneralAttributeCheck.cpp
    */
  
  
  
  
  
  1.1                  xml-xerces/c/src/validators/schema/GeneralAttributeCheck.hpp
  
  Index: GeneralAttributeCheck.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 2001, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: GeneralAttributeCheck.hpp,v 1.1 2001/05/15 21:59:32 knoaman Exp $
   */
  
  #if !defined(GENERALATTRIBUTECHECK_HPP)
  #define GENERALATTRIBUTECHECK_HPP
  
  
  /** 
    * A general purpose class to check for valid values of attributes, as well
    * as check for proper association with corresponding schema elements.
    */
  
  // ---------------------------------------------------------------------------
  //  Includes
  // ---------------------------------------------------------------------------
  #include <util/RefVectorOf.hpp>
  #include <util/RefHashTableOf.hpp>
  #include <util/RefHash2KeysTableOf.hpp>
  #include <framework/XMLBuffer.hpp>
  #include <dom/DOM_Element.hpp>
  
  // ---------------------------------------------------------------------------
  //  Forward declaration
  // ---------------------------------------------------------------------------
  class TraverseSchema;
  
  class AttributeInfo {
  public:
      // -----------------------------------------------------------------------
      //  Constructor/Destructor
      // -----------------------------------------------------------------------
      AttributeInfo(const XMLCh* const name, const short defaultOption,
                    const XMLCh* const defaultValue, const short dvIndex);
      ~AttributeInfo();
  
  	// -----------------------------------------------------------------------
      //  Getter methods
      // -----------------------------------------------------------------------
      short  getDefaultOption() const;
      short  getValidatorIndex() const;
      XMLCh* getName() const;
      XMLCh* getDefaultValue() const;
  
  
  private:
  	// -----------------------------------------------------------------------
      //  CleanUp methods
      // -----------------------------------------------------------------------
      void cleanUp();
  
      // -----------------------------------------------------------------------
      //  Private data members
      // -----------------------------------------------------------------------
      short  fDefaultOption;
      short  fValidatorIndex;
      XMLCh* fName;
      XMLCh* fDefaultValue;
  };
  
  
  // ---------------------------------------------------------------------------
  //  local type declaration
  // ---------------------------------------------------------------------------
  typedef RefVectorOf<AttributeInfo> RefVectorOfAttributeInfo;
  
  
  class GeneralAttributeCheck
  {
  public:
      // -----------------------------------------------------------------------
      //  Constructor/Destructor
      // -----------------------------------------------------------------------
      ~GeneralAttributeCheck();
  
      // -----------------------------------------------------------------------
      //  Instance methods
      // -----------------------------------------------------------------------
  	static GeneralAttributeCheck* instance();
  
  	// -----------------------------------------------------------------------
      //  Public Constants
      // -----------------------------------------------------------------------
      static const unsigned short GlobalContext;
      static const unsigned short LocalContext;
  
  	// -----------------------------------------------------------------------
      //  Validation methods
      // -----------------------------------------------------------------------
  	void checkAttributes(const DOM_Element& elem,
                           const unsigned short elemContext,
  						 TraverseSchema* const scanner);
  
  private:
      // -----------------------------------------------------------------------
      //  Constructor and destructors
      // -----------------------------------------------------------------------
      GeneralAttributeCheck();
  
  	// -----------------------------------------------------------------------
      //  Unimplemented constructors and operators
      // -----------------------------------------------------------------------
      GeneralAttributeCheck(const GeneralAttributeCheck&);
      void operator=(const GeneralAttributeCheck&);
  
  	// -----------------------------------------------------------------------
      //  Setup methods
      // -----------------------------------------------------------------------
      void setUpAttributes();
      void mapElements();
  
  	// -----------------------------------------------------------------------
      //  CleanUp methods
      // -----------------------------------------------------------------------
      void cleanUp();
  
  	// -----------------------------------------------------------------------
      //  Private Constants
      // -----------------------------------------------------------------------
      // attributes 
      enum {
          Att_Abstract_D,                // starts with 0
          Att_Attribute_FD_D,
          Att_Base_R,
          Att_Base_N,
          Att_Block_N,
          Att_Block1_N,
          Att_Block_D_D,
          Att_Default_N,
          Att_Element_FD_D,
          Att_Final_N,
          Att_Final1_N,
          Att_Final_D_D,
          Att_Fixed_N,
          Att_Fixed_D,
          Att_Form_N,
          Att_ID_N,
          Att_ItemType_N,
          Att_MaxOccurs_D,
          Att_MaxOccurs1_D,
          Att_Member_T_N,
          Att_MinOccurs_D,
          Att_MinOccurs1_D,
          Att_Mixed_D,
          Att_Mixed_N,
          Att_Name_R,
          Att_Namespace_D,
          Att_Namespace_N,
          Att_Nillable_D,
          Att_Process_C_D,
          Att_Public_R,
          Att_Ref_R,
          Att_Refer_R,
          Att_Schema_L_R,
          Att_Schema_L_N,
          Att_Source_N,
          Att_Substitution_G_N,
          Att_System_N,
          Att_Target_N_N,
          Att_Type_N,
          Att_Use_D,
          Att_Value_NNI_N,
          Att_Value_STR_N,
          Att_Value_WS_N,
          Att_Version_N,
  
  		// TO DO - Add XPath
  
          Att_Count
      };
  
  	// direct value compare
  	enum {
          DT_Block = -1,
          DT_Block1 = -2,
          DT_Final = -3,
          DT_Final1 = -4,
          DT_Form = -5,
          DT_MaxOccurs = -6,
          DT_MaxOccurs1 = -7,
          DT_MemberTypes = -8,
          DT_MinOccurs1 = -9,
          DT_Namespace = -10,
          DT_ProcessContents = -11,
          DT_Public = -12,
          DT_Use = -13,
          DT_WhiteSpace = -14
      };
  
      // element context prefixes
      enum {
          globalPrefix,
          localNamePrefix,
          localRefPrefix
      };
  
      // optional vs. required attribute 
      enum { 
          Att_Required,
          Att_Optional_Default,
          Att_Optional_NoDefault
      };
  
      // -----------------------------------------------------------------------
      //  Private data members
      // -----------------------------------------------------------------------
      AttributeInfo**                                fAttributes;
      RefHash2KeysTableOf<RefVectorOfAttributeInfo>* fElementMap;
      XMLBuffer                                      fBuffer;
      static GeneralAttributeCheck* fInstance;
  };
  
  
  // ---------------------------------------------------------------------------
  //  AttributeInfo: Getter methods
  // ---------------------------------------------------------------------------
  inline short AttributeInfo::getDefaultOption() const {
  
      return fDefaultOption;
  }
  
  inline short AttributeInfo::getValidatorIndex() const {
  
      return fValidatorIndex;
  }
  
  inline XMLCh* AttributeInfo::getName() const {
  
      return fName;
  }
  
  inline XMLCh* AttributeInfo::getDefaultValue() const {
  
      return fDefaultValue;
  }
  
  // ---------------------------------------------------------------------------
  //  AttributeInfo: CleanUp methods
  // ---------------------------------------------------------------------------
  inline void AttributeInfo::cleanUp() {
  
      delete [] fName;
      delete [] fDefaultValue;
  }
  
  #endif
  
  /**
    * End of file GeneralAttributeCheck.hpp
    */
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org