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 <annotation> 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 <
-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 <
+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